我正在尝试从C#(Compact Frame)中的应用程序发送一个windowsmessage到C ++(MFC)中的另一个应用程序,它们都在PDA中。
在接收器应用程序(MFC)中,我意识到我收到了消息但是我无法读取字符串消息,它显示了一个小方块。
这是发件人的代码(C#)
OpenNETCF.Win32.Win32Window.SendMessage(hwndVal, typeMsgVal, intValue, stringMessage);
这是接收者的代码(C ++)
CString myStr = (CString) lParam;
AfxMessageBox(myStr);
提前多多感谢!
答案 0 :(得分:1)
您的每个应用程序都有自己的计算机内存空间。通过发送变量“stringMessage”,您实际上正在发送此字符串的内存地址,该地址对其他应用程序不可用。
我不知道它是否适用于pda开发,但this article可能有用。
如果你的资源有限,你总是可以逐个发送字符串的字符。由于c#是Unicode,在c ++ sice上创建,你使用wchar_t来处理lParam!
编辑:正如Rup所提到的,如果你需要发送大字符串,你应该使用WM_COPYDATA 或者如果您需要经常发送消息。
答案 1 :(得分:0)
C#字符串编码为Unicode,而默认CString
行为为LPCTSTR
。确保使用MultiByte字符集(使用_UNICODE
指令或表示编译器语句)编译MFC应用程序。
有关更多信息,请参阅the MSDN。
答案 2 :(得分:0)
更好的解决方案是创建一个C ++ / CLI dll并将消息发送到此dll,此dll将与MFC dll通信。优点是,在C ++ / CLI dll中,您可以将System.String转换为CString并将此CString传递给MFC DLL。