ribbon开发.docx

上传人:b****6 文档编号:7260337 上传时间:2023-01-22 格式:DOCX 页数:20 大小:909.83KB
下载 相关 举报
ribbon开发.docx_第1页
第1页 / 共20页
ribbon开发.docx_第2页
第2页 / 共20页
ribbon开发.docx_第3页
第3页 / 共20页
ribbon开发.docx_第4页
第4页 / 共20页
ribbon开发.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

ribbon开发.docx

《ribbon开发.docx》由会员分享,可在线阅读,更多相关《ribbon开发.docx(20页珍藏版)》请在冰豆网上搜索。

ribbon开发.docx

ribbon开发

本教程适用于正在开发桌面应用程序并希望利用新的MFC功能区框架优势的MFC开发人员。

通过本教程的步骤,您将了解如何将默认的功能区添加到一个小应用程序中,在RibbonDesigner中编辑各个功能区控件,然后在运行时使用控件。

您将看到通过MFC功能区框架编辑和使用功能区控件非常轻松。

在本教程中,将完成在应用程序中添加和自定义基本功能区的所有必要步骤。

本教程涉及实时编译代码并从此文档中复制代码。

如果发生复制错误(或任何其他问题)无法编译应用程序,可以在本教程的程序包中找到全部完成的示例,以及每个练习的最终源代码。

这些示例可用于解决编译错误。

先决条件

您必须拥有以下内容才能完成本实验:

•MicrosoftVisualStudio2010Beta2(或更高版本)

•Windows7

学习目标

在完成本教程时,您将了解如何:

•在VisualStudio2010中为应用程序创建默认的功能区

•在RibbonDesigner中添加功能区控件,如按钮、复选框和区块

•在RibbonDesigner中为功能区控件添加事件处理程序函数

•在运行时使用功能区控件

练习1:

在应用程序中创建默认功能区

在本练习中,将开始在VisualStudio2010中从头创建一个Windows7风格的带有功能区的MFC应用程序。

您不必编写任何代码来执行这些操作。

只需单击,单击,再单击!

任务1-在VisualStudio2010中创建新的带有功能区的MFC项目

1.在VisualStudio2010中,使用MFCApplicationWizard创建一个具有默认功能区的MFC应用程序。

要运行向导,请在File菜单上,指向New,然后选择Project。

将会显示NewProject对话框。

2.在NewProject对话框中,展开ProjectTypes窗格中的VisualC++节点,然后选择MFC。

在Templates窗格中,选择MFCApplication。

键入项目名称,如RibbonApp,然后单击OK。

请参阅图1-1。

将显示MFApplicationWizard。

图1-1

3.在ApplicationType窗格中,将ProjectStyle更改为Office,然后将VisualStyleandColors更改为“Windows7”。

其他保持不变,然后单击Next。

请参考图1-2。

图1-2

4.将CompoundDocumentSupport设置保留为默认值(即选中“None”复选框)。

请参考图1-3。

图1-3

5.在DocumentTemplateStrings窗格中,保留所有默认值。

请参考图1-4。

图1-4

6.在DatabaseSupport窗格中,保留所有默认设置,(应选中“None”)。

单击“下一步”。

请参考图1-5。

图1-5

7.在UserInterfaceFeatures窗格中,确保选中UseaRibbon选项。

单击“下一步”。

请参考图1-6。

图1-6

8.在AdvancedFeatures窗格中,清除所有选项。

单击“下一步”。

请参考图1-7。

图1-7

9.在GeneratedClasses窗格中,保留所有默认设置。

请参考图1-8。

图1-8

10.要生成应用程序,请在Build菜单上选择BuildSolution。

如果应用程序成功生成,请从Debug菜单中运行StartDebugging。

向导将自动创建具有一个功能区类别名称为Home的Windows7风格的功能区。

此类别包含3个功能区面板,命名为Clipboard、View和Window。

请参考图1-9。

图1-9

练习2:

