读书人

在另一个线程中向模态对话框发送自定义

发布时间: 2012-05-30 20:20:04 作者: rapoo

在另一个线程中向模态对话框发送自定义消息,为什么窗口接收不到?求帮助!实在是不知道是为什么了
我建一个基于模态对话框的win32程序,用windows sdk,没用MFC。
用的这个框架

C/C++ code
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pCmdLine, int iCmdShow){return DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc);}BOOL CALLBACK DialogProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){switch (uMessage){case WM_CLOSE:EndDialog(hwnd, 0);return FALSE;default:return FALSE;}}


我自定义了一个消息
C/C++ code
#define  WM_MYMESSAGE WM_USER+1


在窗口初始化时开了另一个线程,并把窗口句柄传给了线程函数,
在这个线程中,满足一定条件时向窗口发送自定义消息
C/C++ code
SendMessage(p->hwnd,WM_MYMESSAGE,0,0);//这句真的执行了。我跟踪了


在窗口过程中:
对应的自定义消息处理块却永远不会执行,这是为啥?
C/C++ code
case WM_MYMESSAGE://这里老不执行


是不是哪个地方错了?

[解决办法]
思路应该没有问题,看看SendMessage(p->hwnd,WM_MYMESSAGE,0,0);时的p->hwnd对不对?
另外你说的“把窗口句柄传给了线程函数”,p是个窗口对象的指针,窗口函数中的switch (uMessage)
也没有uMessage这个变量
[解决办法]
你跟踪一下p->hwnd

读书人网 >C++

热点推荐