1

我正在尝试将 Windowsmessage 从 C#(紧凑框架)中的应用程序发送到 C++(MFC)中的另一个应用程序,它们都在 PDA 中。

在接收器应用程序 (MFC) 中,我意识到我收到了消息,但我无法读取字符串消息,它显示了一个小方块。

这是发件人的代码(C#)

OpenNETCF.Win32.Win32Window.SendMessage(hwndVal, typeMsgVal, intValue, stringMessage);

这是接收器的代码(C++)

CString myStr = (CString) lParam;
AfxMessageBox(myStr);

提前非常感谢!

4

3 回答 3

1

您的每个应用程序在计算机上都有自己的内存空间。通过发送变量“stringMessage”,您实际上是在发送该字符串的内存地址,而其他应用程序无法使用该地址。

我不知道它是否适用于 pda 开发,但这篇文章可能会有用。

如果您的资源有限,您总是可以一一发送字符串的字符。由于 c# 是 Unicode,所以在 c++ sice 上进行,你使用 wchar_t 来处理 lParam!

编辑:正如 Rup 提到的,如果您需要发送大字符串或需要非常频繁地发送消息,则应该使用 WM_COPYDATA。

于 2013-04-02T12:34:07.557 回答
0

C# 字符串被编码为 Unicode,而默认CString行为是LPCTSTR. 确保您的 MFC 应用程序使用 MultiByte 字符集进行编译(使用_UNICODE指令或代表编译器语句)。

有关详细信息,请参阅MSDN

于 2012-12-20T09:17:52.410 回答
0

更好的解决方案是创建一个 C++/CLI dll 并将消息发送到这个 dll,这个 dll 将与 MFC dll 通信。优点是,在 C++/CLI dll 中,您可以将 System.String 转换为 CString 并将此 CString 传递给 MFC dll。

于 2012-12-20T10:40:42.530 回答