ImageVerifierCode 换一换
格式:DOCX , 页数:41 ,大小:557.25KB ,
资源ID:18246125      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-18246125.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验7菜单工具栏和状态栏.docx)为本站会员(b****0)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

实验7菜单工具栏和状态栏.docx

1、实验7菜单工具栏和状态栏实验7 菜单、工具栏和状态栏一 实验目的: 掌握菜单和弹出式菜单制作以及利用菜单触发应用程序的方法 掌握动态改变菜单方法 掌握工具栏和状态栏的制作和使用方法 二 实验要求:7.1 使用菜单编辑器对菜单编辑,如添加主菜单项和子菜单等,并掌握使用的方法,如弹出一个对话窗口或单击菜单与处理命令中的某个类的成员函数相联系。(例如,利用菜单选择不同宽度的笔,弹出一个颜色选择的对话窗口( 利用 CColorDialog Class ),选择笔的颜色等)提示:利用开发平台,添加菜单及对应标识(ID),然后利用 ClassWizard 在应用程序窗口中响应实现某一功能。7.2 掌握菜单

2、的启用、禁用和复选方法,例如在单文档窗口上连击鼠标左键,将菜单中某项启动和禁用。提示:菜单的启用、禁用和复选分别表示菜单项的使用状态,如当菜单禁用时,该项将会“变灰”用户选择时不会被响应。7.3 利用开发平台的多文档创建,观测菜单程序的设计方法,建立起多种不同的窗口并根据窗口动态更新菜单。(如,系统可弹出 3 种类型的窗口,其中一个窗口是用鼠标画线,菜单包括笔的宽度,颜色等,一个窗口是在鼠标点击处画园,菜单选择不同半径和颜色,最后一个窗口是在上画正弦波(动态),菜单包括同时有几条,并利用菜单弹出一对话框,然后输入曲线的必要参数(如周期等)提示:在创建时不使用 Document/View arc

3、hitecture support。观察系统创建的程序框架,分别创建不同功能的窗口类(包括 CMDIChildWnd 和CWnd 类)在利用系统菜单,启动用户的不同类型窗口(包括增加菜单变量等),仔细观测菜单是否随窗口的不同而改变。在各窗口中编写相应的程序以实现各自的功能。7.5 创建弹出式菜单,在应用程序视图内右击鼠标时,将弹出该浮动菜单。提示:增加右键单击时的消息处理在响应函数处增加弹出菜单:CMenu menu;Menu.CreatePopupMenu();添加一个菜单项到该菜单:menu.AppendMenu( 0 , IDC_MY_MSG1,Wzd &1 ) ; / 这里IDC_MY

4、_MSG1是定义的标识,Wzd是菜单显示的内容在鼠标右击处显示该弹出式菜单:CMenu menu ;menu.LoadMenu( ID_MENU_MY );CMenu * lpmenu ;lpmenu = menu.GetSubMenu(0);CPoint pt;GetCursorPos( & pt ) ;lpmenu - TrackPopupMenu( TPM_RIGHTBUTTON,pt.x,pt.y,this);在使用了 TrackPopupMenu()命令后,必须使用 DestroyMenu()销毁弹出式菜单对象。 lpmenu - DestroyMenu( );7.6 掌握使用工具栏

5、编辑器( ToolBar Editor)修改工具栏,以及创建新的工具栏的方法。 7.7 启用和禁用工具栏按钮,根据应用程序的状态,灰化和正常化工具栏按钮。(禁用的按钮显示灰色)。7.8 为工具栏按钮添加字,在工具栏的按钮上添加文字,这样可表明按钮作用。7.9 非标准工具栏大小讨论改变工具栏按钮大小的方法。 7.10 保持工具栏按钮按下讨论保持工具栏按钮按下的方法,以指示该功能正在使用7.11 为工具栏添加非按钮控件添加一个组合框到工具栏。 7.12 修改应用程序的状态栏用字符串表编辑器(String Table Editor)修改应用程序的状态栏。7.13 更新状态栏窗格使用 ClassWiz

6、ard 创建一个类,更新显示状态窗格上的文本消息。 7.14 为状态栏添加其他控件添加一个按钮和进度指示控件到一个状态栏。三 实验过程菜单栏71使用菜单编辑器对菜单编辑目标:掌握使用菜单编辑器对菜单进行编辑步骤:1选择Resource View 选项卡,其中,节点Menu下就是菜单编辑,点击鼠标右键,可以选择Insert Menu,然后可以对菜单进行编辑。改变菜单属性可以选中菜单名称,然后点击鼠标右键,选择Properties命令,显示“菜单属性”对话框,修改菜单属性。2添加一个新的菜单项到菜单中,用鼠标拖动空白焦点矩形到新菜单项的位置, 然后,双击或右击该矩形,选择properties命令打

7、开属性对话框,在I D域定义个人的菜单I D,如果用户不输入任何I D,则系统自动创建一个I D,当单击该菜单项时,该I D成为命令I D发送到应用程序。 在C a p t i o n (标题)域输入菜单项的文本,在字符前面添加一个&号表示用户可以通过键盘访问该菜单项,该字符在菜单中显示一个下划线。3修改一个已有的菜单项,只要用鼠标选取它,并打开它的属性对话框;要删除一个菜单项,用鼠标选中它,然后按键盘上的Delete键。4用ClassWizard添加一个命令处理函数, 菜单按钮ID_DIALOG_POPUP,添加一个消息映射函数OnDialogPopup,在sy715View.cp文件中添加

8、如下代码void CSy715View:OnDialogPopup() / TODO: Add your command handler code here CColorDialog dc ; dc.DoModal();7.2 掌握菜单的启用、禁用和复选方法,例如在单文档窗口上连击鼠标左键,将菜单中某项启动和禁用。目标:启用、禁用和复选一个菜单项步骤:给对应菜单ID_APP_ABOUT用ClassWizard选择UPDAT E_COMMAND_UI创建一个用户界面处理函数,定义布尔变量m_bivalue,如果m_bivalue为TRUE,菜单将变得有效,如果是FA L S E,则无效。使用Se

9、tCheck函数控制函数的复选。添加如下代码void CSy715View:OnUpdateAppAbout(CCmdUI* pCmdUI) / TODO: Add your command update UI handler code here pCmdUI-Enable(m_bivalue);/启用或禁用 /pCmdUI-SetCheck(m_bivalue); /复选添加鼠标左键消息处理函数OnLButtonDown,双击启用或者禁用菜单功能,添加代码如下:void CSy715View:OnLButtonDown(UINT nFlags, CPoint point) / TODO: A

10、dd your message handler code here and/or call default m_bicaptured=true; if(m_bicaptured) count+; if(count%2=0&count!=0) m_bivalue=true; else m_bivalue=false; CView:OnLButtonDown(nFlags, point);73利用开发平台的多文档创建,观测菜单程序的设计方法,建立起多种不同的窗口并根据窗口动态更新菜单。目标:掌握窗口动态更新菜单,实现在不同的窗口更新不同的菜单。步骤:1在split3Doc.h文件中添加六个不同类型

11、的成员变量,添加代码:public: CPoint p1,p2; COLORREF m_linecolor; int m_lineWidth,m_lineTYPE,m_circle_raidus;并且在split3Doc.cpp文件的构造函数CSplit3Doc中进行初始化CSplit3Doc:CSplit3Doc() / TODO: add one-time construction code here p2 = p1 = CPoint(0,0); m_lineWidth = 3; m_lineTYPE = PS_SOLID; m_circle_raidus =10;2在split3View

12、.cpp文件的修改OnDraw函数,用于实现画图,void CSplit3View:OnDraw(CDC* pDC) / TODO: Add your specialized code here and/or call the base class CSplit3Doc *pDoc = (CSplit3Doc*) GetDocument(); CPen *newpen = new CPen(pDoc-m_lineTYPE,pDoc-m_lineWidth,pDoc-m_linecolor); CPen *oldpen = pDC-SelectObject(newpen); pDC-MoveTo

13、(pDoc-p1); pDC-LineTo(pDoc-p2); pDC-SelectObject(oldpen); 同时添加鼠标的消息响应函数OnLButtonDown和OnLButtonDown,添加代码,void CSplit3View:OnLButtonDown(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call default CSplit3Doc *pDoc = (CSplit3Doc*) GetDocument(); pDoc-p1 = point; CFormView:

14、OnLButtonDown(nFlags, point);初始点选择。void CSplit3View:OnLButtonUp(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call default CSplit3Doc *pDoc = (CSplit3Doc*) GetDocument(); pDoc-p2 = point; Invalidate(); CFormView:OnLButtonUp(nFlags, point);目的点选择。对应在Menu下添加菜单IDR_SPLIT3TY

15、PE,并且修改菜单line选项,添加三个功能选项LineColor,LineWidth,LineType,并且在split3View.cpp文件添加三个消息响应函数,void CSplit3View:OnLinePara() CColorDialog cdig; if(cdig.DoModal() = IDOK) CSplit3Doc *pDoc = (CSplit3Doc*) GetDocument(); pDoc-m_linecolor = cdig.GetColor(); void CSplit3View:OnLineWidth() / TODO: Add your command ha

16、ndler code here / 修改 CSplit3Doc的 m_lineWidth变量 CSplit3Doc *pDoc = (CSplit3Doc*) GetDocument(); pDoc-m_lineWidth=3+3 * (rand() % 3);void CSplit3View:OnLineType() / TODO: Add your command handler code here / 修改 CSplit3Doc的 m_lineTYPE变量 具体值见MSDN CSplit3Doc *pDoc = (CSplit3Doc*) GetDocument(); pDoc-m_li

17、neTYPE=PS_DASH;3同样的方法,添加两个基于CFormView的新视图类CircleView和CSplit3View,对应的程序清单如下:#if !defined(AFX_SINEVIEW_H_FEF0D315_F3F7_4447_9F75_C0B263FFF1D8_INCLUDED_)#define AFX_SINEVIEW_H_FEF0D315_F3F7_4447_9F75_C0B263FFF1D8_INCLUDED_#if _MSC_VER 1000#pragma once#endif / _MSC_VER 1000/ SineView.h : header file/ Si

18、neView form view#ifndef _AFXEXT_H_#include #endifclass SineView : public CFormViewprotected: SineView(); / protected constructor used by dynamic creation DECLARE_DYNCREATE(SineView)/ Form Datapublic: /AFX_DATA(SineView) enum IDD = IDD_SINEVIEW_FORM ; / NOTE: the ClassWizard will add data members her

19、e /AFX_DATA/ Attributespublic:/ Operationsprivate: int m_sine_time;/ Overrides / ClassWizard generated virtual function overrides /AFX_VIRTUAL(SineView) protected: virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support virtual void OnDraw(CDC* pDC); /AFX_VIRTUAL/ Implementationprotected:

20、 virtual SineView();#ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const;#endif / Generated message map functions /AFX_MSG(SineView) afx_msg void OnSinePara(); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnLButtonUp(UINT nFlags, CPoint poi

21、nt); afx_msg void OnSineTime(); /AFX_MSG DECLARE_MESSAGE_MAP();/AFX_INSERT_LOCATION/ Microsoft Visual C+ will insert additional declarations immediately before the previous line.#endif / !defined(AFX_SINEVIEW_H_FEF0D315_F3F7_4447_9F75_C0B263FFF1D8_INCLUDED_)/ SineView.cpp : implementation file#inclu

22、de stdafx.h#include split3.h#include SineView.h#include Split3DOc.h#include #ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ SineViewIMPLEMENT_DYNCREATE(SineView, CFormView)SineView:SineView() : CFormView(SineView:IDD) /AFX_DATA_INIT(SineView) / NOTE: the Clas

23、sWizard will add member initialization here /AFX_DATA_INIT m_sine_time = 6;SineView:SineView()void SineView:DoDataExchange(CDataExchange* pDX) CFormView:DoDataExchange(pDX); /AFX_DATA_MAP(SineView) / NOTE: the ClassWizard will add DDX and DDV calls here /AFX_DATA_MAPBEGIN_MESSAGE_MAP(SineView, CForm

24、View) /AFX_MSG_MAP(SineView) ON_COMMAND(ID_SINE_PARA, OnSinePara) ON_WM_LBUTTONDOWN() ON_WM_LBUTTONUP() ON_COMMAND(ID_SINE_TIME, OnSineTime) /AFX_MSG_MAPEND_MESSAGE_MAP()/ SineView diagnostics#ifdef _DEBUGvoid SineView:AssertValid() const CFormView:AssertValid();void SineView:Dump(CDumpContext& dc)

25、const CFormView:Dump(dc);#endif /_DEBUG/ SineView message handlersvoid SineView:OnSinePara() CColorDialog cdig; if(cdig.DoModal() = IDOK) CSplit3Doc *pDoc = (CSplit3Doc*) GetDocument(); pDoc-m_linecolor = cdig.GetColor(); void SineView:OnDraw(CDC* pDC) CSplit3Doc *pDoc = (CSplit3Doc*) GetDocument();

26、 CPen *newpen = new CPen(pDoc-m_lineTYPE,pDoc-m_lineWidth,pDoc-m_linecolor); CPen *oldpen = pDC-SelectObject(newpen); int len = pDoc-p1.x - pDoc-p2.x; int amp = pDoc-p1.y - pDoc-p2.y; int i,x,y; /画周期正弦,实事上有更好的差分办法 for(i=0;ip1.x - abs(len)/len* i; y = (pDoc-p1.y + pDoc-p2.y) /2 + amp/2 * sin(i*m_sine

27、_time*6.18/len); pDC-SetPixel(x,y,pDoc-m_linecolor); pDC-SelectObject(oldpen);void SineView:OnLButtonDown(UINT nFlags, CPoint point) CSplit3Doc *pDoc = (CSplit3Doc*) GetDocument(); pDoc-p1 = point; CFormView:OnLButtonDown(nFlags, point);void SineView:OnLButtonUp(UINT nFlags, CPoint point) CSplit3Doc *pDoc = (CSplit3Doc*) GetDocument(); pDoc-p2 = point; Invalidate(); CFormView:OnLButtonUp(nFlags, point);void SineView:OnSineTime() / TODO: Add your command handler code here m_sine_time = (+m_sine_time) % 10; /修改周期数的对话框/#if !defined(AFX_IRCLEVIEW_H_F9D0731A_

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2