您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > vc6s-chap05-程序界面设计1
15.1界面设计原则5.2菜单5.3工具栏5.4状态栏Ex05_1标准菜单Ex05_2图像菜单Ex05_3右键菜单Ex05_4动态菜单Ex05_5工具栏Ex05_6下拉工具栏Ex05_7ReBarEx05_8状态栏例题5.1界面设计原则5.1.1界面布局原则1.控件位置2.协调性3.一致性4.空间的使用5.简单性6.颜色7.图片和图标8.字体5.1.2用户帮助模型5.2菜单CMenu5.2.1菜单分类5.2.2相关的类与菜单资源5.2.3标准菜单5.2.4带有图标的菜单5.2.5快捷菜单5.2.6动态菜单CObjectCMenu5.2.1菜单种类1.标准菜单图标2.带有图标的菜单3.快捷菜单(右键菜单、上下文菜单)4.动态菜单5.2.2相关类与菜单资源编辑器函数功能AppendMenu将一新菜单项增加到一个菜单尾部Attach将一已存在的Windows菜单连接到一个CMenu对象CreatMenu创建一菜单,并将该对象连接到Cmenu对象CreatPopupMenu创建一弹出式菜单DestroyMenu销毁菜单及所有windows资源DeleteMenu从菜单中删除一个菜单项Detach将一菜单与CMenu对象断开连接表5-1CMenu类的有关成员函数函数功能GetSubMenu获得指定弹出式菜单的指针GetMenuItemCount获得菜单所包含的项数GetMenuString拷贝指定菜单项标签到缓冲区InsertMenu在指定位置插入一个新菜单项LoadMenu加载一个菜单资源SetMenuItemBitmaps将指定位图与一菜单项相关联TrackPopupMenu在指定位置处显示一个浮动的弹出式菜单表5-1CMenu类的有关成员函数(续)函数名说明Enable使该界面对象可选或不可选SetCheck在该界面对象(菜单)前增加或删除一个check标志SetRadio在该界面对象(菜单)项前增加或删除一个圆点SetText改变显示在该界面对象(菜单)上的字符串表5-2CCmdUI类的常用成员函数CCmdUI类没有基类,在更新命令处理函数内调用CCmdUI类的相关函数更新菜单。菜单项下拉菜单各项图编辑菜单资源菜单属性对话框1.创建菜单项2.创建下拉菜单各项选项含义ID表示该菜单项的ID值Caption表示该菜单项显示的文本Separator选中该选项表示该菜单项是一条分隔线Checked选中该选项表示该菜单项被选中时显示一个标志Pop-up选择该菜单项显示一个子菜单Grayed该菜单项变灰显示,被禁止Inactive该菜单项不被激活Help菜单被放在菜单条的最右端Break选中该菜单项后就退出其所在菜单Prompt光标移至该菜单项时状态栏显示的文本表5-3菜单属性对话框各项的含义5.2.3标准菜单AppWizard自动生成的默认菜单在默认菜单上增添需要的菜单或删除无用的菜单。ClassWizard增加消息处理(WM_COMMAND)函数。ClassWizard增加更新命令UI消息的处理(UPDATE_COMMAND_UI)On+Update+菜单名On+菜单名例5-1:Ex05_1标准菜单的使用程序菜单界面:例5-1(图1)程序菜单界面(1)点击消息对话框1和消息对话框2分别弹出如下的消息对话框。程序功能:(2)点击连接菜单出现右边的界面,连接菜单无效,且连接菜单前有打勾标记。点击断开菜单则出现断开菜单无效,且断开菜单前有打勾标记。(1)打开IDR_MAINFRAME菜单(2)增加菜单:菜单名:菜单测试消息对话框1ID_TEST_MESSAGE1DLG消息对话框2ID_TEST_MESSAGE2DLG连接ID_TEST_CONNECT断开ID_TEST_BREAK1.新建一单文档应用程序Ex05_12.创建菜单3.添加消息响应函数ID_TEST_MESSAGE1DLGOnTestDlgMessage1dlg()ID_TEST_MESSAGE2DLGOnTestDlgMessage2dlg()ID_TEST_CONNECTOnTestConnect()ID_TEST_BREAKOnTestBreak()4.添加更新菜单消息响应函数ID_TEST_CONNECTOnUpdateTestConnect(CCmdUI*pCmdUI)ID_TEST_BREAKOnUpdateTestBreak(CCmdUI*pCmdUI)5.定义成员变量在Ex05_1View.cpp文件的构造函数中。classCEx05_1View:publicCView{…public:BOOLbCheck;BOOLbEnable;…}CEx05_1View::CEx05_1View()//构造函数{bCheck=1;bEnable=1;}在Ex05_1View.h文件中定义两个BOOL变量。6.初始化成员变量//菜单消息响应函数//点击消息对话1框菜单的消息函数voidCEx05_1View::OnTestMessagedlg1(){AfxMessageBox(这是消息对话框1!);}7.编写消息响应函数//点击消息对话2框菜单的消息函数voidCEx05_1View::OnTestMessagedlg2(){AfxMessageBox(这是消息对话框2!);}//点击断开菜单的消息函数voidCEx05_1View::OnTestBreak(){bCheck=1;bEnable=1;}//点击连接菜单的消息函数voidCEx05_1View::OnTestConnect(){bCheck=0;bEnable=0;}//菜单更新消息响应函数//更新连接菜单voidCEx05_1View::OnUpdateTestConnect(CCmdUI*pCmdUI){pCmdUI-SetCheck(bCheck);//打勾或不打勾pCmdUI-Enable(!bEnable);//禁用或启用}//更新断开菜单voidCEx05_1View::OnUpdateTestBreak(CCmdUI*pCmdUI){pCmdUI-SetCheck(!bCheck);//打勾或不打勾pCmdUI-Enable(bEnable);//禁用或启用}8.编译、运行和测试5.3工具栏5.3.1工具栏资源编辑器5.3.2CToolBar类5.3.3常规工具栏5.3.4下拉式工具栏按钮5.3.1工具栏资源编辑器1.创建工具栏2.创建、移动和编辑工具栏按钮(1)创建一个新的工具栏按钮(2)移动一个工具栏按钮(3)删除一个工具栏按钮(4)在工具栏上的两个按钮中插入一个空白区(5)删除工具栏按钮的空白区在Prompt框中输入提示字符串,程序运行时当鼠标移至该按钮时,提示字符串就会显示在状态栏上,其中在字符‘\n'后出现的字符串,会在出现在按钮下方的小标注栏内显示。图工具栏资源编辑器5.3.2CToolBar类CToolBar是工具栏类,用于管理应用程序窗口中的工具栏。CObjectCCmdTargetCWndCControlBarCToolBar成员函数返回值功能CommandToIndexint获取工具栏中第一个有给定ID的按钮的索引CreateBOOL创建工具栏GetButtonInfovoid获取按钮的有关信息GetButtonStyleUINT获取按钮的风格GetButtonTextCString获取按钮的文本GetItemIDUINT获取给定索引按钮的IDGetItemRectvoid获取给定索引项目的显示矩形GetToolBarCtrlToolBarCtrl&获取对CtoolBar对象描述的CtoolBarCtrl对象的引用表5-4CToolBar类的主要成员函数成员函数返回值功能LoadBitmapBOOL加载工具栏的按钮图像LoadToolBarBOOL加载工具栏资源SetBitmapBOOL设置新的工具栏按钮位图SetButtonInfovoid设置按钮的ID风格和图像序号SetButtonsBOOL设置工具栏按钮的IDSettButtonStylevoid设置按钮的风格SetButtonTextBOOL设置按钮的文本SetHeightvoid设置工具栏的高度SetSizesvoid设置按钮的大小表5-4CToolBar类的主要成员函数(续)5.3.3常规工具栏1.编辑工具栏资源2.为每一个工具栏按钮添加消息处理函数3.将工具栏载入应用程序中m_wndToolBar.LoadToolBar(IDR_MAINFRAME)4.给工具栏加上标题m_wndToolBar.SetWindowText(“标准工具栏”)5.使工具栏浮动(停靠)例5-5:Ex05_5工具栏的创建、载入、显示与隐藏程序界面:程序启动时载入标准工具栏和绘图工具栏,点击查看下面的绘图工具栏菜单可以使绘图工具栏显示或隐藏。程序功能:例5-5(图1)程序界面1.新建一单文档应用程序Ex05_52.利用工具栏资源编辑器创建绘图工具栏资源工具栏ID号:ID_DRAW_TOOLBAR直线:ID_DRAW_LINE矩形:ID_DRAW_RECTANGLE圆:ID_DRAW_CIRCLE文字:ID_DRAW_TEXT3.将工具栏载入应用程序中在应用程序中一般通过重载CMainFrame类中的OnCreate函数载入工具栏。4.给工具栏加上标题(1)在MainFrm.h头文件中定义Public:CToolBarm_DrawToolBar;(2)在MainFrm.cpp实现文件中intCMainFrame::OnCreate(LPCREATESTRUCTlpCreateStruct){//载入绘图工具栏if(!m_DrawToolBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_TOP|CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC)||!m_DrawToolBar.LoadToolBar(IDR_DRAW_TOOLBAR)){TRACE0(绘图工具栏创建失败!\n);return-1;//failtocreate}m_DrawToolBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_TOP|CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC)各项的含义:TBSTYLE_FLAT:工具栏风格,平WS_CHILD:子窗口WS_VISIBLE:可见CBRS_TOP:工具栏停靠位置,TOP-顶部,BOTTOM-底部…CBRS_GRIPPER:工具栏获得把手CBRS_TOOLTIPS:工具条将显示工具提示CBRS_FLYBY:在对应的状态栏中显示提示信息CBRS_SIZE_DYNAMIC:工具栏尺寸可动态调整//浮动(停靠)//允许工具栏停靠于客户区的任意位置m_DrawToolBar.EnableDocking(CBRS_ALIGN_ANY);//框架允许工具栏停靠在任何位置EnableDocking(CBRS_ALIGN_ANY);DockControlBar(&m_DrawToolBar);}//给标准工具栏加上标题m_DrawToolBar.SetWindowText(绘图工具栏);5.工具栏的显示与隐藏(1)编辑查看菜单下的绘图工具栏菜单绘图工具栏:ID_VIEW_DRAWTOOLBAR(2)添加和编写菜单消息响应函数与菜单更新消息响应函数//菜单消息响应函数voidCMainFrame::OnViewDrawbar(){BOOLbVisible=((m_DrawToolBar.GetStyle()&WS_VISIBLE)!=0);ShowControlBar(&m_DrawToolBar,!bVisible,FALSE);RecalcLayout();}Rec
本文标题:vc6s-chap05-程序界面设计1
链接地址:https://www.777doc.com/doc-1238954 .html