ribbon开发Word下载.docx
《ribbon开发Word下载.docx》由会员分享,可在线阅读,更多相关《ribbon开发Word下载.docx(20页珍藏版)》请在冰豆网上搜索。
在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控件的事件处理程序函数,请输入以下代码:
voidCMainFrame:
OnDisableCheckbox()
{
m_bChecked=!
m_bChecked;
}
OnUpdateDisableCheckbox(CCmdUI*pCmdUI)
pCmdUI->
SetCheck(!
m_bChecked);
3.还必须更新MainFrm.cpp中的按钮对象的事件处理程序函数,如下所示:
OnUpdateDisableObject(CCmdUI*pCmdUI)
Enable(m_bChecked);
4.编译并运行应用程序。
如果选择“DisableObjectButton”复选框,则“Object”按钮将被禁用,如图3-3所示。
图3-3
任务3-显示当前选定的组合框项目。
1.更新MainFrm.cpp中的函数,以便在从组合框中的下拉列表中选择项目时显示一个消息框:
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"
}
else
MessageBox(_T("
PleaseselectoneitemfromdroplistofComboBox."
),_T("
2.编译并运行应用程序。
3.从组合框中选择一个项目,然后单击“MessageBox”按钮。
将显示一个消息框,如下图3-4所示。
图3-4
任务4-在按钮按下时绘制一个矩形视图
1.Home类别上的Rectangle面板包含一个Draw按钮(如图3-1)。
在RibbonAppDoc.app中更新以下函数,如下所示,以便单击Draw按钮时将绘制矩形。
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”后,如下所示:
//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)的函数,如下所示:
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()。
OnFontColor()
3.更新voidCRibbonAppView:
OnDraw(CDC*pDC)函数,将行“brush.CreateSolidBrush(RGB(255,0,222))”更改为以下内容:
brush.CreateSolidBrush(pDoc->
GetColor())
5.单击Draw按钮,并从Color组合框中选择Yellow,查看新的用户界面,如图3-6所示。
图3-6
任务6-移动滑块以放大矩形
1.更新CRibbonAppDoc.cpp中的帮助程序函数doubleCRibbonAppDoc:
GetSliderFactor(void),如下所示:
//Returnthefactorofzoomingtherectangle
doubleCRibbonAppDoc:
GetSliderFactor(void)
//Getapointertotheribbonbar
CMFCRibbonSlider*pSlider=DYNAMIC_DOWNCAST(
CMFCRibbonSlider,pRibbon->
FindByID(ID_RECT_SLIDER));
//Getcurrentposition
intposition=pSlider->
GetPos();
return(double)position/(double)pSlider->
GetRangeMax();
2.UpdatetheeventhandlerfunctionoftheSliderasfollows:
OnRectSlider()
if(GetAsyncKeyState(VK_LBUTTON)==0)
OnDraw(CDC*pDC)函数以启用滑块功能。
brush.CreateSolidBrush(pDoc->
GetColor()))
doublefactor=pDoc->
GetSliderFactor();
if(factor)
width=width*factor;
height=height*factor;
5.单击Draw按钮,然后移动滑块。
当滑块移动时,矩形将使用一个缩放系数重新调整大小,如图3-7所示。
图3-7
此练习结束时,使用EX03_Starter\Begin\RibbonApp\RibbonApp.sln生成的应用程序应该与使用EX03_Starter\End\RibbonApp\RibbonApp.sln生成的应用程序一样。
总结
我们已经成功完成了MFC功能区的介绍教程。
我们了解��新的MFC功能区框架如何帮助您快速、轻松地使用MFC向导和RibbonDesigner创建功能区应用程序。