CWindows编程之消息循环和消息结构.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:4 大小:37KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

CWindows编程之消息循环和消息结构.doc

CWindows编程之消息循环和消息结构.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

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

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

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

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

继注册窗体类、创建窗体往下讲。我们用VisualStudio创建一个win32项目上会自动生成一个消息处理函数。如下:[cpp]viewplaincopyprint?<SPANstyle="FONT-SIZE:12px">////函数:WndProc(HWND,UINT,WPARAM,LPARAM)////目的:处理主窗口的消息。////WM_COMMAND-处理应用程序菜单//WM_PAINT-绘制主窗口//WM_DESTROY-发送退出消息并返回////LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam){intwmId,wmEvent;PAINTSTRUCTps;HDChdc;switch(message){caseWM_COMMAND:wmId=LOWORD(wParam);wmEvent=HIWORD(wParam);//分析菜单选择:switch(wmId){caseIDM_ABOUT:DialogBox(hInst,MAKEINTRESOURCE(IDD_ABOUTBOX),hWnd,About);break;caseIDM_EXIT:DestroyWindow(hWnd);break;default:returnDefWindowProc(hWnd,message,wParam,lParam);}break;caseWM_PAINT:hdc=BeginPaint(hWnd,&ps);//TODO:在此添加任意绘图代码...EndPaint(hWnd,&ps);break;caseWM_DESTROY:PostQuitMessage(0);break;default:returnDefWindowProc(hWnd,message,wParam,lParam);}return0;}</SPAN>////函数:WndProc(HWND,UINT,WPARAM,LPARAM)////目的:处理主窗口的消息。////WM_COMMAND-处理应用程序菜单//WM_PAINT-绘制主窗口//WM_DESTROY-发送退出消息并返回////LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam){intwmId,wmEvent;PAINTSTRUCTps;HDChdc;switch(message){caseWM_COMMAND:wmId=LOWORD(wParam);wmEvent=HIWORD(wParam);//分析菜单选择:switch(wmId){caseIDM_ABOUT:DialogBox(hInst,MAKEINTRESOURCE(IDD_ABOUTBOX),hWnd,About);break;caseIDM_EXIT:DestroyWindow(hWnd);break;default:returnDefWindowProc(hWnd,message,wParam,lParam);}break;caseWM_PAINT:hdc=BeginPaint(hWnd,&ps);//TODO:在此添加任意绘图代码...EndPaint(hWnd,&ps);break;caseWM_DESTROY:PostQuitMessage(0);break;default:returnDefWindowProc(hWnd,message,wParam,lParam);}return0;}先看概念:1)基于消息的事件驱动机制c++中的Windows应用是基于消息的事件驱动的,它不是由事件的顺序来控制,而是由事件的发生来控制,而事件的发生是随机的,不确定的,并没有预定的顺序,这样就允许程序的用户用各种合理的顺序来安排程序的流程。事件驱动围绕这消息的产生与处理展开,一条消息是关于发生的事件的消息,事件驱动是靠消息循环机制来实现的。因此,也有这种说法:c++是消息驱动的,Java和C#是事件驱动的。但其本质的一样的,应为消息是一种报告有关事件发生的通知。Windows应用程序的消息来源有以下四种:(1)输入消息:包括键盘和鼠标的输入。者一类消息先放在系统消息队列中,然后由Windows将他们送入应用程序的消息队列中,有应用程序开处理消息。(2)控制消息:用来与windows的控制对象(如列表框、按钮、复选框等)进行双向通信。这类消息一般不经过应用程序消息队列,而是直接发到控制