代码改变世界

windows句柄和消息技术

2012-07-12 13:37  youxin  阅读(501)  评论(0编辑  收藏  举报

 

  windows编程势不可挡。windows编程中所有编程的骨架都是响应和发送消息。什么是message?
消息就是一个指定事件的32byte,若移动鼠标,就会往活动窗口上发送一条消息(WM_MOUSEMOVE),若按下某个键,也会发送一条消息(WM_KEYDOWN) ,若改变大小,也会发送消息WM_SIZE
 那么,这些消息到哪里去了?他们将排队等候,最终将唷窗口把他们从队列中取出,并作出相应的反应。
 
 句柄(handle),windows具有很强的面向对象的特性。window对象很多,譬如桌面,读取的应用程序等等。在非面向对象语言中,程序员如何区分这些东西呢?使用句柄。句柄是引用不同windows对象的方式。 
 
 句柄是某种类型的指针,必须使用某种方式创建这些句柄,当不再使用他们时,应该销毁他们。否则导致resource leak,
 
现在将消息和句柄联系起来。假如有一个窗口,且拥有该窗口的一个句柄(称做一个HWND) 命名句柄为your_HWND,因为其他窗口刚刚从该窗口上移走,操作系统希望重绘窗口。windows传递如下消息
PostMessage(your_HWND,WM_PAINT,0,0)
 
;这个函数通过句柄给窗口发送了一条绘制消息。最后两个参数用作消息的额外信息,暂时不必深究。
 
现在,应用程序有一个函数用一个庞大的case语句来处理所有的消息
void HandleTheMessage(long Message)
{
switch(Message)
{
    case WM_PAINT:
          DrawWindow();
          break;
    case WM_KEYDOWN:
     ----break;
   ----
}
以上就是window的大致工作流程。