中文字幕二区_国产精品免费在线观看_黄色网站观看_人人草人人澡_日本真实娇小xxxx

您的位置: 首頁(yè) > 技術(shù)文檔 > 網(wǎng)絡(luò)編程 > Visual C++ 2010創(chuàng)建Ribbon界面
vs2010 建模學(xué)習(xí)(1):什么是DGML 回到列表 軟件開發(fā)之魔杖VS 2010
 Visual C++ 2010創(chuàng)建Ribbon界面

作者: 時(shí)間: 2010-05-07 文檔類型:原創(chuàng) 來自:藍(lán)色理想

第 1 頁(yè) Visual C++ 2010創(chuàng)建Ribbon界面 [1]
第 2 頁(yè) Visual C++ 2010創(chuàng)建Ribbon界面 [1]

Ribbon界面的構(gòu)成

為了支持新的界面風(fēng)格的開發(fā),MFC提供了很多新的、經(jīng)過擴(kuò)展過后的應(yīng)用程序類,界面類等。例如在我們的實(shí)例程序中用到的CRibbonApp,CMainFrame就是分別從CWinAppEx,CMDIFrameWndEx派生的。而CWinAppEx和CMDIFrameWndEx又是從傳統(tǒng)的CWinApp和CMDIFrameWnd派生,在原有類的基礎(chǔ)上,添加了對(duì)新的界面風(fēng)格的支持。
熟悉MFC界面開發(fā)的朋友都知道,應(yīng)用程序的CMainFrame類負(fù)責(zé)整個(gè)主框架界面的創(chuàng)建和管理,在傳統(tǒng)的菜單式界面下,它負(fù)責(zé)創(chuàng)建和管理菜單欄,狀態(tài)欄,工具欄等。同樣的,在Ribbon界面下,它同樣負(fù)責(zé)Ribbon界面的創(chuàng)建和管理。

class CMainFrame : public CMDIFrameWndEx
{
DECLARE_DYNAMIC(CMainFrame)
public:
CMainFrame();
// Attributes
public:
// Operations
public:
// Overrides
public:
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
// Implementation
public:
virtual ~CMainFrame();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected: // control bar embedded members
CMFCRibbonBar m_wndRibbonBar;
CMFCRibbonApplicationButton m_MainButton;
CMFCToolBarImages m_PanelImages;
CMFCRibbonStatusBar m_wndStatusBar;
// Generated message map functions
protected:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnWindowManager();
afx_msg void OnApplicationLook(UINT id);
afx_msg void OnUpdateApplicationLook(CCmdUI* pCmdUI);
DECLARE_MESSAGE_MAP()
void InitializeRibbon();
};

從上面的代碼中我們可以看到,在Ribbon界面下,CMainFrame類包含了三個(gè)成員變量:m_wndRibbonBar、m_MainButton、m_wndStatusBar,分別用于控制Ribbon界面的命令面板,應(yīng)用程序按鈕和狀態(tài)欄。清楚了各個(gè)變量對(duì)應(yīng)的Ribbon界面元素后,我們就可以操作相應(yīng)的成員變量,在Ribbon界面上添加我們需要的內(nèi)容。

Ribbon界面的構(gòu)成

處理菜單資源和消息響應(yīng)函數(shù)

Ribbon界面相對(duì)于傳統(tǒng)的菜單式界面,最大的差別就是用新的Ribbon Bar代替了傳統(tǒng)的菜單欄。我們可以看到,在默認(rèn)情況下,Ribbon Bar已經(jīng)擁有了一個(gè)名為“Home”的命令分組(Category),其中又包含了多個(gè)面板(Panel),每個(gè)面板中有一個(gè)或者多個(gè)命令按鈕(Ribbon Button)。下面我們就來看看如何在Ribbon Bar上添加一個(gè)新的命令分組,然后在其中添加新的命令按鈕以執(zhí)行相應(yīng)的功能。
按照傳統(tǒng)的菜單式界面的開發(fā)流程,我們總是先編輯菜單資源,然后再創(chuàng)建相應(yīng)的菜單命令消息響應(yīng)函數(shù),最后再實(shí)現(xiàn)這個(gè)消息響應(yīng)函數(shù),完成相應(yīng)的任務(wù)。在新的Ribbon界面中,我們還是先要按照這樣的流程,完成菜單資源的編輯,實(shí)現(xiàn)消息響應(yīng)函數(shù)等。所以,我們先打開Visual Studio 2010的資源編輯器,在IDR_RibbonUITYPE菜單資源中添加兩個(gè)新的菜單項(xiàng)。

編輯菜單資源

然后,我們分別為這兩個(gè)菜單項(xiàng)添加相應(yīng)的消息響應(yīng)函數(shù):

