Перевести код с c++ на c#

Рейтинг: -1Ответов: 1Опубликовано: 06.04.2015

Помогите перевести код с C++ на C#:

class __declspec(uuid("EFE19EA0-09E4-11D2-A601-008048DA00DE")) IExtWndsSupport: public IUnknown{
public:
    HRESULT __stdcall GetAppMainFrame(HWND *hwnd);
    HRESULT __stdcall GetAppMDIFrame(HWND *hwnd);
    HRESULT __stdcall CreateAddInWindow(const BSTR bstrProgID, const BSTR bstrWindowName,
        int dwStyles, int dwExStyles, RECT *rctl,
        int Flags, HWND *pHwnd, IDispatch *pDisp);
}

Ответы

▲ 4Принят

Где-то так:

[ComImport]
[Guid("EFE19EA0-09E4-11D2-A601-008048DA00DE")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IExtWndsSupport
{
    void GetAppMainFrame(
        [Out] out IntPtr hwnd);

    void GetAppMDIFrame(
        [Out] out IntPtr hwnd);

    void CreateAddInWindow(
        [In] string bstrProgID,
        [In] string bstrWindowName,
        [In] int dwStyles,
        [In] int dwExStyles,
        [In, Out] ref RECT *rctl,
        [In] int Flags,
        [In, Out] ref IntPtr pHwnd,
        [In, Out, MarshalAs(UnmanagedType.IDispatch)] ref object pDisp);
}

Так как по интерфейсу невозможно понять, какой аргумент на вход, а какой на выход, то сделал в общем виде. Поправьте In/Out/In,Out/ref/out в соответствии с реальным использованием, чтобы было удобнее.

Вообще, лучше б вы взяли TLD и воспользовались встроенными инструментами, а не ковырялись с этим вручную.