windows程序设计004.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:49 大小:288KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

windows程序设计004.ppt

windows程序设计004.ppt

预览

免费试读已结束,剩余 39 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Windows程序设计基础第四章Windows图形界面intAPIENTRYWinMain(HINSTANCEhInstance,//本模块的实例句柄HINSTANCEhPrevInstance,//Win16时代句柄LPSTRlpCmdLine,//命令行参数intnCmdShow)//主窗口初始化时的显示方式{//TODO:Placecodehere.return0;}创建窗口后,就要对窗口的行为负责。操作系统不断的向应用程序发送消息,通知它发生了什么事情。当Windows向程序发送消息时,它调用程序中的一个函数,这个函数的参数精确地描述了Windows发送的消息。在程序中称其为窗口函数或消息处理函数。它是一个自定义的回调函数。原形如下:LRESULTCALLBACKWindowProc(HWNDhwnd,UINTuMsg,WPARAMwParam,LPARAMlParam);回调函数intmain(intargc,char*argv[]){HWNDhWnd=::FindWindow(NULL,”无标题-记事本”);if(hWnd!=NULL){::SendMessage(hWnd,WM_CLOSE,0,0);}return0;}消息简单的说就是指通过输入设备向程序发出指令要执行某个操作。具体的某个操作是你写的一系列代码。称为消息处理函数。在SDK中消息其实非常容易理解,当窗口建立后便会有一个函数(窗口处理函数)开始执行一个消息循环,我们还可以清楚的看到消息处理的脉络。一个switchcase语句就可以搞定,消息循环直到遇到WM_QUIT消息才会结束,其余的消息均被拦截后调用相应的处理函数。但在封装了API的MFC中,消息似乎变的有些复杂了,我们看不到熟悉的switchcase语句了,取而代之的是一个叫消息映射的东西。在现在的程序开发活动中,一个程序是否拥有多个窗体,主窗口就算只有一个,那菜单、工具条、控件这些都是子窗口,需要写很多个switchcase,并且还要为每个消息分配一个消息处理函数,这样做非常复杂。因此MFC采用了一种新的机制。利用一个数组,将窗口消息和相对应的消息处理函数进行映射,你可以理解成这是一个表。这种机制就是消息映射。这张表在窗口基类CWnd定义,派生类的消息映射表如果你没有动作它是空的,也就是说如果你不手工的增加消息处理函数,则当派生窗口接受一个消息时会执行父类的消息处理函数。这样做显然是高效的。1、Windows消息此类消息主要包括以前缀WM_开头的消息,WM_COMMAND除外。Windows消息由窗口和视图处理。此类消息往往带有用于确定如何处理消息的参数。2、控件通知此类消息包括从控件和其他子窗口发送到其父窗口的WM_COMMAND通知消息。例如,当用户在编辑控件(EditControl)中执行可能更改文本的操作后,该编辑控件(EditControl)将向其父级发送包含EN_CHANGE控件通知代码的WM_COMMAND消息。该消息的窗口处理程序以某种适当的方式响应此通知消息,例如在控件中检索该文本。框架像传送其他WM_消息一样传送控件通知消息。但是有一个例外的情况,即当用户单击按钮时由按钮发送的BN_CLICKED控件通知消息。该消息被作为命令消息特别处理,并像其他命令一样传送。3、命令消息此类消息包括用户界面对象(菜单、工具栏按钮和快捷键)发出的WM_COMMAND通知消息。框架处理命令的方式与处理其他消息不同,可以使用更多种类的对象处理命令。Windows消息和控件通知消息由窗口来处理(窗口是从CWnd类派生的类的对象)。包括CFrameWnd、CMDIFrameWnd、CMDIChildWnd、CView、CDialog以及从这些基类派生的您自己的类。这些对象封装了HWND——Windows窗口的句柄。命令消息可以由范围更广的对象(文档、文档模板以及应用程序对象本身)处理,而不仅仅由窗口和视图处理。当某一命令直接影响到某个特定对象时,应当让该对象处理此命令。例如,“文件”菜单中的“打开”命令在逻辑上与应用程序相关联:该应用程序接收到此命令时会打开指定的文档。因此“打开”命令的处理程序是应用程序类的成员函数。命令消息比较常见的便是菜单项和工具条了,它的消息映射宏和窗口消息不太一样,一般的形式是这样的ON_COMMAND(id,memberFxn)。还有一种消息叫通知消息。例如树型控件的等一些复杂的控件在单击后需要传递更多的信息,例如光标的位置和当前项的一个结构,所以MFC为控件的每个通知消息也定义了一个宏,它如下:ON_CONTROL(EN_CHANGE,id,memberFxn)。MFC定义了下面的两个主要结构:AFX_MSGMAP_ENTRY