MFC VS2008中的新用戶界面 ————菜單欄、工具欄和狀態欄

MFC加入了新窗口元素:窗格。嶄新的工具欄和狀態欄都是一種窗格。

  一、窗格

  窗格是MFC在2008年新加入的,它由類CPane和其基類CBasePane實現。窗格就是用來在主框架窗口上佔據邊框位置的窗口,例如工具欄和狀態欄。
  CBasePane實現了窗格的基本功能和屬性:停靠、浮動以及基本的窗口消息處理。CPane在CBasePane的基礎上,實現了抓取的功能,可以用鼠標把窗格從停靠狀態變爲浮動狀態。只要你的窗口從CPane派生,就能具有這樣的功能。CBasePane和CPane提供了非常多的虛函數,派生類需要考慮自己如何去重寫或實現。

  二、工具欄

  MFC的新工具欄是一個窗格。工具欄由CMFCToolBar實現。CMFCToolBar的基類是CMFCBaseToolBar,而CMFCBaseToolBar的又是從CPane派生的。CMFCToolBar和CToolBar沒有任何關係,它不是用Win32的窗口類TOOLBARCLASSNAME創建的,也不是TOOLBARCLASSNAME的超類,所以不能向CMFCToolBar發送和公共控件特有的Windows消息。CMFCToolBar的所有功能,包括按鈕的顯示已經按鈕事件的產生都是CMFCToolBar自己實現的。
  CMFCToolBarButton實現工具按鈕,它類似於Win32的TBBUTTON和TBBUTTONINFO,有類似的數據成員。CMFCToolBar在使用習慣上和CToolBar是類似的,它有一些和CToolBar類似的函數:

LoadBitmap、LoadToolBar、LoadBitmapEx、LoadToolBarEx從資源中讀取工具欄;
SetButtons、InsertButton、InsertSeparator、ReplaceButton、RemoveButton、RemoveAllButtons修改工具欄上的按鈕;

  三、菜單欄

  菜單欄是用工具欄實現的,菜單按鈕也就是工具按鈕嘛。MFC實現菜單欄的類是CMFCMenuBar。
  函數CreateFromMenu從HEMNU中創建菜單欄;
  函數GetMenuItem獲取菜單項。

  四、狀態欄

  MFC的新狀態欄也是一個窗格,它是由CMFCStatusBar實現的。CMFCStatusBar從CPane派生。CMFCStatusBar和CStatusBar沒有任何關係,它不是用Win32的窗口類STATUSCLASSNAME創建,也不是STATUSCLASSNAME的超類,所以不能向CMFCStatusBar發送和公共控件特有的Windows消息。CMFCStatusBar的所有功能自己實現的。
  類CMFCStatusBarPaneInfo保存狀態欄窗格的信息,但主要在CMFCStatusBar內部使用。CMFCStatusBar提供了類似於CStatusBar的函數:

SetIndicators:從資源中讀取狀態欄;
CommandToIndex:從窗格的命令ID查詢序號;
GetItemID、GetItemRect、GetPaneText、GetPaneInfo等等都和CStatusBar的含義是一樣的。
  五、REBAR

  MFC用CMFCReBar替代了原來的CReBar,它也是一個窗格,從CPane派生。CRebar是用Win32的窗口類REBARCLASSNAME創建,因而可以在CMFCReBar中使用Win32中有關REBAR的宏和消息。

GetReBarCtrl:在REBAR創建後,可以獲取CReBarCtrl控件對象,並操縱REBAR控件;
AddBar:增加一個band;
SetPaneAlignment:設置bands在REBAR中的對齊方式
文章出處:DIY部落(http://www.diybl.com/course/3_program/c++/cppsl/2008825/137415.html)

發佈了15 篇原創文章 · 獲贊 20 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章