實例解析Visual Studio命令按鈕
Visual Studio還是比較常用的,于是我研究了一下Visual Studio命令按鈕,在這里拿出來和大家分享一下,希望對大家有用。Visual Studio命令按鈕可以說是我們最常用的Ribbon控件了,我們通常都是通過Visual Studio命令按鈕來發送某個命令,執行某個動作。
#t#它代替了過去的菜單命令,成為使用最頻繁的 Ribbon控件。在Ribbon界面中,主要有三種形式的Visual Studio命令按鈕:大圖標按鈕,小圖標按鈕以及表示選擇的復選按鈕(CheckBox)。
按照上回我們介紹的Ribbon界面開發流程,我們需要先準備菜單資源,圖標資源,實現消息響應函數等,這里我們就不再贅述這一過程,而把重點放在如何創建Ribbon界面。下面的代碼分別演示了這三種按鈕的創建過程:
- // 創建一個新的面板,用于放置大圖標按鈕
- CMFCRibbonPanel* pPanel1 = pCategory->AddPanel(_T("Large Buttons"));
- // 創建按鈕
- CMFCRibbonButton* pBtn1 = new CMFCRibbonButton(ID_RIBBON_BTN_1, _T("Button"), 0, 0);
- // 指定使用大圖標
- pBtn1->SetAlwaysLargeImage();
- // 將按鈕添加到面板中
- pPanel1->Add(pBtn1);
- CMFCRibbonButton* pBtn2 = new CMFCRibbonButton(ID_RIBBON_BTN_2, _T("Menu Button"), 1, 1);
- // 可以通過SetMenu()函數為按鈕設置一個子菜單
- pBtn2->SetMenu(IDR_RIBBON_MENU_1);
- pBtn2->SetAlwaysLargeImage();
- pPanel1->Add(pBtn2);
- CMFCRibbonButton* pBtn3 = new CMFCRibbonButton(ID_RIBBON_BTN_3, _T("Split Button"), 2, 2);
- pBtn3->SetMenu(IDR_RIBBON_MENU_1, TRUE);
- pBtn3->SetAlwaysLargeImage();
- // 可以通過RemoveSubItem()和AddSubItem()動態地改變按鈕的子項目
- pBtn3->RemoveSubItem(0);
- pBtn3->AddSubItem(new CMFCRibbonButton(ID_RIBBON_MBTN_1, _T("Item 1"), 2), 0);
- pPanel1->Add(pBtn3);
- // 創建新的面板,用于放置小圖標按鈕
- CMFCRibbonPanel* pPanel2 = pCategory->AddPanel(_T("Small"));
- // 創建小圖標按鈕
- CMFCRibbonButton* pBtn4 = new CMFCRibbonButton(ID_RIBBON_BTN_4, _T("Button"), 3);
- pPanel2->Add(pBtn4);
- CMFCRibbonButton* pBtn5 = new CMFCRibbonButton(ID_RIBBON_BTN_5, _T("Menu Button"), 4);
- pBtn5->SetMenu(IDR_RIBBON_MENU_1);
- pPanel2->Add(pBtn5);
- CMFCRibbonButton* pBtn6 = new CMFCRibbonButton(ID_RIBBON_BTN_6, _T("Split Button"), 5);
- pBtn6->SetMenu(IDR_RIBBON_MENU_1, TRUE);
- pBtn6->SetAlwaysLargeImage();
- pBtn6->RemoveSubItem(1);
- pBtn6->AddSubItem(new CMFCRibbonButton(ID_RIBBON_MBTN_2, _T("Item 2"), 5), 1);
- pPanel2->Add(pBtn6);
- //創建新的面板,用于放置復選按鈕
- CMFCRibbonPanel* pPanel3 = pCategory->AddPanel(_T("Check Boxes"));
- pPanel3->Add(new CMFCRibbonCheckBox(ID_RIBBON_BTN_7, _T("Check Box 1")));
- pPanel3->Add(new CMFCRibbonCheckBox(ID_RIBBON_BTN_8, _T("Check Box 2")));
- pPanel3->Add(new CMFCRibbonCheckBox(ID_RIBBON_BTN_9, _T("Check Box 3")));