Взаимодействие между C ++ и C # - PullRequest
1 голос
/ 20 мая 2009

У меня есть это struct в C ++:

struct TEXTMSGSTR
{
    HWND Sender;
    wchar_t Text[255];
    //wchar_t *Text;
};

и в C #:

public struct TEXTMSGSTR
{
    public IntPtr Sender;
    public ? Text;
}

, который я отправляю как часть COPYDATASTRUCT сообщения из неуправляемого в управляемый код. Какова будет правильная конструкция struct на стороне C #, так как C # не имеет wchar_t? Я пробовал строку и т.д., но, конечно, появляются ошибки!

Кто-нибудь может дать мне несколько идей о том, как это организовать, а также я новичок в этом?

TEXTMSGSTR tx = (TEXTMSGSTR)Marshal.PtrToStructure(cds.lpData, typeof(TEXTMSGSTR));

Ответы [ 2 ]

2 голосов
/ 20 мая 2009
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct TEXTMSGSTR
{
    public IntPtr Sender;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 255)]
    public string Text;
}
0 голосов
/ 20 мая 2009

Попробуйте System.Runtime.InteropServices.UnmanagedType LPTStr или ByValTStr.

Также посмотрите на мой ответ на этот вопрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...