向现有功能区添加简单的控件

VisualStudio2010有一项新功能,称为MFC应用程序的RibbonDesigner,它可以方便地将任何功能区控件添加到应用程序中并进行编辑。

在本练习中,将学习如何将控件拖到RibbonDesigner中,以及如何轻松添加事件处理程序。

在本练习中,您将使用EX02_Starter\Begin\RibbonApp文件夹中的RibbonApp解决方案。

任务1-向现有功能区添加简单控件

1.在VisualStudio2010中启动RibbonApp.sln。

2.在Resource视图中,展开RibbonApp.rc->Ribbon->IDR_RIBBON节点。

双击该文件以打开RibbonDesigner。

ResourceView面板、RibbonBarDesigner面板和Toolbox面板如图2-1所示。

图2-1

3.将一个Category控件从工具箱拖入到RibbonBar。

在设计器中,会看到一个名为“Category1”的类别,并在Category1中有一个名为“Panel1”的面板。

从工具箱中将两个Button控件拖放到“Panel1”。

默认情况下,按钮名称为“Button1”和“Button2”。

功能区栏具有了一个新的外观,如图2-2所示。

图2-2

4.右键单击“Category1”,并选择Properties,打开Properties窗口。

如图2-3所示,在Property窗口中,可以轻松地将标题重命名为“MyCategory”,并编辑其他属性。

在Property窗口中,从“LargeImages”下拉列表中选择“IDB_WRITELARGE”,并从“SmallImages”下拉列表中选择“IDB_WRITESMALL”。

它定义了在这个类别中的元素的图像集合。

图2-3

5.打开刚才创建的按钮的Properties窗口,并更改标题为“MyButton”和“MyChoice”。

要为按钮添加图像,请打开“MyChoice”的属性窗口,然后单击“LargeImageIndex”(当选择值字段时,会看到Browse按钮,允许浏览图像集合)。

单击Browse按钮,将会弹出ImageCollection对话框。

选择“0”并编辑其他属性,如图2-4所示。

将LargeImageIndex的值更改为“0”以便为“MyButton”添加图像。

图2-4

6.测试功能区,方法是单击工具栏上的“TestRibbon”按钮,如图2-5所示。

图2-5

7.编译并运行应用程序。

现在,它具有如图2-6所示的新外观。

创建的两个按钮(“MyChoice”和“MyButton”)是默认禁用的。

按钮将在为它们添加了单击事件处理程序���启用。

图2-6

任务2-向控件添加事件处理程序

1.在RibbonDesigner中添加事件处理程序非常简单。

右键单击“MyButton”按钮控件,并选择“AddEventHandler”。

将打开EventHandlerWizard。

选择“Command”消息类型并从类列表中选择“CMainFrame”,如图2-7所示。

图2-7

2.单击“AddandEdit”。

向导将自动生成的一些函数,然后打开源代码编辑器。

在这里,将看到MainFrm.cpp中的空函数CMainFrame:

:

OnMyButton()。

3.在Mainfrm.cpp中的函数OnMyButton()中添加下面的代码行。

C++

