[MFC学习笔记]--MSG结构体

MSG类的定义

BOOL GetMessage(//从消息队列中取消息的函数,返回一个BOOL值,当消息队列中有消息,就返回一个真。

LPMSG lpMsg,//message infomation 存放消息对象的名字就行了

HWND hWnd,//handle to window 设置为NULL的话,就是获取所有线程的消息

UINT wMsgFilterMin,//first message指示最小的消息的值。WM_KEYFIRST可以指示第一个键盘消息

UINT wMsgFilterMax//last message指示最大的消息的值。如果都设置为0,函数将获取所有范围的消息。即取所有消息队列。

);

例如:MSG msg;

while(GetMessage(&msg,NULL,0,0))

{

TranslateMessage(&msg);//对取到的消息对翻译。比如,按下按键,产生WM_KEYDOWN,WM_KEYUP.如果是输入字母(lpParam附加信息提供),那么. 翻译为WM_CHAR(翻译)

DispatchMessage(&msg);//将收到的消息传递到回调函数。先路由给操作系统,然后操作系统调用回调函数。(投发)

}

 

----------------------------------

MSG类的定义

typedef struct tagMSG { // msg   HWND hwnd;  UINT message;  WPARAM wParam;  LPARAM lParam;  DWORD time;  POINT pt;  } MSG;

HWND:Identifies the window whose window procedure receives the message.也就是一个句柄。

句柄(HANDLE),资源的标识。

操作系统要管理和操作这些资源,都是通过句柄来找到对应的资源。按资源的类型,又可将句柄细分为图标句柄(HICON),光标句柄(HCURSOR),窗口句柄(HWND)

应用程序实例句柄(HINSTANCE)等等各种类型的句柄。操作系统给每一个窗口制定一个唯一的标识号,即窗口句柄。

 

UINT:unsigned int 也就是说 message存放的是一些无符号整形变量。例如,我们按下鼠标,就会产生一个UINT数给message,那么问题来了。

这些数字,是很不好记的,微软给这些UINT定义成了一些宏。这些宏是以WM_开头的。比如,按下鼠标左键为WM_LBOTTONDOWN。 其他的宏要用的时候,自己去查MSDN

 

WPARAM:也是一种整数类型的数据。wParam存放的是message的附加参数,比如,我们按下A键,产生一个WM_CHAR消息,但是不知道按下的是哪个按键,所以,可以将A的ASCII码放在wParam中去。

 

LPARAM:和WPARAM的意思一样,作用不同。

 

DWORD:16*2的整数,time:Specifies the time at which the message was posted

 

POINT:结构体。可以差MSDN。表示了坐标值。pt指示一个光标的位置

 

int WINAPI WinMain(//windows应用程序的入口函数
  HINSTANCE hInstance, //指向当前运行的应用程序实例的句柄。Handle to the current instance of the application
  HINSTANCE hPrevInstance, //指向前一个运行的应用程序实例的句柄。Handle to the previous instance of the application
  LPWSTR lpCmdLine, //LP:长指针类型。LPWSTR:一个指向字符串的长指针。lpCmdLine是命令行的参数command line 
  int nShowCmd //nShowCmd,来决定你的应用程序是最小化还是最大化,还是关闭窗口
)//WinMain函数是操作系统调用的,里面的参数都是操作系统自动给的。
 
命令行就是在windows命令行里面调用你写的程序,就像你在命令行敲calc.exe运行
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值