【MFC】带组合框的工具栏
00. 目錄
文章目錄
- 00. 目錄
- 01. 案例概述
- 02. 開發環境
- 03. 關鍵技術
- 04. 程序設計
- 05. 秘笈心法
- 06. 源碼下載
- 07. 附錄
01. 案例概述
在Office軟件中經常可以看到工具上有很多組合框,通過工具欄上的組合框Office可以非常方便的設置字體的大小、類型等。實例就實現帶組合框的工具欄。效果如下圖所示。
02. 開發環境
系統環境:Windows 10
開發環境:Visual Studio 2019
03. 關鍵技術
實例使用CToolBar類創建工具欄,首先通過Create方法創建工具欄后,然后使用LoadBitmap設置按鈕使用的圖標,使用SetButtons設置按鈕使用的ID資源,接著使用GetItemRect獲取指定按鈕的區域,然后使用CComboBox類的Create方法在該區域內創建組合框控件。如果想改變原有按鈕的區域需要使用CToolBar類SetButtonInfo方法,該方法不但可以設置工具欄按鈕使用的圖標索引、按鈕的樣式,還可以改變按鈕的寬度。
SetButtonInfo方法
該方法用來設置工具欄按鈕的屬性信息。語法:
void SetButtonInfo( int nIndex, UINT nID, UINT nStyle, int iImage ); nIndex 按鈕的索引 nID 按鈕的資源ID值 nStyle 按鈕的樣式,有以下取值。 TBBS_BUTTON:按鈕樣式。 TBBS_SEPARATOR:分隔條樣式。 TBBS_CHECKBOX:復選樣式 TBBS_GROUP:組樣式。 TBBS_CHECKGROUP:復選組樣式,該樣式應放在按鈕組的第一位置。 iImage 設置圖片索引,以及按鈕的寬度04. 程序設計
(1)新建一個基于單文檔視圖結構的應用程序。
(2)從CToolBar派生新類CStyleBar,并在CMainFrame類中聲明該類的一個對象m_wndStyleBar。
(3)在CMainFrame類的OnCreate函數中創建工具欄,函數實現代碼如下。
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) {if (CFrameWnd::OnCreate(lpCreateStruct) == -1)return -1;const int nDropHeight = 100;//創建工具欄if (!m_wndStyleBar.Create(this, WS_CHILD|WS_VISIBLE|CBRS_TOP|CBRS_TOOLTIPS|CBRS_FLYBY, 15000) ||!m_wndStyleBar.LoadBitmap(IDB_STYLES) || //加載工具欄圖標!m_wndStyleBar.SetButtons(styles, sizeof(styles)/sizeof(UINT))) //為工具欄添加按鈕{TRACE0("Failed to create stylebar\n");return FALSE;}m_wndStyleBar.SetButtonInfo(0, 12000, TBBS_SEPARATOR, 50); //設置指定工具欄按鈕的寬度m_wndStyleBar.SetButtonInfo(1, ID_SEPARATOR, TBBS_SEPARATOR, 12); //設置指定工具欄按鈕的樣式CRect rect;m_wndStyleBar.GetItemRect(0, &rect); //獲取指定按鈕的區域rect.top = 3;rect.bottom = rect.top + nDropHeight;if (!m_wndStyleBar.m_comboBox.Create(CBS_DROPDOWNLIST|WS_VISIBLE|WS_TABSTOP,rect, &m_wndStyleBar, 12000)) //創建組合框{TRACE0("Failed to create combo-box\n");return FALSE;}return 0; }05. 秘笈心法
增強工具欄的創建
在工具欄上不僅可以顯示組合框控件,還可以顯示編輯框和標簽控件,其實現的思路都是一樣的,就是先生成工具欄按鈕,然后獲取按鈕的區域,最后在該區域內創建想要創建的控件。
06. 源碼下載
下載:
07. 附錄
參考: 《Visual C++從入門到精通(項目案例版)》
總結
以上是生活随笔為你收集整理的【MFC】带组合框的工具栏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【MFC】在工具栏中添加编辑框
- 下一篇: 【MFC】工具栏左侧双线效果