MessageBox(TEXT("ThisisMyButton!

"),TEXT("MyButton"),MB_OK);

4.编译并运行解决方案。

应用程序将具有包含一个类别和两个按钮的功能区。

点击“MyButton”按钮,测试应用程序,如图2-8所示。

图2-8

练习3:

向现有功能区添加和使用更多控件

练习1展示了如何使用MFC向导创建带有默认功能区的应用程序。

练习2展示了如何使用RibbonDesigner轻松添加或修改功能区控件。

这次演示将展示有关功能区控件的更多信息,并集中讨论如何在运行时使用按钮、复选框、滑块和组合框MFC功能区控件。

任务1-生成现有功能区应用程序以查看功能区控件

1.打开EX03_Starter\Begin\RibbonApp文件夹中的RibbonApp解决方案

2.在Build菜单上,单击RebuildSolution。

3.在Debug菜单上,单击StartDebugging。

4.将打开如图3-1所示的应用程序。

这里显示的所有功能区控件均使用RibbonDesigner创建。

(练习2展示了如何使用RibbonDesigner。

图3-1

5.单击“MyCategory”选项卡,将看到功能区的变化,如图3-2所示。

图3-2

帮助:

为了方便,一些变量和函数(如事件处理程序函数和帮助程序函数)已经在此项目中声明和定义,所以在以下任务中只需集中进行实现。

任务2-在运行时禁用和启用按钮

1.可以添加代码来手动禁用或启用一个按钮。

如图3-2所示,MyCategory的Disable面板包括一个复选框和一个按钮。

可以通过选中或清除该复选框来触发事件。

选择复选框将禁用Object按钮。

这些变量已经声明,一些必要的函数也已经就绪。

2.要在MainFrm.cpp中更新CheckBox控件的事件处理程序函数,请输入以下代码:

C++

voidCMainFrame:

:

OnDisableCheckbox()

{

m_bChecked=!

m_bChecked;

}

voidCMainFrame:

:

OnUpdateDisableCheckbox(CCmdUI*pCmdUI)

{

pCmdUI->SetCheck(!

m_bChecked);

}

3.还必须更新MainFrm.cpp中的按钮对象的事件处理程序函数,如下所示:

C++

voidCMainFrame:

:

OnUpdateDisableObject(CCmdUI*pCmdUI)

{

pCmdUI->Enable(m_bChecked);

}

4.编译并运行应用程序。

如果选择“DisableObjectButton”复选框,则“Object”按钮将被禁用,如图3-3所示。

图3-3

任务3-显示当前选定的组合框项目。

1.更新MainFrm.cpp中的函数,以便在从组合框中的下拉列表中选择项目时显示一个消息框:

C++

voidCMainFrame:

:

OnComboMessage()

{

CMFCRibbonComboBox*pFontComboBox=DYNAMIC_DOWNCAST(

CMFCRibbonComboBox,m_wndRibbonBar.FindByID(ID_COMBO_BOX));

//Gettheselectedindex

intnCurSel=pFontComboBox->GetCurSel();

if(nCurSel>=0)

{

CStringitem=pFontComboBox->GetItem(nCurSel);

CStringsMessage=_T("");

sMessage.Format(_T("CurrentSelectedItemis\"%s\"."),item);

MessageBox(sMessage,_T("ComboBoxItem"),MB_OK);

}

else

{

MessageBox(_T("PleaseselectoneitemfromdroplistofComboBox."),_T("ComboBoxItem"),MB_OK);

}

}

2.编译并运行应用程序。

3.从组合框中选择一个项目,然后单击“MessageBox”按钮。

将显示一个消息框,如下图3-4所示。

图3-4

任务4-在按钮按下时绘制一个矩形视图

1.Home类别上的Rectangle面板包含一个Draw按钮(如图3-1)。

在RibbonAppDoc.app中更新以下函数,如下所示,以便单击Draw按钮时将绘制矩形。

C++

CRibbonAppDoc:

:

CRibbonAppDoc()

{

//TODO:

addone-timeconstructioncodehere

m_bDraw=FALSE;

}

boolCRibbonAppDoc:

:

EnableDraw(void)

{

returnm_bDraw;

}

voidCRibbonAppDoc:

:

OnRectDraw()

{

m_bDraw=TRUE;

UpdateAllViews(NULL);

}

2.将以下行添加到RibbonAppView.cppvoidCRibbonAppView:

:

OnDraw(CDC*pDC)函数的注释“//TODO:

adddrawcodefornativedatahere”后,如下所示:

C++

//Drawarectangle

CRectclient;

CBrushbrush;

GetWindowRect(&client);

if(pDoc->EnableDraw()&&brush.CreateSolidBrush(RGB(255,0,222)))

{

intwidth=client.Width()/2;//tomakeitsmaller

intheight=client.Height()/2;

CRectrect=CRect(0,0,width,height);

pDC->FillRect(rect,&brush);

}

3.编译并运行解决方案。

单击Draw按钮查看应用程序,如图3-5所示。

图3-5

任务5-更改矩形的颜色

1.Font面板中的Color组合框控制矩形的颜色。

要启用Color控件,请实现CRibbonAppDoc.cpp中名为CRibbonAppDoc:

:

GetColor(void)的函数,如下所示:

C++

COLORREFCRibbonAppDoc:

:

GetColor(void)

{

CMFCRibbonBar*pRibbon=((CMDIFrameWndEx*)AfxGetMainWnd())->GetRibbonBar();

ASSERT_VALID(pRibbon);

CMFCRibbonColorButton*pColor=DYNAMIC_DOWNCAST(

CMFCRibbonColorButton,pRibbon->FindByID(ID_FONT_COLOR));

//Gettheselectedcolor

returnpColor->GetColor();

}

2.更新CRibbonAppDoc.cpp中的事件处理程序函数CRibbonAppDoc:

:

OnFontColor()。

C++

voidCRibbonAppDoc:

:

OnFontColor()

{

UpdateAllViews(NULL);

}

3.更新voidCRibbonAppView:

:

OnDraw(CDC*pDC)函数,将行“brush.CreateSolidBrush(RGB(255,0,222))”更改为以下内容:

C++

brush.CreateSolidBrush(pDoc->GetColor())

4.编译并运行应用程序。

5.单击Draw按钮,并从Color组合框中选择Yellow,查看新的用户界面,如图3-6所示。

图3-6

任务6-移动滑块以放大矩形

1.更新CRibbonAppDoc.cpp中的帮助程序函数doubleCRibbonAppDoc:

:

GetSliderFactor(void),如下所示:

C++

//Returnthefactorofzoomingtherectangle

doubleCRibbonAppDoc:

:

GetSliderFactor(void)

{

//Getapointertotheribbonbar

CMFCRibbonBar*pRibbon=((CMDIFrameWndEx*)AfxGetMainWnd())->GetRibbonBar();

ASSERT_VALID(pRibbon);

CMFCRibbonSlider*pSlider=DYNAMIC_DOWNCAST(

CMFCRibbonSlider,pRibbon->FindByID(ID_RECT_SLIDER));

//Getcurrentposition

intposition=pSlider->GetPos();

return(double)position/(double)pSlider->GetRangeMax();

}

2.UpdatetheeventhandlerfunctionoftheSliderasfollows:

C++

voidCRibbonAppDoc:

:

OnRectSlider()

{

if(GetAsyncKeyState(VK_LBUTTON)==0)

{

UpdateAllViews(NULL);

}

}

3.更新voidCRibbonAppView:

:

OnDraw(CDC*pDC)函数以启用滑块功能。

C++

if(pDoc->EnableDraw()&&brush.CreateSolidBrush(pDoc->GetColor()))

{

intwidth=client.Width()/2;//tomakeitsmaller

intheight=client.Height()/2;

doublefactor=pDoc->GetSliderFactor();

if(factor)

{

width=width*factor;

height=height*factor;

}

CRectrect=CRect(0,0,width,height);

pDC->FillRect(rect,&brush);

}

4.编译并运行应用程序。

5.单击Draw按钮,然后移动滑块。

当滑块移动时,矩形将使用一个缩放系数重新调整大小,如图3-7所示。

图3-7

帮助:

此练习结束时,使用EX03_Starter\Begin\RibbonApp\RibbonApp.sln生成的应用程序应该与使用EX03_Starter\End\RibbonApp\RibbonApp.sln生成的应用程序一样。

总结

我们已经成功完成了MFC功能区的介绍教程。

我们了解��新的MFC功能区框架如何帮助您快速、轻松地使用MFC向导和RibbonDesigner创建功能区应用程序。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 动物植物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1