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