簡體   English   中英

Win32,C ++:創建彈出窗口而不會竊取焦點

[英]Win32, C++: Creating a popup window without stealing focus

我正在創建一個程序,在某些時間顯示一個彈出窗口(就像一些聊天客戶端一樣),用戶可以在其上單擊。 但是,我不想從當前的應用程序中刪除焦點。

我現在這樣做的方法是使用帶有WS_POPUPWINDOW的HWND並最小化然后恢復窗口。 然而,這從當前的應用程序中竊取了焦點。 設置前景或隱藏並顯示窗口並未使其顯示在前景中。 我希望能夠繼續使用HWND,這樣我就可以在這個窗口中使用其他元素了,但是我不知道如何在沒有竊取焦點的情況下給它前景。

我使用win32和c ++。

要顯示而不激活:

ShowWindow(hwnd, SW_SHOWNOACTIVATE);

在不激活的情況下加注

SetWindowPos(hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE);

不幸的是,這對我不起作用。 該窗口是使用CreateWindowExA創建的,並使用ShowWindow(hwnd,SW_SHOWNOACTIVATE)顯示但鍵盤焦點仍然從創建時具有焦點的窗口中被盜。 (通過使用SetWindowLong()SetLayeredWindowAttributes() )創建具有分層和trasparent屬性的窗口。

PS:具有焦點的窗口不是新創建窗口的父窗口。

解決:當我刪除SetForegroundWindow調用時,它工作。 此功能使作為參數傳遞的窗口被激活。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM