【MFC】带图标的工具栏
00. 目錄
文章目錄
- 00. 目錄
- 01. 案例概述
- 02. 開發環境
- 03. 關鍵技術
- 04. 程序設計
- 05. 秘笈心法
- 06. 源碼下載
- 07. 附錄
01. 案例概述
默認情況下,MFC中提供的工具欄只能顯示簡單的圖像。在實際開發過程中如何在工具欄中顯示自定義圖標呢?本案例實現了一個帶有圖標的工具欄按鈕,效果如下圖所示。
02. 開發環境
系統環境:Windows 10
開發環境:Visual Studio 2019
03. 關鍵技術
工具欄CToolBar提供了一個GetToolBarCtrl方法,用于獲得一個CToolBarCtrl對象,該對象提供了一個SetImageList方法用于設置工具欄關聯的圖像列表控件。只要在程序中創建一個圖像列表,并向圖像列表中添加圖標,將其與工具欄關聯,那么工具欄按鈕就會顯示圖像。
04. 程序設計
4.1 新建基于單文檔視圖結構的應用程序。
4.2 添加圖標資源,將圖標資源拷貝到項目所在的res目錄中,然后找到資源視圖,添加圖標資源。
4.2 在框架類中定義一個CImageList對象m_Imagelist。
private:CImageList m_ImageList;4.3 在框架類的OnCreate方法中創建圖像列表,并向圖像列表中添加圖標。創建工具欄,將工具欄與圖像列表關聯。設置工具欄按鈕的大小。
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) {if (CFrameWnd::OnCreate(lpCreateStruct) == -1)return -1;//創建圖像列表,向圖像列表中添加圖標m_ImageList.Create(32, 32, ILC_COLOR24 | ILC_MASK, 0, 1);//添加一個或多個圖象到圖象列表中 for (int i = 0; i < 9; i++){m_ImageList.Add(AfxGetApp()->LoadIconW(IDI_ICON1 + i));}if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||!m_wndToolBar.LoadToolBar(IDR_MAINFRAME)){TRACE0("未能創建工具欄\n");return -1; // 未能創建}//設置工具欄圖像列表m_wndToolBar.GetToolBarCtrl().SetImageList(&m_ImageList);//設置工具欄按鈕大小m_wndToolBar.GetToolBarCtrl().SetButtonSize(CSize(40, 40));//設置工具欄按鈕圖像大小m_wndToolBar.GetToolBarCtrl().SetBitmapSize(CSize(30, 30));if (!m_wndStatusBar.Create(this)){TRACE0("未能創建狀態欄\n");return -1; // 未能創建}m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));// TODO: 如果不需要可停靠工具欄,則刪除這三行//設置工具欄停靠位置m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);//設置框架內對齊方式EnableDocking(CBRS_ALIGN_ANY);//將工具欄進行停靠DockControlBar(&m_wndToolBar);return 0; }05. 秘笈心法
工具欄種類
工具欄分為帶圖標的工具欄、帶文字的工具欄和即帶圖標又帶文字的工具欄。帶圖標的工具欄通過圖標的演示作用很容易讓人記憶,所以使用起來非常方便,即帶圖標又帶文字的工具欄比只帶圖標的工具欄更加方便,單圖標下方的文字的數量有限,只能是起到提示作用的文本,主要還是依靠圖標的演示作用,而且需要結合提示條對工具欄按鈕進行提示。
06. 源碼下載
6.1 帶圖標的工具欄示例
下載:帶圖標的工具欄示例
07. 附錄
總結
以上是生活随笔為你收集整理的【MFC】带图标的工具栏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C++】vs无法更新DoDataExc
- 下一篇: 【MFC】带背景的工具栏