我创建了一个MFC窗口,从另一个项目中,我想通过其句柄(使用FindWindow)向该窗口添加一个按钮。句柄正确,但没有任何反应。这是无法实现还是我做错了什么?
这是我的代码:
HWND hWnd = FindWindow(NULL, "MFCtest");
if(hWnd)
{
printf("Found itn");
HWND hwndButton = CreateWindow(
"BUTTON",
"OK", // Button text
WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, // Styles
0, // x position
0, // y position
100, // Button width
100, // Button height
hWnd, // Parent window
NULL, // No menu.
(HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE),
NULL); // Pointer not needed.
if(!hwndButton)
printf("GetLastError: %dn", GetLastError());
}
是的。但!
问题是窗口始终属于创建它的线程。因此,此类控制消息的消息将到达创建此类窗口的线程中。
这可能有效,但由于来自父窗口的消息将发送给子窗口,因此在消息队列中需要很长时间,并且如果无法直接检索和处理消息,则可能会导致锁定。
所以最后我建议:不要这样做!