是否可以将控件添加到另一个进程的窗口中?



我创建了一个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());
}

是的。但!

问题是窗口始终属于创建它的线程。因此,此类控制消息的消息将到达创建此类窗口的线程中。

这可能有效,但由于来自父窗口的消息将发送给子窗口,因此在消息队列中需要很长时间,并且如果无法直接检索和处理消息,则可能会导致锁定。

所以最后我建议:不要这样做!

相关内容

  • 没有找到相关文章

最新更新