首先,這個問題繼續在我的答案another question ...如何避免在顯示多個表單時設置焦點?
假設我使用這個特定的解決方案,圍繞任何給定的窗口放置框架。我怎樣才能讓焦點聚焦到這些框架形式的焦點形式保持其焦點?目前,我不得不打電話給SetFocus
設置任何東西,但是,然後窗口會變得非常糟糕,不能正確顯示。
如何確保聚焦形式始終保持其焦點,無論這4種邊框形式如何顯示?
首先,這個問題繼續在我的答案another question ...如何避免在顯示多個表單時設置焦點?
假設我使用這個特定的解決方案,圍繞任何給定的窗口放置框架。我怎樣才能讓焦點聚焦到這些框架形式的焦點形式保持其焦點?目前,我不得不打電話給SetFocus
設置任何東西,但是,然後窗口會變得非常糟糕,不能正確顯示。
如何確保聚焦形式始終保持其焦點,無論這4種邊框形式如何顯示?
相反表示直接顯示過程(FTop.Show),使用顯示窗口,而不激活邊緣的窗口:
ShowWindow(FTop.Handle, SW_SHOWNOACTIVATE);
FTop.Visible := True;
打開任務管理器,轉到選項卡*應用程序*,右鍵單擊您的不可觸摸應用程序,然後選擇*切換到*。這只是一種如何偷取焦點的方法。此外,只顯示帶有「SW_SHOWNOACTIVATE」標誌的窗口並不意味着您無法簡單地通過鼠標對焦窗口。 [不投票] – TLama
還有其他方法可以解決這些問題,@Tlama。首先,這些窗口將我視爲一旦某個程序的主窗口失去焦點就可能被隱藏起來,所以他們通過任務管理器或資源管理器獲得焦點是不成問題的。儘管如此,'ws_ex_NoActivate'窗口樣式可以使窗口免於通過單擊進行聚焦。窗口風格甚至可以成爲這個問題的答案。 –
@Rob,我得到了鏈接的問題,因爲OP想要在窗口周圍永久保留*突出顯示的矩形*(直到選擇了不同的窗口)。 – TLama
不是爲每一個側產生4種不同形式的,爲什麼不你是否簡單地創建了一個無邊界表單,其中clientRect在主應用程序上膨脹,並簡單地控制該無邊界表單的z-index,將其定位在應用程序後面,從而給出4個邊界的外觀。 – Peter
由於您在焦點更改事件期間調用'SetFocus',您的窗口越來越糟糕。等到所有焦點更改通知消息通過之後再嘗試更改焦點爲止,通常通過在kill-focus消息中發佈另一個通知給自己,然後在稍後處理該其他消息時調用SetFocus。 –