在另一个线程中向模态对话框发送自定义消息,为什么窗口接收不到?求帮助!实在是不知道是为什么了,该如何解决
在另一个线程中向模态对话框发送自定义消息,为什么窗口接收不到?求帮助!实在是不知道是为什么了
我建一个基于模态对话框的win32程序,用windows sdk,没用MFC。
用的这个框架
我自定义了一个消息
在窗口初始化时开了另一个线程,并把窗口句柄传给了线程函数,
在这个线程中,满足一定条件时向窗口发送自定义消息
在窗口过程中:
对应的自定义消息处理块却永远不会执行,这是为啥?
是不是哪个地方错了?
------解决方案--------------------
思路应该没有问题,看看SendMessage(p->hwnd,WM_MYMESSAGE,0,0);时的p->hwnd对不对?
另外你说的“把窗口句柄传给了线程函数”,p是个窗口对象的指针,窗口函数中的switch (uMessage)
也没有uMessage这个变量
------解决方案--------------------
你跟踪一下p->hwnd
我建一个基于模态对话框的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