[問題] 視窗最上層問題

看板C_and_CPP作者 (全脂鮮乳)時間11年前 (2013/01/09 11:06), 編輯推噓3(3019)
留言22則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 問題(Question): 請教大家一下,目前用MFC寫遊戲遇到的瓶頸, 若我的程式A,會開啟許多視窗, (1)需要將其中一個視窗B永久最上層顯示, 不被自己程式後來產生的視窗蓋掉。 (2)此時開啟其它軟體時,可以覆蓋掉A所有視窗。 請問要怎麼處理比較好, SetForegroundWindow無法滿足(1), 將B設為HWND_TOPMOST,無法達到(2)的效果。 想法: 當選擇程式A時, 將視窗B設為HWND_TOPMOST, 用其它軟體時 將視窗B設為HWND_NOTOPMOST。 但卡在目前是使用程式A,還是點選其軟體。 表達有點凌亂,請大家見諒。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.171.214.112 ※ 編輯: Lanrete 來自: 118.171.214.112 (01/09 11:07)

01/09 11:17, , 1F
用SetParent(B,A)?
01/09 11:17, 1F

01/09 11:19, , 2F
可以查一下owned window
01/09 11:19, 2F

01/09 11:34, , 3F
不熟mfc,直覺上你的solution可能會有微妙的問題
01/09 11:34, 3F

01/09 11:36, , 4F
試試看WM_ENABLE,這個行不行取決與WINDOWS各動作
01/09 11:36, 4F

01/09 11:36, , 5F
的順序
01/09 11:36, 5F

01/09 11:38, , 6F
maybe it's WM_NCACTIVATE?我還是不瞎扯了= =
01/09 11:38, 6F

01/09 11:40, , 7F
可以問問你開啟許多視窗 是用甚麼方法開啟的嗎?
01/09 11:40, 7F

01/09 11:41, , 8F
modeless?
01/09 11:41, 8F
a大 我正在看有無辦法設定z-order達到固定最上層 謝謝你。 d大 我的想法的確有問題 我是利用WM_ACTIVATE及WM_ACTIVATEAPP來作判定。 f大 目前我的視窗是繼承CDialog,利用其Create 函式來作。 謝謝大家提供方式,繼續研究 >"< ※ 編輯: Lanrete 來自: 118.171.214.112 (01/09 11:50)

01/09 12:14, , 9F
可以借我看你 create dlg地方的code嗎?
01/09 12:14, 9F

01/09 12:15, , 10F
azure的解決可能是clean fix。如果你不能那麼做,一
01/09 12:15, 10F

01/09 12:16, , 11F
個顯而易見的dirty fix是當你的窗口被deactivate時
01/09 12:16, 11F

01/09 12:16, , 12F
iterate all windows on desktop,然後把你的window
01/09 12:16, 12F

01/09 12:17, , 13F
置於正確位置……
01/09 12:17, 13F

01/09 12:23, , 14F
只要owner有設好owned就一定會放在owner上
01/09 12:23, 14F

01/09 12:23, , 15F
mfc要怎麼設我就跟他不熟了
01/09 12:23, 15F

01/09 13:17, , 16F
玩了一下 試不出來 ~"~
01/09 13:17, 16F
若A創出C視窗並設好owner,C會在A上, 後來A又創出視窗,都要C都要和新視窗設好owner嚕? 謝謝你們給方向哩 但目前還搞不定作法... ※ 編輯: Lanrete 來自: 118.171.214.112 (01/09 13:25)

01/09 13:36, , 17F
所以你希望A在一堆視窗下面,可是C一定在最上面?
01/09 13:36, 17F

01/09 13:51, , 18F
這樣你可以把其他視窗設成A的child,只是他們會被
01/09 13:51, 18F

01/09 13:52, , 19F
限制在A的範圍內
01/09 13:52, 19F

01/09 13:52, , 20F
不然好像只能手動排了...
01/09 13:52, 20F

01/09 14:17, , 21F
嗯.... 找不到簡單的作法 看來真的要一個一個手動設定了
01/09 14:17, 21F

01/09 14:18, , 22F
謝謝A大的幫忙 ^^
01/09 14:18, 22F
文章代碼(AID): #1GxDwZ8L (C_and_CPP)