wxWidgets随笔(11)-wxFrame类
wxFrame類是一個(gè)窗口,它的大小和位置(通常)可以由用戶更改。
它通常有粗粗的邊框和標(biāo)題欄,還可以包含菜單欄、工具欄和狀態(tài)欄。框架可以包含任何不是框架或?qū)υ捒虻拇翱凇?br /> 通過(guò)CreateStatusBar()和CreateToolBar()函數(shù)創(chuàng)建的具有狀態(tài)欄和工具欄的框架管理這些窗口并調(diào)整GetClientSize()返回的值,以反映應(yīng)用程序窗口可用的剩余大小。
應(yīng)用程序通常應(yīng)該為框架定義一個(gè)wxCloseEvent處理程序來(lái)響應(yīng)系統(tǒng)關(guān)閉事件,例如,以便清理相關(guān)數(shù)據(jù)和子窗口。
wxFrame處理以下事件:
wxEVT_SIZE:如果框架只有一個(gè)子窗口(不包括狀態(tài)和工具欄),則將調(diào)整此子窗口的大小以占用整個(gè)框架客戶區(qū)。如果有兩個(gè)或多個(gè)窗口,則應(yīng)該通過(guò)手動(dòng)處理wxEVT_SIZE或使用sizer顯式地設(shè)置它們;
wxEVT_MENU_HIGHLIGHT:默認(rèn)實(shí)現(xiàn)在狀態(tài)欄的第一個(gè)窗格中顯示與所選項(xiàng)目相關(guān)的幫助字符串(如果有的話)。
風(fēng)格
這個(gè)類支持以下樣式:
wxDEFAULT_FRAME_STYLE:
定義為wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxRESIZE_BORDER | wxSYSTEM_MENU | wx字幕| wxCLOSE_BOX | wxCLIP_CHILDREN。
wxICONIZE:
顯示幀圖標(biāo)化(最小化)。僅Windows。
wxCAPTION:
在框架上添加標(biāo)題。注意,在大多數(shù)系統(tǒng)中,wxMINIMIZE_BOX、wxMAXIMIZE_BOX和wxCLOSE_BOX都需要這個(gè)標(biāo)志,因?yàn)槿绻翱诟緵](méi)有標(biāo)題欄,就無(wú)法顯示相應(yīng)的按鈕。也就是說(shuō),如果沒(méi)有指定wx字幕,這些樣式將被簡(jiǎn)單地忽略。
wxMINIMIZE:
wxICONIZE相同。僅Windows。
wxMINIMIZE_BOX:
在框架上顯示最小化框。
wxMAXIMIZE:
顯示最大化的幀。只有Windows和GTK+。
wxMAXIMIZE_BOX:
在框架上顯示一個(gè)最大化框。請(qǐng)注意,在wxGTK下也必須使用wxRESIZE_BORDER,否則將忽略此樣式。
wxCLOSE_BOX:
在框架上顯示一個(gè)關(guān)閉框。
wxSTAY_ON_TOP:
保持在所有其他窗口的頂部,也參見(jiàn)wxFRAME_FLOAT_ON_PARENT。
wxSYSTEM_MENU:
在窗口標(biāo)題欄中顯示包含各種窗口命令列表的系統(tǒng)菜單。與wxMINIMIZE_BOX不同,wxMAXIMIZE_BOX和wxCLOSE_BOX樣式可以在不使用wx字幕的情況下使用,至少在Windows下可以使用,并且在這種情況下,系統(tǒng)菜單可以在屏幕上顯示。但是,為了在所有平臺(tái)上保持一致的行為,建議只將它與wx字幕一起使用。
wxRESIZE_BORDER:
顯示窗口周圍的可調(diào)整大小的邊框。
wxFRAME_TOOL_WINDOW:
使具有小標(biāo)題欄的框架被創(chuàng)建;該框架不會(huì)出現(xiàn)在Windows或GTK+下的任務(wù)欄中。
wxFRAME_NO_TASKBAR:
創(chuàng)建一個(gè)正常的框架,但是它不會(huì)出現(xiàn)在Windows或GTK+下的任務(wù)欄中(注意,它會(huì)最小化到Windows下的桌面窗口,這對(duì)用戶來(lái)說(shuō)可能很奇怪,因此最好只使用這種風(fēng)格而不使用wxMINIMIZE_BOX風(fēng)格)。在wxGTK中,只有當(dāng)窗口管理器支持_NET_WM_STATE_SKIP_TASKBAR提示時(shí),才會(huì)使用該標(biāo)記。
wxFRAME_FLOAT_ON_PARENT:
框架將始終位于其父框架的頂部(與wxSTAY_ON_TOP不同)。使用此樣式創(chuàng)建的框架必須具有非空父框架。
wxFRAME_SHAPED:
使用這種樣式的窗口可以使用SetShape()方法更改它們的形狀。
默認(rèn)的框架樣式用于正常的、可調(diào)整大小的框架。要?jiǎng)?chuàng)建用戶無(wú)法調(diào)整大小的框架,可以使用以下樣式組合
wxDEFAULT_FRAME_STYLE & ~(wxRESIZE_BORDER | wxMAXIMIZE_BOX)額外的樣式
這個(gè)類支持以下額外的樣式:
wxFRAME_EX_CONTEXTHELP:
在Windows下,在標(biāo)題上放置一個(gè)查詢按鈕。當(dāng)按下時(shí),Windows將進(jìn)入上下文敏感的幫助模式,如果用戶單擊應(yīng)用程序窗口,wxWidgets將發(fā)送wxEVT_HELP事件。注意,這是一種擴(kuò)展樣式,在調(diào)用Create之前必須通過(guò)調(diào)用SetExtraStyle進(jìn)行設(shè)置(兩步構(gòu)建)。您不能將此樣式與wxMAXIMIZE_BOX或wxMINIMIZE_BOX一起使用,所以您應(yīng)該對(duì)具有此樣式的幀使用wxDEFAULT_FRAME_STYLE ~ (wxMINIMIZE_BOX | wxMAXIMIZE_BOX)(對(duì)話框默認(rèn)沒(méi)有最小化或最大化框)
wxFRAME_EX_METAL:
在Mac OS X上,這種風(fēng)格的框架將以金屬外觀顯示。這是另一款。
該類發(fā)出的事件
這個(gè)類發(fā)出的事件宏:
EVT_CLOSE(函數(shù)):
當(dāng)用戶關(guān)閉或以編程方式關(guān)閉框架時(shí),處理wxEVT_CLOSE_WINDOW事件(參見(jiàn)wxWindow::Close)。如果有關(guān)閉按鈕(通常是標(biāo)題欄右上角的“X”),用戶可以生成此事件(參見(jiàn)wxCLOSE_BOX樣式)。看到wxCloseEvent。
EVT_ICONIZE(函數(shù)):
處理wxEVT_ICONIZE事件。看到wxIconizeEvent。
EVT_MENU_OPEN(函數(shù)):
菜單馬上就要打開了。看到wxMenuEvent。
EVT_MENU_CLOSE(函數(shù)):
菜單剛被關(guān)閉。看到wxMenuEvent。
EVT_MENU_HIGHLIGHT (id、函數(shù)):
具有指定id的菜單項(xiàng)已突出顯示:用于在wxFrame的狀態(tài)欄中顯示幫助提示。看到wxMenuEvent。
EVT_MENU_HIGHLIGHT_ALL(函數(shù)):
菜單項(xiàng)已突出顯示,即當(dāng)前選擇的菜單項(xiàng)已更改。看到wxMenuEvent。
總結(jié)
以上是生活随笔為你收集整理的wxWidgets随笔(11)-wxFrame类的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: wxWidgets随笔(10)-wxAp
- 下一篇: Highcharts双饼图使用实例