Win32:C++:单击 child window 后如何在 Parent Window 上 re-focus?

Win32: C++: How do I re-focus on Parent Window after clicking in a child window?

在我的 Win32 CPP 程序中,我定义了一些 Child Window 来显示各种文本字符串,例如:

hnd_to_this_ch_window = CreateWindow( 
                        L"EDIT",L"Some initial text", WS_VISIBLE | WS_CHILD | ES_LEFT,  
                        position_of_this_window_X,              
                        position_of_this_window_Y,
                        TEXTOUT_DEFAULT_WIDTH,          
                        TEXTOUT_DEFAULT_HEIGHT, 
                        handle_to_my_parent_window, NULL,                        
                        hinstance_variable_used_by_create_window, 
                        NULL )

我的问题是,如果我用鼠标单击 select 其中一个 child windows 中的文本(例如,将其复制到某处),焦点应用程序转到此 child window ,因此以前通过我的主要 windows CALLBACK(使用案例 WM_KEYDOWN:) 处理的任何按键现在都被捕获到 child window,它们显示为输入的字符。我调用什么魔法函数让焦点回到 parent(以便我的 WM_KEYDOWN)可以再次工作?我希望我可以点击主 Window 的标题栏,这样它就会恢复正常,但那是行不通的(因为,很明显,我的程序缺少一些额外的逻辑)。

处理 WM_KILLFOCUS message in the window procedure of the window you want to focus, and restore the focus using the SetFocus 函数。

如果要在单击时聚焦 window,请处理 WM_LBUTTONDOWN 消息。

LRESULT CALLBACK MyWndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
    // Restore the focus when it was lost.
    if (Msg == WM_KILLFOCUS) {
        SetFocus(hWnd);
        // Msg was handled, return zero.
        return 0;
    }
    // Or when the window is clicked.
    if (Msg == WM_LBUTTONDOWN) {
        SetFocus(hWnd);
        // Msg was handled, return zero.
        return 0;
    }
    return DefWindowProc(hWnd, Msg, wParam, lParam);
}
case WM_KEYDOWN:
    SetFocus(Parent_Hwnd);
    return SendMessage(Parent_Hwnd,WM_KEYDOWN,wParam,lParam);