使用Win32 API,是否可以在一个线程中创建一个窗口或对话框,然后从另一个线程为它收集事件?CreateWindow/CreateDialog的HWND可以从另一个线程获取消息吗?
HWNDs是否与线程绑定?
尝试下面的人为的例子,我从来没有看到GetMessage()的火。
HWND g_hWnd; DWORD WINAPI myThreadProc(LPVOID lpParam) { while(GetMessage(&msg, hWnd, 0, 0) > 0) { ... } } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { hWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_MYDIALOG), 0, myDlgProc); CreateThread(NULL, 0 myThreadProc, NULL, 0, NULL); ... }
但是我在这里。
HWND g_hWnd; HINSTANCE g_hInstance; DWORD WINAPI myThreadProc(LPVOID lpParam) { hWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_MYDIALOG), 0, myDlgProc); while(GetMessage(&msg, hWnd, 0, 0) > 0) { ... } } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { g_hInstance = hInstance; CreateThread(NULL, 0 myThreadProc, NULL, 0, NULL); ... }
有人可以解释我所看到的吗?
哈!如果你将“可能”定义为“通过完全做某件事”,那么是的,一切皆有可能。 – Shog9 2009-12-26 19:28:57