MFC 工具欄的自定義創建

轉自:http://hi.baidu.com/zyl_aiwo/item/6931bace475b4451bdef6983

1.如何添加自己的工具欄

在CMainFrame::OnCreate中,MFC自動添加的工具欄如下

if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS 
| CBRS_FLYBY | CBRS_SIZE_FIXED) ||
!m_wndToolBar.LoadToolBar(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 : IDR_MAINFRAME))
{
      TRACE0(_T(“未能創建工具欄\n”));
      return -1;      // 未能創建

參照其創建自己的工具欄,注意需添加紅色字體部分
if (!m_wndDrawBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP| CBRS_GRIPPER 
| CBRS_TOOLTIPS | CBRS_FLYBY |CBRS_SIZE_FIXED
,CRect(1,1,1,1),IDR_DRAWBAR) ||
!m_wndDrawBar.LoadToolBar(IDR_DRAWBAR))
{
      TRACE0(“Failed to create toolbar\n”);
      return ;      // fail to create
}

2.停靠工具欄

創建好工具欄後,可用下面的代碼停靠工具欄
EnableDocking(CBRS_ALIGN_ANY);
m_wndDrawBar.EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndDrawBar,AFX_IDW_DOCKBAR_TOP);

如果需要兩個工具欄排列在同一行上,可用下面的代碼實現
this->DockPaneLeftOf(&m_wndDrawBar,&m_wndToolBar); //將m_wndDrawBar停靠在m_wndToolBar的左邊

如果有多個工具欄需要排列在不同的行上,可用下面的代碼實現
//排列第一行的兩個工具欄
DockPane(&m_wndBar1,AFX_IDW_DOCKBAR_TOP);
this->DockPaneLeftOf(&m_wndBar2,&m_wndBar1);
//排列第二行的兩個工具欄
DockPane(&m_wndBar3,,AFX_IDW_DOCKBAR_TOP);
this->DockPaneLeftOf(&m_wndBar4,&m_wndBar3);

3.讓一個工具欄上的按鈕多行排列
CMFCToolBar wndToolBar; 
wndToolBar.GetButton(i)->m_bWrap=TRUE; //第i個按鈕開始換行

4.插入組合框等
//創建和初始化組合框
CMFCToolBarComboBoxButton m_combo(IDC_COMBO1,
                                                                         -1, // 工具條位圖中的圖像序號
                                                                         CBS_DROPDOWNLIST,//組合框類型
                                                                         50);  //組合框的寬度
static int nstr[] = {1,2,3,4,5,6,7, 8, 9, 10};
CString str;
int nCount = sizeof (nstr) / sizeof (int);
for (int k=0; k<nCount; k++) 
{
        str.Format (_T (“%d”), nstr[k]);
        m_combo.AddItem(str);
}
m_combo.SelectItem(0);
//插入到工具欄
m_wndTextBar.InsertSeparator(); //添加分隔條
m_wndTextBar.InsertButton(m_combo,0);

如果插入菜單的話則使用 CMFCToolBarMenuButton

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章