添加消息響應(yīng)函數(shù)

這里,我們只是演示Ribbon界面的創(chuàng)建,所以我們將這兩個(gè)消息響應(yīng)函數(shù)簡(jiǎn)單地實(shí)現(xiàn)如下:

// CRibbonUIView message handlers
void CRibbonUIView::OnEditSayhello()
{
// TODO: Add your command handler code here
AfxMessageBox(_T("Hello RibbonUI!"));
}
void CRibbonUIView::OnEditSaygoodbye()
{
// TODO: Add your command handler code here
AfxMessageBox(_T("Goodbye RibbonUI!"));
}

添加Ribbon按鈕

到現(xiàn)在為止,我們已經(jīng)按照菜單式界面的開發(fā)流程,完成了資源的編輯和消息函數(shù)的實(shí)現(xiàn)。如果這時(shí)我們編譯運(yùn)行解決方案,我們?cè)诔绦蚪缑嫔峡床坏饺魏巫兓驗(yàn)槲覀冞沒有把這些命令綁定到Ribbon Bar的命令按鈕上。在CMainFrame類中,它提供了一個(gè)專門的函數(shù)CMainFrame::InitializeRibbon()來完成Ribbon界面的初始化工作,所以,我們?cè)谶@個(gè)函數(shù)中添加如下代碼,創(chuàng)建新的命令分組,然后將命令按鈕映射到我們剛剛創(chuàng)建的菜單項(xiàng)。

void CMainFrame::InitializeRibbon(){
BOOL bNameValid;
///…
//////////////////////////////////////////////////////////////
// 添加一個(gè)命令分組(Category)“RibbonUI Category”
CMFCRibbonCategory *pRibbonUICategory =
m_wndRibbonBar.AddCategory(_T("RibbonUI Category"),
IDB_WRITESMALL, IDB_WRITELARGE);
// 添加一個(gè)面板(Panel)
CMFCRibbonPanel *pTestPanel = pRibbonUICategory->AddPanel(_T("RibbonUI Panel"), m_PanelImages.ExtractIcon(1));
// 在面板上添加Ribbon命令按鈕(CMFCRibbonButton)
pTestPanel->Add(new CMFCRibbonButton(ID_EDIT_SAYHELLO, _T("Say Hello"), 0, 0));
pTestPanel->Add(new CMFCRibbonButton(ID_EDIT_SAYHELLO, _T("Say Hello"), 1));
pTestPanel->Add(new CMFCRibbonButton(ID_EDIT_SAYGOODBYE, _T("Say Goodbye"), 2));
//////////////////////////////////////////////////////////////
///…
}

在這段代碼中,我們首先利用Ribbon Bar的AddCategory()函數(shù),添加了一個(gè)新的命令分組(Category),也就是Ribbon Bar上的一個(gè)新的標(biāo)簽頁(yè)。然后,我們?cè)谶@個(gè)新創(chuàng)建的標(biāo)簽頁(yè)中,添加了一個(gè)新的面板(Panel)。最后,我們創(chuàng)建了三個(gè)Ribbon命令按鈕(CMFCRibbonButton),并將它們放置到面板中。通過指定跟菜單資源中的菜單項(xiàng)相同的資源ID,我們將這些Ribbon命令按鈕跟我們之前創(chuàng)建的菜單項(xiàng)一一對(duì)應(yīng)起來。當(dāng)我們點(diǎn)擊某個(gè)Ribbon命令按鈕時(shí),就會(huì)執(zhí)行相應(yīng)的菜單命令響應(yīng)函數(shù)。這樣,我們就實(shí)現(xiàn)了菜單命令在Ribbon Bar的綁定,同時(shí)在界面上也能看到我們剛剛添加的命令按鈕了。

新創(chuàng)建的命令按鈕

在這里,我們只是簡(jiǎn)單地向大家介紹了Ribbon界面的基本概念和大致的開發(fā)流程,要想開發(fā)跟Office 2007一樣專業(yè)的Ribbon界面,我們還有很長(zhǎng)的一段路要走。

本文鏈接:http://m.95time.cn/tech/program/2010/7579.asp 

出處:藍(lán)色理想
責(zé)任編輯:bluehearts

上一頁(yè) Visual C++ 2010創(chuàng)建Ribbon界面 [1] 下一頁(yè)

◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論

