第12章 设计用户界面.ppt
《第12章 设计用户界面.ppt》由会员分享,可在线阅读,更多相关《第12章 设计用户界面.ppt(143页珍藏版)》请在沃文网上搜索。
1、第第1212章章 设计用户界面设计用户界面第第1212章章 设计用户界面设计用户界面12.1 菜单和加速键菜单和加速键12.2 工具栏工具栏12.3 状态栏状态栏12.4 对话框栏对话框栏12.5 ReBar栏栏 12.6 通用对话框通用对话框习题习题 第第1212章章 设计用户界面设计用户界面12.1 菜单和加速键菜单和加速键12.1.1 使用菜单使用菜单1编辑菜单资源编辑菜单资源编辑由AppWizard自动生成的菜单资源,进行如下操作:(1)选择项目工作区的ResourceView标签,切换到资源视图。(2)选择菜单资源类型。(3)双击菜单资源IDR_MAINFRAME,将弹出菜单编辑窗口
2、。(4)编辑当前菜单。第第1212章章 设计用户界面设计用户界面删除:要删除某个菜单项或弹出菜单,可用鼠标单击该菜单或用上下光标键来回选择,然后按Del键删除。插入:如果插入新菜单项,可选定窗口中的空白菜单框后按回车。也可以在选择一个已有的菜单项时按Ins键,在该菜单项上方插入一个空白菜单项,然后双击该菜单项,将弹出Properties对话框,如图12-1所示。第第1212章章 设计用户界面设计用户界面图12-1菜单编辑器和属性对话框第第1212章章 设计用户界面设计用户界面调整:VisualStudio支持鼠标拖曳来调整菜单项位置。要调整菜单项位置,只需要选中某菜单项并将其拖至适当位置即可。
3、各菜单项属性设置如下:IDCaptionPromptID_TEST_HELLO&HelloSayhellotoyou!ID_COLOR_RED&RedThecolorisRed.ID_COLOR_GREEN&GreenThe color isGreenID_COLOR_BLUE&BlueThecolorisBlue第第1212章章 设计用户界面设计用户界面2处理菜单项定义命令函数处理菜单项定义命令函数操作如下:(1)从View菜单中选择ClassWizard,DeveloperStudio将弹出MFCClassWizard对话框,如图12-2所示。第第1212章章 设计用户界面设计用户界面图1
4、2-2用ClassWizard增加菜单消息成员函数映射第第1212章章 设计用户界面设计用户界面(2)选择MessageMaps标签,在Classname下拉列表中选择CMainFrame类。(3)双击Memberfunctions列表中的OnTestHello,编辑OnTestHello成员函数(同理可编辑OnColorRed、OnColorGreen和OnColorBlue函数)。在OnTestHello成员函数体中加入语句如下:void CMainFrame:OnTestHello()/TODO:Add your command handler code hereAfxMessageBo
5、x(Hello!);第第1212章章 设计用户界面设计用户界面另外,在CHelloView:OnDraw(CDC*pDC)加入代码如下:voidCHelloView:OnDraw(CDC*pDC)CHelloDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);/TODO:adddrawcodefornativedataherepDc-TextOut(0,0,Hello!);第第1212章章 设计用户界面设计用户界面下面再来编写OnColorRed、OnColorGreen和OnColorBlue三个函数。首先双击CMainFrame类名,在MainFrm.h中加
6、入数据成员,如下所示:classCMainFrame:publicCFrameWnd/Attributespublic:intm_nColor;enumRED=0,GREEN=1,BLUE=3;第第1212章章 设计用户界面设计用户界面加入数据成员后,还要对它进行初始化,初始化工作在CMainFrame()构造函数中完成。CMainFrame:CMainFrame()/TODO:addmemberinitializationcodeherem_nColor=RED;OnColorRed、OnColorGreen和OnColorBlue三个函数修改后的程序清单如下:voidCMainFrame:
7、OnColorRed()第第1212章章 设计用户界面设计用户界面/TODO:Addyourcommandhandlercodeherem_nColor=RED;AfxMessageBox(ThecolorisRed.);voidCMainFrame:OnColorGreen()/TODO:Addyourcommandhandlercodeherem_nColor=GREEN;AfxMessageBox(ThecolorisGreen.);第第1212章章 设计用户界面设计用户界面voidCMainFrame:OnColorBlue()/TODO:Addyourcommandhandlerco
8、deherem_nColor=BLUE;AfxMessageBox(ThecolorisBlue.);第第1212章章 设计用户界面设计用户界面3更新命令用户界面消息1)更新机制MFC应用程序框架引入了更新命令用户界面消息来专门解决这一问题。那么更新命令用户界面是如何工作的呢?对于每一个菜单项,将对应如下两种消息(参看图12-2):lCOMMAND;l UPDATE_COMMAND_UI。第第1212章章 设计用户界面设计用户界面2)用户界面更新机制编程操作如下:(1)激活ClassWizard,选择MessageMap标签。(2)在ObjectIDs列表中选择ID_COLOR_RED,在Me
9、ssages列表中双击UPDATE_COMMAND_UI条目,弹出AddMemberFunction对话框,单击OK按钮接收默认函数名为OnUpdateColorRed。第第1212章章 设计用户界面设计用户界面(3)编辑接口更新成员函数,程序清单如下所示:voidCMainFrame:OnUpdateColorRed(CCmdUI*pCmdUI)/TODO:Add your command update UIhandlercodeherepCmdUI-SetCheck(m_nColor=RED);第第1212章章 设计用户界面设计用户界面voidCMainFrame:OnUpdateColo
10、rGreen(CCmdUI*pCmdUI)/TODO:AddyourcommandupdateUIhandlercodeherepCmdUI-SetCheck(m_nColor=GREEN);voidCMainFrame:OnUpdateColorBlue(CCmdUI*pCmdUI)/TODO:AddyourcommandupdateUIhandlercodeherepCmdUI-SetCheck(m_nColor=BLUE);第第1212章章 设计用户界面设计用户界面现在编译运行Hello程序。当我们打开Test菜单时,如图12-3所示,在Red菜单项前已经打了一个钩。第第1212章章 设
11、计用户界面设计用户界面图12-3Hello程序运行结果第第1212章章 设计用户界面设计用户界面12.1.2 定义加速键定义加速键具体操作如下:(1)将项目工作区切换到资源视图,选择Accelerator资源类型,双击IDR_MAINFRAME加速键资源,打开加速键编辑窗口。(2)编辑加速键资源。在ID下拉列表框中选择AFX_ID_COLOR_RED,在Key一栏中输入R,选择Ctrl复选框和VirtKey单选按钮,以完成加速键设置,如图12-4所示。(3)关闭加速键编辑窗口。第第1212章章 设计用户界面设计用户界面图12-4加速键编辑窗口第第1212章章 设计用户界面设计用户界面12.2
12、工具栏工具栏12.2.1 工具栏类的结构及其方法工具栏类的结构及其方法CToolBar是由CControlBar类派生的,它在MFC类库中的层次位置如图12-5所示。第第1212章章 设计用户界面设计用户界面图12-5CToolBar类在MFC类库中的层次位置第第1212章章 设计用户界面设计用户界面下面是CToolBar类的定义:classCToolBar:publicCControlBarDECLARE_DYNAMIC(CToolBar)/Constructionpublic:CToolBar();第第1212章章 设计用户界面设计用户界面BOOLCreate(CWnd*pParentWn
13、d,DWORDdwStyle=WS_CHILD|WS_VISIBLE|CBRS_TOP,UINTnID=AFX_IDW_TOOLBAR);BOOLCreateEx(CWnd*pParentWnd,DWORDdwCtrlStyle=TBSTYLE_FLAT,DWORDdwStyle=WS_CHILD|WS_VISIBLE|CBRS_ALIGN_TOP,CRectrcBorders=CRect(0,0,0,0),UINTnID=AFX_IDW_TOOLBAR);voidSetSizes(SIZEsizeButton,SIZEsizeImage);/buttonsizeshouldbebiggert
14、hanimagevoidSetHeight(intcyHeight);第第1212章章 设计用户界面设计用户界面/callafterSetSizes,heightoverridesbitmapsizeBOOLLoadToolBar(LPCTSTRlpszResourceName);BOOLLoadToolBar(UINTnIDResource);BOOLLoadBitmap(LPCTSTRlpszResourceName);BOOLLoadBitmap(UINTnIDResource);BOOLSetBitmap(HBITMAPhbmImageWell);BOOLSetButtons(cons
15、tUINT*lpIDArray,intnIDCount);/lpIDArraycanbeNULLtoallocateemptybuttons第第1212章章 设计用户界面设计用户界面/Attributespublic:/standardcontrolbarthingsintCommandToIndex(UINTnIDFind)const;UINTGetItemID(intnIndex)const;virtualvoidGetItemRect(intnIndex,LPRECTlpRect)const;UINTGetButtonStyle(intnIndex)const;voidSetButton
16、Style(intnIndex,UINTnStyle);第第1212章章 设计用户界面设计用户界面/forchangingbuttoninfovoidGetButtonInfo(intnIndex,UINT&nID,UINT&nStyle,int&iImage)const;voidSetButtonInfo(intnIndex,UINTnID,UINTnStyle,intiImage);BOOLSetButtonText(intnIndex,LPCTSTRlpszText);CStringGetButtonText(intnIndex)const;voidGetButtonText(intnI
17、ndex,CString&rString)const;/fordirectaccesstotheunderlyingcommoncontrolCToolBarCtrl&GetToolBarCtrl()const;第第1212章章 设计用户界面设计用户界面/Implementationpublic:virtualCToolBar();virtualCSizeCalcFixedLayout(BOOLbStretch,BOOLbHorz);virtualCSizeCalcDynamicLayout(intnLength,DWORDnMode);virtualintOnToolHitTest(CPoi
18、ntpoint,TOOLINFO*pTI)const;virtualvoidOnUpdateCmdUI(CFrameWnd*pTarget,BOOLbDisableIfNoHndler);voidSetOwner(CWnd*pOwnerWnd);BOOLAddReplaceBitmap(HBITMAPhbmImageWell);virtualvoidOnBarStyleChange(DWORDdwOldStyle,DWORDdwNewStyle);第第1212章章 设计用户界面设计用户界面#ifdef_DEBUGvirtualvoidAssertValid()const;virtualvoid
19、Dump(CDumpContext&dc)const;#endifprotected:HRSRCm_hRsrcImageWell;/handletoloadedresourceforimagewell第第1212章章 设计用户界面设计用户界面HINSTANCEm_hInstImageWell;/instancehandletoloadimagewellfromHBITMAPm_hbmImageWell;/containscolormappedbuttonimagesBOOLm_bDelayedButtonLayout;/usedtomanagewhenbuttonlayoutshouldbed
20、oneCSizem_sizeImage;/currentimagesizeCSizem_sizeButton;/currentbuttonsizeCMapStringToPtr*m_pStringMap;/usedasCMapStringToUInt/implementationhelpersvoid_GetButton(intnIndex,TBBUTTON*pButton)const;第第1212章章 设计用户界面设计用户界面void_SetButton(intnIndex,TBBUTTON*pButton);CSizeCalcLayout(DWORDnMode,intnLength=-1)
21、;CSizeCalcSize(TBBUTTON*pData,intnCount);intWrapToolBar(TBBUTTON*pData,intnCount,intnWidth);voidSizeToolBar(TBBUTTON*pData,intnCount,intnLength,BOOLbVert=FALSE);第第1212章章 设计用户界面设计用户界面voidLayout();/calledforfordelayedbuttonlayout/AFX_MSG(CToolBar)afx_msgUINTOnNcHitTest(CPoint);afx_msgvoidOnNcPaint();a
22、fx_msgvoidOnPaint();afx_msgvoidOnNcCalcSize(BOOL,NCCALCSIZE_PARAMS*);afx_msgvoidOnWindowPosChanging(LPWINDOWPOS);afx_msgvoidOnSysColorChange();第第1212章章 设计用户界面设计用户界面afx_msgLRESULTOnSetButtonSize(WPARAM,LPARAM);afx_msgLRESULTOnSetBitmapSize(WPARAM,LPARAM);afx_msgLRESULTOnPreserveZeroBorderHelper(WPARA
23、M,LPARAM);afx_msgBOOLOnNcCreate(LPCREATESTRUCT);afx_msgBOOLOnEraseBkgnd(CDC*pDC);/AFX_MSGDECLARE_MESSAGE_MAP()LRESULTOnSetSizeHelper(CSize&size,LPARAMlParam);第第1212章章 设计用户界面设计用户界面构造方法用于建立Windows工具栏CToolBar对象,并在运行时将它们附加到框架窗口上,表12-l是CToolBar的方法。第第1212章章 设计用户界面设计用户界面表12-1 CToolBar的方法第第1212章章 设计用户界面设计用户
24、界面工具栏按钮的操作方法是用来处理某一工具栏按钮的,这些方法具体说明如表12-2所示。第第1212章章 设计用户界面设计用户界面表12-2 工具栏按钮的操作方法第第1212章章 设计用户界面设计用户界面下面介绍表12-l和表12-2中部分构造方法的功能。1Create()函数函数Create()函数的作用是创建并初始化工具栏对象。与其他创建过程类似,采用两步法生成:首先要声明对象,然后再调用初始化函数CToolBar:Create()生成工具栏对象。该函数原型为:BOOL Create(CWnd*pParentWnd,/pParentWnd为指向工具栏所在父窗口的指针第第1212章章 设计用户
25、界面设计用户界面DWORD dwStyle=WS_CHILD|WS_VISIBLE|CBRS_TOP,/dwStyle为工具栏的风格,如表12-3所示UINT nIDAFX_IDW_TOOLBAR/nID表示工具栏子窗口的ID号);第第1212章章 设计用户界面设计用户界面表12-3 工具栏风格第第1212章章 设计用户界面设计用户界面2LoadToolBar()函数函数LoadToolBar()函数的作用是装载工具栏资源。首先调用初始化函数CToolBar:Create,然后再调用该函数装载资源。该函数原型为:BOOLLoadToolBar(LPCTSTRlpszResourcName);/
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第12章 设计用户界面 12 设计 用户界面