Windoows窗口程序五
Posted 庖丁解牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windoows窗口程序五相关的知识,希望对你有一定的参考价值。
程序执行机制 过程驱动-程序的执行过程是按照预订好的顺序执行。 事件驱动-程序的执行是无序,用户可以根据需要随机触发相应的事件。 Win32窗口程序就是采用事件驱动方式执行,也就是消息机制。
当系统通知窗口工作时,就采用消息的方式派发给窗口。
消息组成:
窗口句柄
消息ID
消息的两个参数
消息产生的时间
消息产生时的鼠标位置
//消息结构体 typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; } MSG, *PMSG, *LPMSG;
每个窗口都必须具有窗口处理函数 LRESULT WindowProc( HWND hwnd,//窗口句柄 UINT uMsg,//消息ID WPARAM wParam,//消息参数 LPARAM lParam//消息参数 ); 当系统通知窗口时,会调用窗口处理函数同时将消息ID和消息参数传递给窗口处理函数。 在窗口处理函数中,不处理的消息,使用缺省窗口处理函数,例如DefWindowProc。
//获取消息 BOOL WINAPI GetMessage( LPMSG lpMsg,//存放获取到的消息buffer HWND hWnd,//窗口句柄(如果设置为NULL,表示抓取本进程内所有窗口的消息) UINT wMsgFilterMin,//获取消息的最小ID UINT wMsgFilterMax//获取消息的最大ID ); lpMsg-当获取到消息后,将消息的参数存放到MSG结构中。 hWnd-获取到hWnd所指定窗口的消息 wMsgFilterMin和wMsgFilterMax-只能获取到由他们指定的消息范围内的消息,如果都为0,表示没有范围。
TranslateMessage--翻译消息。将按键消息翻译成字符消息 BOOL TranslateMessage( _In_ const MSG *lpMsg//要翻译的消息地址 ); 检查消息是否是按键消息,如果不是按键消息,不做任何处理,继续执行。
DispatchMessage--派发消息。将消息派发到该消息所属窗口的窗口处理函数上。 LRESULT WINAPI DispatchMessage( _In_ const MSG *lpmsg//要派发的消息 );
WM_DESTROY-窗口被销毁是的消息,无消息参数。常用于在窗口被销毁之前,做相应的善后处理,例如释放资源、内存等。 WM_SYSCOMMAND-系统命令消息,当点击窗口的最大化、最小化、关闭等命令时,收到这个消息。常用于窗口关闭时,提示用户处理。 消息参数:wParam-具体点击位置,例如关闭SC_CLOSE等。 消息参数:lParam-鼠标位置 LOWORD 低字节-水平位置 HIWORD 高字节-垂直位置
以上是关于Windoows窗口程序五的主要内容,如果未能解决你的问题,请参考以下文章
音频处理Melodyne 网络缩放功能 ( 音符分离线 | 片段分离线 | 窗口滚动条 | 网格缩放 | 修改图像显示位置 | 显示五线谱 )