我有两个Windows应用程序。首先是一个Windows窗体应用程序。第二个是控制台应用程序。我必须从控制台应用程序向窗体应用程序发送消息。我注册了广播消息,使用:: PostMessage函数能够向表单应用程序发送数字消息。但我无法发送字符串消息。请在下面找到我的代码: -如何使用PostMessage与WM_COPYDATA发送字符串消息
// Sending Message (Console Application)
#define RT_UI_MSG (WM_USER+1)
UINT msg_id = RegisterWindowMessage("Test-UI");
LPTSTR lpszString = "Hello";
COPYDATASTRUCT cds;
cds.dwData = 1; // can be anything
cds.cbData = sizeof(TCHAR) * (_tcslen(lpszString) + 1);
cds.lpData = &lpszString;
::PostMessage(HWND_BROADCAST, msg_id, WM_COPYDATA, (LPARAM)(LPVOID)&cds);
//接收邮件(窗体应用程序) BEGIN_MESSAGE_MAP(CRTUIDlg,CDialogEx) ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDOK,& CRTUIDlg :: OnBnClickedOk) ON_REGISTERED_MESSAGE (温度,OnRTUIMsg) ON_BN_CLICKED(IDC_BUTTON1,& CRTUIDlg :: OnBnClickedButton1) END_MESSAGE_MAP()
UINT temp = RegisterWindowMessage(L"Test-UI");
LRESULT CRTUIDlg::OnRTUIMsg(WPARAM wParam, LPARAM lParam)
{
COPYDATASTRUCT* pcds = (COPYDATASTRUCT*)lParam;
if (pcds->dwData == 1)
{
LPCTSTR lpszString = (LPCTSTR)(pcds->lpData);
// do something with lpszString...
}
return 0;
}
请帮助我明白我在做什么错了,得到这个工作
我在窗体应用程序中使用此代码接收消息,但收到的数据为空,整个指针pcds为空。 – Sam