Windows编程初涉

来源:互联网 发布:淘宝宝贝被别人复制了 编辑:程序博客网 时间:2024/06/05 02:15

第一次接触Windows编程 就遇到了第一个瓶颈 发现 消息循环代码中的函数都是我之前没有见过的。就这样一点一滴开始了漫长的学习之旅。

消息循环代码:

While(GetMessage(&Msg,NULL,0,0)>0)

{

TranslateMessage(&Msg);

DispatchMessage(&Msg);

}

return Msg.wParam;

 

首先 在老师的帮助下 我了解了句柄 线程等等一系列名词的意义。


句柄:标识应用程序中的不同对象和同类中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息。

百度中是如是解释 类似于指针 却不同于指针,不能利用句柄来直接阅读文件中的信息。


线程(Thread):是程序中单个顺序流程。


MSG:message结构体,代表消息 具体定义如下:

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


函数功能:

GetMessage函数的功能是从线程的消息队列中取得一个消息,并将其放于指定的结构。获取消息成功后,线程将从消息队列中删除该消息。

 

参数列表:GetMessage(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax)

lpMsg:指向MSG结构的指针,该结构从线程消息队列里接收消息信息。

hWnd:取得其消息的窗口的句柄。当其值取NULL时,GetMessage为任何属于调用线程的窗口检索消息,线程消息通过PostThreadMessage寄送给调用线程。

wMsgFilterMin:指定被检索的最小消息值的整数。

wMsgFilterMax:指定被检索的最大消息值的整数。

 

返回值:如果函数取得WM_QUIT之外的其他消息,返回非零值。如果函数取得WM_QUIT消息,返回值是零。如果出现了错误,返回值是-1。

 

 

TranslateMessage函数:该函数将虚拟键消息转换为字符消息。字符消息被寄送到调用线程的消息队列里,当下一次线程调用函数GetMessagePeekMessage时被读出。

 

参数列表:TranslateMessage( CONST MSG*lpMsg

 

IpMsg:指向含有消息的MSG结构的指针,该结构里含有用函数GetMessage或PeekMessage从调用线程的消息队列里取得的消息信息。

返回值:如果消息被转换(即,字符消息被寄送到调用线程的消息队列里),返回非零值。如果消息是WM_KEYDOWN,WM_KEYUP WM_SYSKEYDOWN或WM_SYSKEYUP,返回非零值

 

参数列表:DispatchMessage(CONST MSG*lpMsg);

 

函数功能:该函数分发一个消息给窗口程序。通常消息从GetMessage函数获得。消息被分发到回调函数(过程函数),作用是消息传递给操作系统,然后操作系统去调用我们的回调函数,也就是说我们在窗体的过程函数中处理消息。

 

回值:返回值是窗口程序返回的值。尽管返回值的含义依赖于被调度的消息,但返回值通常被忽略。


0 0
原创粉丝点击