國小用6年來期盼國中,國中用三年來渴望高中,高中用三年來憧憬大學,大學用四年來回憶國小到高中,青春就這樣結束了。。。
---- 網易雲熱評
相關類:
CToolBarCtrl - 父類為CWnd,封裝了關于各種工具按鈕的操作
CToolBar - 父類為CControlBar,封裝了工具欄和架構視窗之間關系
一、添加工具欄資源
1、删除按鈕時,點選按鈕拖拉到其他地方
2、移動按鈕位置時,輕輕往後拖拉
二、建立工具欄
CToolBar::Create / CToolBar::CreateEx 成員函數
createex(父視窗位址也就是架構視窗位址,工具欄按鈕風格,工具欄風格)
1、架構實作消息機制
DECLARE_MESSAGE_MAP()
2、類外面的宏
BEGIN_MESSAGE_MAP(CMyFrameWnd,CFrameWnd) ON_WM_CREATE() END_MESSAGE_MAP()
3、架構聲明OnCreate方法
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
4、重寫OnCreate方法
CBRS_GRIPPER:把手風格 CBRS_TOOLTIPS:顯示标簽 |CBRS_FLYBY:滑鼠移動到工具欄然後狀态欄就顯示 int CMyFrameWnd::OnCreate(LPCREATESTRUCT lpCreateStruct) { //CToolBar toolbar; //建立工具欄 toolbar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_ALIGN_TOP|CBRS_GRIPPER|CBRS_TOOLTIPS); //加載工具欄 toolbar.LoadToolBar(IDR_TOOLBAR1); return CFrameWnd::OnCreate(lpCreateStruct); }
三、加載工具欄資源
CToolBar::LoadToolBar
四、指令消息處理(WM_COMMAND)
ON_COMMAND(工具按鈕的ID,處理消息的函數名)
1、添加宏
ON_COMMAND(ID_XJ, xinjian) ON_COMMAND(ID_zhi, zhizhizhi)
2、聲明函數
afx_msg void xinjian(); afx_msg void zhizhizhi();
3、實作函數
void CMyFrameWnd::xinjian() { AfxMessageBox("哎呦不錯哦"); } void CMyFrameWnd::zhizhizhi() { AfxMessageBox("吱吱吱"); }
運作結果:
五、工具欄的停靠
1、工具欄準備停靠的位置
toolbar.EnableDocking(CBRS_ALIGN_ANY);
2、架構視窗允許停靠的位置
this->EnableDocking(CBRS_ALIGN_ANY);
3、架構視窗設定臨時停靠的位置
this>DockControlBar(&toolbar,AFX_IDW_DOCKBAR_LEFT);
運作結果:
六、标簽顯示
\n前面的内容将會在狀态欄顯示,後面在标簽顯示
七、工具欄的顯示和隐藏
是否打鈎
1、添加宏
ON_WM_INITMENUPOPUP( )
2、聲明函數
afx_msg void OnInitMenuPopup(CMenu*pPopup, UINT nPos, BOOL i);
3、重寫函數
void CMyFrameWnd::OnInitMenuPopup(CMenu*pPopup, UINT nPos, BOOL i) { if( toolbar.IsWindowVisible() ){ pPopup->CheckMenuItem(ID_TOOL, MF_CHECKED); }else{ pPopup->CheckMenuItem(ID_TOOL, MF_UNCHECKED); } }
點選工具欄,打鈎顯示,去了不顯示
1、添加宏
ON_COMMAND(ID_gjl, gjlxs)
2、聲明函數
afx_msg void gjlxs();
3、重寫函數
void CMyFrameWnd::gjlxs() { if (toolbar.IsWindowVisible()) { this->ShowControlBar(&toolbar, FALSE, FALSE); } else { this->ShowControlBar(&toolbar, TRUE, FALSE); } }
八、狀态欄相關類
CStatusBar - 父類為CControlBar,封裝了關于狀态欄的各種操作
九、使用方法
1、定義一個狀态欄對象
CStatusBar statusbar;
2、在Oncreate裡面建立
statusbar.CreateEx( this );
3、設定狀态欄訓示器
由于上面在工具欄設定過狀态欄資訊,是以可以在資源裡自動生成string table
建立幾個id,标題用空格,要不顯示不來
定義一個全局數組
UINT g_hIndicator[] = { 0, IDS_TIME, IDS_POS };
statusbar.SetIndicators(g_hIndicator, 3);
4、設定訓示器的風格和寬度
CStatusBar::SetPaneInfo(索引,id,風格,寬度)
5、設定定時器
::SetTimer(句柄, 1, 間隔, 設定為空及預設處理);
6、添加處理宏
ON_WM_TIMER()
7、聲明函數
afx_msg void OnTimer(UINT timeid);
8、重寫函數
void CMyFrameWnd::OnTimer(UINT timeid) { SYSTEMTIME st; ::GetLocalTime(&st); CString str; str.Format("%d-%d-%d %d:%d:%d", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond); statusbar.SetPaneText(1, str); }
運作結果:
歡迎關注公衆号:順便編點程