c++程序设计 陈圣国

c++程序设计 陈圣国

ID:25049977

大小:752.50 KB

页数:186页

时间:2018-11-16

c++程序设计 陈圣国_第1页
c++程序设计 陈圣国_第2页
c++程序设计 陈圣国_第3页
c++程序设计 陈圣国_第4页
c++程序设计 陈圣国_第5页
资源描述:

《c++程序设计 陈圣国》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、10.1Windows消息与命令10.2单文档与多文档程序10.3对话框与常用组件10.4通用对话框与Windows95控件第10章Windows用户界面返回主目录10.1Windows消息与命令10.1.1消息驱动机制消息是一种报告有关事件发生的通知,类似于DOS下的用户输入。Windows应用程序是由消息驱动的。Windows操作系统允许多个任务同时运行,应用程序的输入输出由Windows统一管理;Windows系统下每一个窗口都维护一个消息队列,操作系统接收和管理所有输入消息、系统消息,并把它们发送给相应窗口的消息队列。应用程序初始化完成后,进入消息循环,维护自己的消息队

2、列,从中取出消息,对其进行处理。编写消息处理函数是Windows编程的主要工作之一。Windows应用程序的消息来源有以下四种:(1)输入消息:包括键盘和鼠标的输入。这一类消息首先放在系统消息队列中,然后由Windows将它们送入应用程序消息队列中,由应用程序来处理消息。(2)控制消息:用来与Windows的控制对象,如列表框、按钮、检查框等进行双向通信。当用户在列表框中改动当前选择或改变了检查框的状态时发出此类消息。这类消息一般不经过应用程序消息队列,而是直接发送到控制对象上去。(3)系统消息:对程序化的事件或系统时钟中断作出反应。一些系统消息,像DDE消息(动态数据交换消息

3、)要通过Windows的系统消息队列,而有的则不通过系统消息队列而直接送入应用程序的消息队列,如创建窗口消息。(4)用户消息:这是程序员自己定义并在应用程序中主动发出的,一般由应用程序的某一部分内部处理。基于MFC类库的应用程序完成初始化后,调用Run()函数进入消息循环。在CWnd类(所有窗口类的基类)中预定义标准Windows消息的处理函数,处理函数的名称以“On”开始,用户可以根据需要重写这些函数。在CWnd类中,标准Windows消息的处理函数声明都带有afx_msg关键字,例如消息WM_PAINT的处理函数被声明为:afx_msgvoidOnPaint();关键字af

4、x_msg用于把消息处理函数与其它CWnd成员函数分开,这些函数是通过消息映射实现的,依赖于标准的预处理宏。预处理之后,关键字afx_msg的位置就变成了空白。以全局对象theApp为例,其中的消息映射如下:BEGIN_MESSAGE_MAP(CEx01App,CWinApp)//{{AFX_MSG_MAP(CEx01App)ON_COMMAND(ID_APP_ABOUT,OnAppAbout)//注意:ClassWizard(类向导)将可能添加或删除消息映射宏//}}AFX_MSG_MAP//标准的基于文档的文件命令ON_COMMAND(ID_FILE_NEW,CWinApp

5、::OnFileNew)ON_COMMAND(ID_FILE_OPEN,CWinApp::OnFileOpen)//标准的打印设置命令ON_COMMAND(ID_FILE_PRINT_SETUP,CWinApp::OnFilePrintSetup)END_MESSAGE_MAP()其中的BEGIN_MESSAGE_MAP和END_MESSAGE_MAP都是预处理宏,用于声明消息映射的开始和结束。而在类中重新修改的消息处理函数声明形式为://Generatedmessagemapfunctionsprotected://{{AFX_MSG(CEx01Ciew)afx_msgvoi

6、dOnPaint();//}}AFX_MSGDECLARE_MESSAGE_MAP()最后的DECLARE_MESSAGE_MAP宏,声明在该类中使用消息映射。10.1.2应用程序菜单Windows菜单是应用程序命令项列表,菜单项可以是文字或位图。通过选择菜单项使应用程序完成与菜单项相关的命令。下面通过一个例子来介绍如何在应用程序中建立新菜单、如何在菜单中加入新的菜单项、如何为菜单项建立相应的命令处理函数以实现消息映射。首先看看如何在已有的下拉菜单中增加一个菜单项。第一步,编辑菜单项资源,步骤如下:(1)运行AppWizard创建Ex02(参看9.5.2节的“利用AppWiza

7、rd建立一个新项目”),选中“Singledocument”(单文档SDI)单选项后,直接按下Finish按钮。(2)在项目工作区窗口中打开ResourceView(资源视图)。(3)双击该视图中的Menu图标,展开菜单资源。(4)双击IDR_MAINFRAME,打开菜单编辑器,如图10.1所示。(5)可以看到,在“文件”菜单的最下方有一个空白菜单项,用户可以编辑这个菜单项来添加菜单项。也可以单击某个菜单项,然后按键盘上的Insert键,在选定的菜单项前面插入一个新的菜单项。(6)双击空白菜

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。