使用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