Visual C++ 2008 MFC OFFICE界面創建入門

圖形畫板2008設計文檔

目錄

圖形畫板2008設計文檔    1

1.    圖形後臺框架    2

1.1.    基本圖形類框架如下:    2

2.    界面框架    2

2.1.    快捷菜單    3

2.2.    主菜單    3

2.3.    工具欄    4

3.    如何創建OFFICE風格的MFC工程    4

4.    如何在工具欄上面添加按鈕    9

4.1.    添加菜單主項    9

4.2.    爲菜單項添加事件    10

4.3.    添加Ribbon字符    11

4.4.    將按鈕添加到工具欄    11

4.4.1.    創建主類別(CMFCRibbonCategory)    12

4.4.2.    創建面板(CMFCRibbonPanel)    12

4.4.3.    添加按鈕(CMFCRibbonButton)到面板    12

 

 

  1. 圖形後臺框架

    1. 基本圖形類框架如下:

  2. 界面框架

    主用應用了Visual Studio 2008 SP1添加的新增強包,可以方面的創建出像OFFCIE2007的Ribbon界面。

 

Ribbon工具欄是在MainFrm.CPP中的void CMainFrame::InitializeRibbon()生成的

整個工具欄CMFCRibbonBar分爲

  1. 快捷菜單

  2. 主菜單

    主菜單按鈕CMFCRibbonApplicationButton

    主菜單CMFCRibbonMainPanel

  3. 工具欄

    主要分成3層結構:

    第一層:分類(容器) CMFCRibbonCategory,如圖中紅色部分所示。

    第二層:面板(容器) CMFCRibbonPanel ,如圖中紅色部分所示。

    第三層:元素 CMFCRibbonBaseElem,如圖中紅色部分所示。

先有一個整體的概念~

  1. 如何創建OFFICE風格的MFC工程

    以下是創建Visual C++ 2008 SP1創建Office風格的MFC的步驟:

    首先,新建項目,選擇Visual C++ 中的MFC應用程序,輸入名稱,點擊確定

    接着選擇Office的項目類型,MFC的使用選擇"在靜態庫中使用MFC"(這樣可以保證在任何Windows系統中都能正確運行,如果選擇共享DLL,則只能在有MFC7.0庫的機子上正確運行,所以推薦選"在靜態庫中使用MFC")

    接下來的幾個步驟都直接按默認即可

    這裏我們先將"導航窗格"的勾去掉(由於本程序沒有用到它,所以再此不詳細介紹)

    這裏將視圖類的基類選爲CScrollView,點擊完成

    然後運行一下,基本的雛形就出來啦,簡單吧~

  2. 如何在工具欄上面添加按鈕

    1. 添加菜單主項

接着繼續添加菜單子項,並在屬性欄中設置相應的屬性,注意Prompt要按照"解釋/n標題"這種格式,例如:Prompt繪製一個圓/n畫圓

做完要記得保存哦

 

 

 

 

 

 

 

 

 

  1. 爲菜單項添加事件

右鍵點擊需要添加事件的選項,選擇添加"事件處理程序"

點擊"添加編輯",然後就到視圖類的結尾找到這個事件的函數,開始編寫事件,可以注意到"函數處理程序名稱"是根據"命令名"自動生成的,雖然自己也可以修改,不過還是按默認的比較好,所以也說明上面提到的加入ID時候要根據這樣的命名規則來命名。

  1. 添加Ribbon字符

如下圖所示在String Table中添加所有需要放到工具欄中按鈕的ID及其標題,別忘了保存哦

  1. 將按鈕添加到工具欄

通過上面的準備,接下來,我們可以通過類視圖定位到Ribbon初始化的位置