作者文章 更多作者文章
vs2010 建模學(xué)習(xí)(1):什么是DGML
谷歌啟用全新Logo
HTML5拿什么取代Flash?
MSDN for VS2010的那些麻煩事
同時(shí)裝VS2010 RC和ASP.NET MVC2 RC2
關(guān)鍵字搜索 常規(guī)搜索 推薦文檔
熱門搜索:CSS Fireworks 設(shè)計(jì)比賽 網(wǎng)頁(yè)制作 web標(biāo)準(zhǔn) 用戶體驗(yàn) UE photoshop Dreamweaver Studio8 Flash 手繪 CG
站點(diǎn)最新 站點(diǎn)最新列表
周大!熬•自然”設(shè)計(jì)大賽開啟
國(guó)際體驗(yàn)設(shè)計(jì)大會(huì)7月將在京舉行
中國(guó)國(guó)防科技信息中心標(biāo)志征集
云計(jì)算如何讓安全問題可控
云計(jì)算是多數(shù)企業(yè)唯一擁抱互聯(lián)網(wǎng)的機(jī)會(huì)
阿里行云
云手機(jī)年終巨獻(xiàn),送禮標(biāo)配299起
阿里巴巴CTO王堅(jiān)的"云和互聯(lián)網(wǎng)觀"
1499元買真八核 云OS雙蛋大促
首屆COCO桌面手機(jī)主題設(shè)計(jì)大賽
欄目最新 欄目最新列表
淺談JavaScript編程語(yǔ)言的編碼規(guī)范
如何在illustrator中繪制臺(tái)歷
Ps簡(jiǎn)單繪制一個(gè)可愛的鉛筆圖標(biāo)
數(shù)據(jù)同步算法研究
用ps作簡(jiǎn)單的作品展示頁(yè)面
CSS定位機(jī)制之一:普通流
25個(gè)最佳最閃亮的Eclipse開發(fā)項(xiàng)目
Illustrator中制作針線縫制文字效果
Photoshop制作印刷凹凸字體
VS2010中創(chuàng)建自定義SQL Rule
>> 分頁(yè) 首頁(yè) 前頁(yè) 后頁(yè) 尾頁(yè) 頁(yè)次:2/2頁(yè) 1個(gè)記錄/頁(yè) 轉(zhuǎn)到 頁(yè) 共2個(gè)記錄

藍(lán)色理想版權(quán)申明:除部分特別聲明不要轉(zhuǎn)載,或者授權(quán)我站獨(dú)家播發(fā)的文章外,大家可以自由轉(zhuǎn)載我站點(diǎn)的原創(chuàng)文章,但原作者和來自我站的鏈接必須保留(非我站原創(chuàng)的,按照原來自一節(jié),自行鏈接)。文章版權(quán)歸我站和作者共有。

轉(zhuǎn)載要求:轉(zhuǎn)載之圖片、文件,鏈接請(qǐng)不要盜鏈到本站,且不準(zhǔn)打上各自站點(diǎn)的水印,亦不能抹去我站點(diǎn)水印。

特別注意:本站所提供的攝影照片,插畫,設(shè)計(jì)作品,如需使用,請(qǐng)與原作者聯(lián)系,版權(quán)歸原作者所有,文章若有侵犯作者版權(quán),請(qǐng)與我們聯(lián)系,我們將立即刪除修改。

您的評(píng)論
用戶名:  口令:
說明:輸入正確的用戶名和密碼才能參與評(píng)論。如果您不是本站會(huì)員,你可以注冊(cè) 為本站會(huì)員。
注意:文章中的鏈接、內(nèi)容等需要修改的錯(cuò)誤,請(qǐng)用報(bào)告錯(cuò)誤,以利文檔及時(shí)修改。
不評(píng)分 1 2 3 4 5
注意:請(qǐng)不要在評(píng)論中含與內(nèi)容無關(guān)的廣告鏈接,違者封ID
請(qǐng)您注意:
·不良評(píng)論請(qǐng)用報(bào)告管理員,以利管理員及時(shí)刪除。
·尊重網(wǎng)上道德,遵守中華人民共和國(guó)的各項(xiàng)有關(guān)法律法規(guī)
·承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
·本站評(píng)論管理人員有權(quán)保留或刪除其管轄評(píng)論中的任意內(nèi)容
·您在本站發(fā)表的作品,本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用
·參與本評(píng)論即表明您已經(jīng)閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評(píng)論文檔 | 報(bào)告錯(cuò)誤  
專業(yè)書推薦 更多內(nèi)容
網(wǎng)站可用性測(cè)試及優(yōu)化指南
《寫給大家看的色彩書1》
《跟我去香港》
眾妙之門—網(wǎng)站UI 設(shè)計(jì)之道
《Flex 4.0 RIA開發(fā)寶典》
《贏在設(shè)計(jì)》
犀利開發(fā)—jQuery內(nèi)核詳解與實(shí)踐
作品集 更多內(nèi)容

雜⑦雜⑧ Gold NORMANA V2