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