试验五消息和命令.DOCVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
试验五消息和命令

实验五 消息和命令 一 实验目的 熟悉利用 VC 集成化环境建立对 Windows 下的消息和命令响应的方法 掌握窗口间消息的传递方法 掌握用户自定义消息及响应方法 了解利用 SendMessage 或 PostMessage 进行窗口间数据传递方法   二 实验要求 1、利用 MFC 中 CWnd 类的时间函数,完成具有“定时”功能的任务,如画一个不停变换直径的园。当鼠标左键单击时,圆心由鼠标位置开始由小到大变换,利用鼠标右键单击停止画园等。 提示: CWnd 中的时间函数: SetTimer : Installs a system timer that sends a WM_TIMER message when triggered. KillTimer: Kills a system timer. Example // This example shows how to use CWnd::SetTimer, CWnd::KillTimer, and how to handle WM_TIMER messages. A timer is set up to send a WM_TIMER message to the main frame window every 2 seconds in OnStartTimer(). OnStopTimer will stop the timer by calling CWnd::KillTimer. OnTimer was set up through class wizard to handle WM_TIMER messages for the cview window. In this example the PC speaker will beep every 2 seconds. void CMyView::OnStartTimer() { m_nTimer = SetTimer(1, 2000, 0); } void CMyView::OnStopTimer() {KillTimer(m_nTimer); } void CMyView::OnTimer(UINT nIDEvent) { MessageBeep(0xFFFFFFFF); // Beep // Call base class handler. CMyView::OnTimer(nIDEvent); } CWnd 中的获取窗口范围的函数:CWnd::GetClientRect( LPRECT lpRect ) const;通过该函数,可以获得当前窗口的范围。 例如:Rect rect ; GetClientRect( rect ) ; 变量 rect 就是当前窗口的范围 需要在当前窗口画一些图形,可以采用下列函数: CClientDC dc(this) ;/// 在 view 类中,获得的是设备描述类 dc.Ellipse( x1,y1,x2,y2); // 即会在窗口上画一个椭圆。把四个点设置成组成一个正方形,则画出的是圆。   2、 创建一个单文档的窗口,鼠标左键单击后,发出一个用户自定义消息,在对此消息响应函数响应后弹出一个对话框。 提示:使用 SendMessage() 或 PostMessage()函数来发送用户自定义消息。SendMessage将消息直接发送给窗口,并调用该窗口的窗口过程进行处理。在窗口过程对消息处理完毕后,该函数才返回(SendMessage发送的消息为不进队消息)。PostMessage函数将消息放入与创建窗口的线程相关联的消息队列后立即返回。 利用宏定义# define UM_MESSAGE WM_USER + 1来声明用户自定义消息。模仿Windows消息的映射机制来实现自定义消息的映射,使用ON_MESSAGE宏为这条自定义消息添加消息映射。注意在AFX_MSG注释宏的外面添加自定义消息的响应函数声明和消息映射。 3 将窗口分成二个矩形,当光标移至不同的区域内时显示出不同的形状的光标。 提示:用CSplitterWnd类来切分窗口,调用成员函数CreateStatic来完成静态的切分,调用成员函数CreateView创建切分窗口窗格。让两个视类分别响应WM_CREATE消息,在窗口创建之后,调用SetClassLong函数来设置光标。 三 实验过程 实验1步骤: 建立一个单文档应用程序,工程命名为“Time”。分别为CTimeView类添加鼠标左键按下和鼠标右键按下的消息:OnLButtonDown和OnRButtonDown。然后添加WM_TIMER消息的响应函数OnTimer。最后为CTimeView类添加一个私有成员变量:m_point,类型

文档评论(0)

2105194781 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档