我在C ++中有struct
:
struct TEXTMSGSTR
{
HWND Sender;
wchar_t Text[255];
//wchar_t *Text;
};
并在C#中:
public struct TEXTMSGSTR
{
public IntPtr Sender;
public ? Text;
}
我作为COPYDATASTRUCT
消息的一部分从非托管代码发送到托管代码。由于C#没有struct
,C#端wchar_t
的正确结构是什么?我已经尝试了字符串等,但当然会出现错误!
任何人都可以给我一些关于如何整理这个以及我对这些东西的新想法的想法吗?:
TEXTMSGSTR tx = (TEXTMSGSTR)Marshal.PtrToStructure(cds.lpData, typeof(TEXTMSGSTR));
答案 0 :(得分:2)
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct TEXTMSGSTR
{
public IntPtr Sender;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 255)]
public string Text;
}
答案 1 :(得分:0)
尝试System.Runtime.InteropServices.UnmanagedType LPTStr
或ByValTStr
。
另请查看我对that question
的回答