2012-01-09 16 views
0

我有wxWidget應用程序。在我的MainFrame上的某個地方,我創建了一個新框架並在其上調用Show。但是,如果用戶再次執行此操作,我不想創建新框架。我想激活以前的一個。我存儲指向創建幀的指針,但我不知道如何向他發送激活coomand?我嘗試在createdFrame-> ProcessEvents中發送ActivatedEvent,但沒有任何意義。如何在wxWidgets中手動激活框架?

是否有可能將激活命令發送到框架wxWidgets?

+0

我不熟悉術語「激活幀」是什麼意思? – ravenspoint 2012-01-09 18:55:06

+0

wxWidgets中的一個框架是一個簡單的窗口。激活幀意味着將焦點轉移到該窗口。如果窗口在後臺 - 操作系統會將其作爲當前活動窗口。我可以通過WinApi來實現,但這種方式只適用於Windows,我想使用wxWidgets跨平臺方法,但我不知道它是否支持wxWidgets。順便說一句我用2.8.12 wxWidgets – 2012-01-09 22:55:51

回答

0

搶焦點的窗口,調用該方法SetFocus()

wxFrame * pFrame = new wxFrame(...); 

... 

pFrame->SetFocus(); 

http://docs.wxwidgets.org/stable/wx_wxwindow.html#wxwindowsetfocus

我不知道你爲什麼要這麼做?這有點奇怪!通常情況下,當用戶點擊窗口時,人們會將其保留在操作系統中。實際上,wxFrame幾乎沒有得到關注,因爲它可以處理很少(沒有?)。通常情況下,框架包含的其中一個窗口小部件會獲得焦點 - 例如文本控件,以便用戶可以開始輸入。

也許這就是你真正想做的事情?在這種情況下,過程是這樣的:

+0

pFrame-> SetFocus();爲我工作。謝謝! – 2012-01-10 09:37:55

+0

順便說一下。在我的應用程序中有一個包含3-5個項目的列表。並且當用戶點擊列表項目時 - 顯示具有詳細信息的新框架。通過應用程序的邏輯,可以顯示一些細節框架。如果用戶再次單擊列表項並且詳細框架未關閉 - 我想調用SetFocus()並將框架帶到應用程序的前面。 – 2012-01-10 09:41:38