然後按照上1.2.3章節介紹的層次,來將按鈕添加到菜單欄

 

  1. 創建主類別(CMFCRibbonCategory

// 爲"剪貼板"面板添加""類別:

bNameValid = strTemp.LoadString(IDS_RIBBON_HOME);//添加"主頁"分類面板

ASSERT(bNameValid);

CMFCRibbonCategory* pCategoryHome = m_wndRibbonBar.AddCategory(strTemp, IDB_WRITESMALL, IDB_WRITELARGE2);//創建分類頁

 

bNameValid = strTemp.LoadString(IDS_RIBBON_DIY);添加"自定義基本圖形"主分類面板,應現在String Table中添加IDS_RIBBON_DIY及其標題

ASSERT(bNameValid);

CMFCRibbonCategory* pCategoryDIY = m_wndRibbonBar.AddCategory(strTemp,IDB_WRITESMALL,IDB_WRITELARGE2);//創建分類IDB_WRITESMALL是小圖標,IDB_WRITELARGE2是大圖標,它們都是在資源裏面創建的

 

  1. 創建面板(CMFCRibbonPanel)

//創建"繪圖"面板

bNameValid = strTemp.LoadString(IDS_RIBBON_SHAPE);

ASSERT(bNameValid);

CMFCRibbonPanel* pPanelDraw = pCategoryHome->AddPanel(strTemp, m_PanelImages.ExtractIcon (7));

  1. 添加按鈕(CMFCRibbonButton到面板

//添加VC直線按鈕到"繪圖"面板

bNameValid=strTemp.LoadString(IDS_RIBBON_VCLINE);

ASSERT(bNameValid);

pPanelDraw->Add(new CMFCRibbonButton(ID_DRAW_VCLINE,strTemp,11,2));

//添加BEZIER曲線按鈕到"繪圖"面板

bNameValid=strTemp.LoadString(IDS_RIBBON_BEZIER);

ASSERT(bNameValid);

pPanelDraw->Add(new CMFCRibbonButton(ID_DRAW_BEZIER,strTemp,12,3));

//添加矩形按鈕到"繪圖"面板

bNameValid=strTemp.LoadString(IDS_RIBBON_RECTANGEL);

ASSERT(bNameValid);

pPanelDraw->Add(new CMFCRibbonButton(ID_DRAW_RECTANGLE,strTemp,13,4));

//添加VC圓按鈕到"繪圖"面板

bNameValid=strTemp.LoadString(IDS_RIBBON_VCCIRCLE);

ASSERT(bNameValid);

pPanelDraw->Add(new CMFCRibbonButton(ID_DRAW_VCCIRCLE,strTemp,14,5));

//添加VC橢圓按鈕到"繪圖"面板

bNameValid=strTemp.LoadString(IDS_RIBBON_VCELLIPSE);

ASSERT(bNameValid);

pPanelDraw->Add(new CMFCRibbonButton(ID_DRAW_VCELLIPSE,strTemp,15,6));

//添加多邊形按鈕到"繪圖"面板

bNameValid=strTemp.LoadString(IDS_RIBBON_POLYGON);

ASSERT(bNameValid);

pPanelDraw->Add(new CMFCRibbonButton(ID_DRAW_POLYGON,strTemp,16,7));

//添加畫筆對話框按鈕到"繪圖"面板

bNameValid=strTemp.LoadString(IDS_RIBBON_PENDIALOG);

ASSERT(bNameValid);

pPanelDraw->Add(new CMFCRibbonButton(ID_OPTIONS_PEN,strTemp));

//添加線顏色按鈕到"繪圖"面板

bNameValid=strTemp.LoadString(IDS_RIBBON_COLOR);

ASSERT(bNameValid);

pPanelDraw->Add(new CMFCRibbonButton(ID_OPTIONS_COLOR,strTemp));

//添加填充色按鈕到"繪圖"面板

bNameValid=strTemp.LoadString(IDS_RIBBON_HATCHCOLOR);

ASSERT(bNameValid);

pPanelDraw->Add(new CMFCRibbonButton(ID_OPTIONS_FILLCOLOR,strTemp));

這樣,按鈕就添加到工具欄中了,具體可以查看源代碼

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