簡體   English   中英

如何將Windows消息從C#發送到C ++(MFC)?

[英]How to send a windows message from C# to C++ (MFC)?

我正在嘗試將Windows消息從C#(緊湊型框架)中的應用程序發送到C ++(MFC)中的另一個應用程序,它們都在PDA中。

在接收器應用程序(MFC)中,我意識到我收到了該消息,但無法讀取字符串消息,它顯示了一個小方塊。

這是發件人(C#)的代碼

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

這是接收方的代碼(C ++)

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

在此先多謝!

您的每個應用程序在計算機上都有自己的內存空間。 通過發送變量“ stringMessage”,實際上是在發送該字符串的內存地址,而其他應用程序則不可用。

我不知道它是否適用於pda開發,但是本文可能會有用。

如果資源有限,則始終可以一一發送字符串的字符。 由於c#是Unicode,因此請在c ++ sice上使用wchar_t來處理lParam!

編輯:如Rup所述,如果您需要發送大字符串或需要非常頻繁地發送消息,則應使用WM_COPYDATA。

C#字符串編碼為Unicode,而默認的CString行為是LPCTSTR 確保您的MFC應用程序使用MultiByte字符集(使用_UNICODE指令或代表編譯器的語句)進行編譯。

有關更多信息,請參考MSDN

更好的解決方案是創建一個C ++ / CLI dll並將消息發送到該dll,並且該dll將與MFC dll通信。 好處是,在C ++ / CLI dll中,您可以將System.String轉換為CString並將此CString傳遞給MFC dll。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM