实验12 菜单、工具栏和状态栏.doc_第1页
实验12 菜单、工具栏和状态栏.doc_第2页
实验12 菜单、工具栏和状态栏.doc_第3页
实验12 菜单、工具栏和状态栏.doc_第4页
实验12 菜单、工具栏和状态栏.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验内容创建一个单文档应用程序Ex_SDI,开始运行时主框架窗口的大小为屏幕的1/4大小,并移动到屏幕的右上角。当单击工具栏上的圆圈按钮,该按钮呈按下状态,此时在窗口的客户区的光标为一个圆圈,双击鼠标,则状态栏上显示“你在(x,y)处双击鼠标”(x,y为鼠标在客户区的位置)。若再单击工具栏上的圆圈按钮,该按钮呈正常状态,光标变成原来的箭形,双击鼠标,状态栏上不再显示任何文本。如图T12.1所示是单击圆圈按钮时的程序界面。实验准备和说明(1) 在教程第5章全部讲授后进行本次实验。(2) 构思本次上机所需要的程序。 实验步骤1创建工作文件夹打开计算机,在“D:Visual C+程序、LiMing”文件夹中创建一个新子文件夹“实验12” 2改变运行时窗口的大小和位置改变运行时窗口的大小和位置设置步骤如下。(1)启动Visual C+6.0。(2)用 MFC AppWizard 创建一个默认的单文档应用程序Ex_SDI。在“新建”对话框中将项目文件夹定位到“D:Visual C+程序 LiMing实验 12”。(3)将项目工作去窗口切换到Class View 页面,打开并定位到 CEx_SDIApp:InitInstance 函数处。(4)在CEx_SDIApp:InitInstance 函数的最后添加下列代码:BOOL CEx_SDIApp:InitInstance() m_pMainWnd-ShowWindow(SW_SHOW); m_pMainWnd-UpdateWindow(); CRect rcDesktop; :GetWindowRect(GetDesktopWindow(),rcDesktop); / 获取屏幕大小 m_pMainWnd-MoveWindow(rcDesktop.Width()/2.0, rcDesktop.Width()/2, rcDesktop.Height()/2); return TRUE;(5) 编译运行,看看主框架窗口的大小是否为屏幕的1/4大小,且移动到屏幕的右上角。 3添加并设计一个工具按钮添加并设计一个工具按钮的具体步骤如下。(1) 将项目工作区窗口切换到ResourceView 页面,双击“Toolbar”项中的 IDR_MAINFRAME,打开工具栏资源。(2) 单击工具栏最右侧的空白按钮,在资源编辑器的按钮设计窗口中绘制一个圆,颜色为黑色,然后将其拖动到“帮助”按钮的前面,并使该按钮的前后均有半个空格,设计的工具按钮如图T12.2所示。(3) 双击刚才设计的工具按钮,在弹出的属性对话框中将其标识符设为 ID_TEST,在提示框中输入“用于测试的工具按钮n测试”,“设置工具按钮的属性”对话框如图T12.3所示。 4添加并设计一个光标添加并设计一个光标的具体步骤如下。(1) 按快捷键 Ctrl+R,打开“插入资源”对话框,选择“Cursor”类型后,单击“新建”按钮。(2) 在图形编辑器工作窗口的控制条上,单击“New Device Image”按钮,从弹出的“New Device Image”对话框中,单击“定制”按钮。(3) 在弹出的“定制图像”对话框中,保留默认的大小和颜色素,单击“确定”按钮。回到“New Device Image”对话框。(4) 选择“3232,16 colors”设备类型,单击“确定”按钮。(5) 在图形编辑器的“Device”组合框中,选择“Monochrome3232”,打开系统Image菜单,选择“Delete Device Image”命令,删除“Monochrome3232”设备类型。如果不这样做,加载后的光标不会采用“3232,16 colors”设备类型。(6) 保留默认的ID号IDC_CURSORI,用图形编辑器绘制光标图形,指定光标热点位置为(15,15)设计的光标如图T12.4所示。 5工具按钮的更新工具按钮的更新有如下步骤。(1) 为CMainFrame类添加一个BOOL型的成员变量m_bIsTest,在CMainFrame类构造函数中将m_bIsTest的初值设为FALSE(2) 用MFC ClassWizard 在 CMainFrame类中添加工具按钮ID_TEST的COMMAND UPDATE_COMMAND_UI和 消息映射函数,并添加下列代码: void CMainFrame:OnTest() m_bIsTest=!m_bIsTest; void CMainFrame:OnUpdateTest(CCmdUI*pCmdUI) pCmdUI-SetCheck(m_bIsTest); 编译运行并测试。 6更改应用程序光标更改应用程序光标的具体步骤如下。(1)为CMainFrame类添加一个成员变量m_hCursor,变量类型为光标句柄HCURSOR (2)用MFC ClassWizard为CMainFrame 类添加WM_SETCURSOR的消息映射函数,并增加下列代码:BOOL CmainFrame:onSetCursor(CWnd*pWnd,UINT nHitTest,UINT message) BOOL bRes=CframeWnd:OnSetCursor(pWnd,nHitTest,message); if(nHitTest=HTCLENT)&(m_bIsTest) m_hCursor=AfxGetApp()-LoadCursor(IDC_CURSOR1);SetCursor(m_hCursor);bRus=TRUE;Return bRes;(3)编译运行并测试。 7添加状态栏窗口添加状态栏窗口的具体步骤如下。(1)将项目工作区窗口切换到ResourceView页面,双击”String Table”项的”String Table” 图标,则在主界面的右边出现字符串编辑器。(2)在字符串列表的最后一行的空项上双击鼠标左键,弹出一个对话框,在该对话框中,指定一个字符串标识符ID_TEST_PANE,设置字符串值为“你在(1024,1024)处双击鼠标”,注意该字符串的字符个数将决定添加的状态栏窗口的大小。添加一个字符串资源的结果如图T12.5所示。(3)关闭字符串属性对话框。(4)打开MainFem.cpp文件,将原先的indicators数组修改如下:staticUINTindicators=ID-SEPARATOR, /staus line indicatorID-TEST-PANE, ID-INDICATOR-CAPS,ID-INDICATOR-NUM,ID-INDICATOR-SCRL, 8映射鼠标双击消息映射鼠标双击消息的具体步骤如下。(1) 用MFC ClassWizard在Cex-SDIView类中添加WM-LBUTTONDBLCLK(双击鼠标)的消息映射,并在映射函数中添加下列代码:voidCEx-SDIView:OnLButtonDblClk(UINT nFags,Cpont point) CmainFrame*pFrame=-(CmainFrame*)AfxGetAPPO-m-pMainWnd; /获得主窗口指针CstatusBar*pStatus=&pFrame-m-wndStatusBar; /获得主窗口中状态指针Cstring str;if(pFrame-m-bIsTest)Str.Format(“你在(%b,%d)处双击鼠标,”point.x,point.y); /格式化文本elseStr.EmptyO; /为空字符if(pStatus) pStatus-SetPaneText(1,str); /更新第2个窗格的文化Cview:OnLButtonDblClk(nFlags,point); (2)将MainFrm.h文本中的受保护变量m-wndStatusBar变成公共变量。(3)在Ex-SDIView.cpp文件的开始处增加下列语句:#include “Ex_SDIView.h”#include”MainFrm.h”(4)编译运行并测试。如图T12.6所示为在状态栏上显示文本。 9完善代码上述运行结果并不是很理想,因为一开始运行时,状态栏第2个窗格上的文本是“你在(1024,1024)处双击鼠标”,因此需要在CmainFrame:OnUpdateTest函数添加下列代码:Vid CmainFrame:OnUpdateTes(CcmdUI*pCmdui) PCmdUI-SetCheck(m_bI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论