[求助]关于两个应用程序间的通讯
postmessage是向window's message queue 发送消息的吧?
我写了两个测试的对话框程序A和B,当中定义了一个自定义消息:
#define WM_MYMESSAGE (WM_USER + 100)
在A中当按下按键就会触发:PostMessageW(WM_MYMESSAGE,NULL,NULL);
之后再在B中定义个一个消息映射:
BEGIN_MESSAGE_MAP(CTestADlg, CDialog)
ON_MESSAGE(WM_MYMESSAGE,OnMyMessage)
END_MESSAGE_MAP()
LONG CTestBDlg::OnMyMessage(WPARAM w,LPARAM l)
{
MessageBoxW(L"Test!!!", NULL, MB_OK);
return S_OK;
}
为什么当在A中按下按键后B什么反应都没有…………是不是还缺少了些什么东西?
[解决办法]
PostMessageW(B的窗口句柄,WM_MYMESSAGE,NULL,NULL);
[解决办法]
没有传窗口的句柄....
[解决办法]
- C/C++ code
PostMessageW(WM_MYMESSAGE,NULL,NULL); 你这样是发到A窗口自己去了要发到B窗口,要用API,BOOL PostMessage( UINT message, WPARAM wParam = 0, LPARAM lParam = 0 ) throw();而不能用CWnd::的BOOL PostMessage( UINT message, WPARAM wParam = 0, LPARAM lParam = 0 );要这样hWnd = B窗口的HWND::PostMessageW(hWnd, WM_MYMESSAGE,NULL,NULL);