Win32,C++:创建弹出窗口而不会窃取焦点

10 c++ windows winapi

我正在创建一个程序,在某些时间显示一个弹出窗口(就像一些聊天客户端一样),用户可以在其上单击.但是,我不想从当前的应用程序中删除焦点.

我现在这样做的方法是使用带有WS_POPUPWINDOW的HWND并最小化然后恢复窗口.然而,这从当前的应用程序中窃取了焦点.设置前景或隐藏并显示窗口并未使其显示在前景中.我希望能够继续使用HWND,这样我就可以在这个窗口中使用其他元素了,但是我不知道如何在没有窃取焦点的情况下给它前景.

我使用win32和c ++.

Ric*_*dle 23

要显示而不激活:

ShowWindow(hwnd, SW_SHOWNOACTIVATE);
Run Code Online (Sandbox Code Playgroud)

无需激活即可提升:

SetWindowPos(hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE);
Run Code Online (Sandbox Code Playgroud)