Win32学习02

消息的概念和作用

消息组成(windows下)
    窗口句柄
    消息ID
    消息的两个参数(两个附带信息)
    消息产生的时间
    消息产生时的鼠标位置
消息的作用
当操作系统通知窗口工作时,采用消息的方式派发给窗口的窗口处理函数。

DispatchMessage -派发消息
LRESULT DispatchMessage(
    CONST MSG *lpmsg //要派发的消息
};
{

派发原理
    nMsg.hwnd-->保存窗口数据的内存-->WindProc
    WndProc(nMsg.hwnd,nMsg.message,nMsg.wParam,nMsg.IParam){
        //回到自己的代码(处理消息)
    }
}
将消息派发到该消息所属窗口的窗口处理函数上

窗口处理函数
每个窗口必须具有窗口处理函数。
    LRESULT CALLBACK WindwProc(
    HWND hWnd,//句柄消息
    UNIT uMsg,//消息ID
    WPARAM wParam,//消息参数
    LPARAM IParam,//消息参数
};

当系统通知窗口时,会调用窗口处理函数,同时将消息ID和消息参数传递给窗口处理函数。在窗口处理函数中,不处理的消息,使用缺省窗口处理函数。例如:DefWindowProc。

GetMessage -获取本进程的消息
BOOL GetMessage(
    LPMSG lpMsg,//存放获取到的消息buffer
    Hwnd hWnd,//窗口句柄    
    UINT wMsgFilterMin,//获取消息的最小ID
    UINT wMsgFilterMax,//获取消息的最大ID
};
 lpMsg - 当获取到消息后,将消息的参数存到MSG结构中。
 hWnd - 获取到hWnd所指定的窗口的消息。
 wMsgFilterMin,wMsgFilterMax - 只能获取到由他们指定的消息范围内的消息,如果都为0,表示没有范围。

抓到WM_QUIT返回0,否则返回true

TranslateMessage -翻译消息。将按键消息翻译成字符消息。
BOOL TranslateMessage(
    CONST MSG *lpMsg //要翻译的消息地址
};
检查消息是否是按键的消息,如果不是按键消息不做处理直接返回。

常见消息

WM_DESTROY
产生时间:窗口被销毁时的消息。
附带信息:wParam:0
    IParam:0
一般用法:常用于在窗口被销毁之前做相应的善后处理,例如资源、内存等

WM_SYSCOMMAND
产生时间:当点击窗口的最大化、最小化、关闭等
附带信息:wParam:具体点击的位置,例如关闭SC_CLOSE等
    IParam:鼠标光标的位置。
        LOWORD(Iparam);//水平位置
        HIWORD(IParam);//垂直位置
一般用法:常在窗口关闭时,提示用户处理。

WM_CREATE
产生时间:在窗口创建成功但还未显示时
附带信息:wParam:为0
    IParar:为CREATESTRUCT类型的指针。
    通过这个指针可以获取CreatWindowEx中的全部12个参数的信息。
一般用法:常用于初始化窗口的参数,资源等,包括创建子窗口等。

WM_SIZE
产生时间:在窗口的大小发生变化后。
附带信息:wParam:窗口的大小变化的原因。
    IParam:窗口变化后的大小。
        LOWORD(IParam)//变化后的宽度
        HIWORD(IParam)//变化后的高度
一般用法:常用于窗口大小变化后,调整窗口内各个部分的布局。

WM_QUIT
产生时间:由程序员发送
附带信息:wParam:PostQuitMessage函数传递的参数。
    IParam:0.
一般用法:用于结束消息循环,当GetMessage收到这个消息后,会返回FALSE,结束while处理,退出消息循环。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值