Interoperabilidade entre C ++ e C #

votos
1

Eu tenho este structem C ++:

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

e em C #:

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

que estou enviando como parte de uma COPYDATASTRUCTmensagem de não gerenciado para código gerenciado. Qual seria a construção correta do structno lado do C # como C # não tem wchar_t? Eu tentei corda etc., mas de erros curso aparecer!

Alguém pode me dar algumas idéias sobre como empacotar isso, assim como eu sou novo a este material ?:

TEXTMSGSTR tx = (TEXTMSGSTR)Marshal.PtrToStructure(cds.lpData, typeof(TEXTMSGSTR));
Publicado 19/05/2009 em 22:06
fonte usuário
Em outras línguas...                            


2 respostas

votos
2
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct TEXTMSGSTR
{
    public IntPtr Sender;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 255)]
    public string Text;
}
Respondeu 19/05/2009 em 22:24
fonte usuário

votos
0

Tente System.Runtime.InteropServices.UnmanagedType LPTStr ou ByValTStr.

Também olhar para a minha resposta para essa pergunta

Respondeu 19/05/2009 em 22:22
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more