win32学习心得

原创 2007年10月05日 15:28:00

 

 

一 外设消息

           win32系统中有一个系统系统消息队列,所有应用程序中都有一个消息队列。本处只讨论单线程应用程序,以下所说的应用程序均指单线程程序。一个应用程序可以有很多窗口,每个窗口都有自己的窗口过程函数,同一类窗口的窗口过程函数是一样的。

           消息处理的步骤为:外设的驱动程序将外设产生的事件包装成消息的形式放入系统消息队列中,系统在把系统消息队列中的消息放入应用程序的消息队列中。应用程序一般用函数Getmessage将消息从自己的消息队列中取出来,然后将消息交给函数DispatchMessage,此函数根据消息中提供的句柄,找到此句柄对应的窗口的窗口过程函数,窗口过程函数才是处理消息的最终代码。

          当发生键盘或鼠标事件时,键盘驱动只发一个击键消息,如果你想响应键盘事件,比如你想知道输入的字符到底是什么,那么你必须用函数Translatemessage处理击键消息(击键消息不提供字符击键的字符码),此函数被使用后,将给应用程序的消息队列放上一个其他消息,如WM_CHAR。相当于又转回去了,窗口的窗口过程函数现在通过处理WM_CHAR,就能得到具体的字符。

         同样的,鼠标事件的处理也不是一蹴而就的。鼠标事件发生时,驱动只发来一个WM_CHITTEST,如果你想处理发生在应用程序窗口上的事件,那么你必须先将WM_CHITTEST交给DefWindowProc处理,此函数根据WM_CHITTEST将事件发生的屏幕坐标转换为窗口坐标,然后将一个数值代表此坐标,返回给系统,系统处理此坐标以后重新给应用程序一个消息,窗口的过程函数在处理此消息。如果一个窗口不把WM_CHITTEST交给DefWindowProc处理就相当于此窗口对鼠标事件不会有任何反映。

         外设事件一定会被传入应用程序中,但应用程序可自己决定是否对这些事件做出处理。

         以上只是自己的理解,可能有不对的地方。

        

 

WIN32学习——资源学习

1 在使用任何资源的时候都要加上头文件:#include "resource.h" 2 资源的分类(部分): 菜单资源 图标资源 光标资源 字符串资源 加速键资...
  • bimabushihaodongxi
  • bimabushihaodongxi
  • 2017年05月20日 15:15
  • 253

跟我一起玩Win32开发(2):完整的开发流程

上一篇中我给各位说了一般人认为C++中较为难的东西——指针。其实对于C++,难点当然不局限在指针这玩意儿上,还有一些有趣的概念,如模板类、虚基类、纯虚函数等,这些都是概念性的东西,几乎每一本C++书上...
  • tcjiaan
  • tcjiaan
  • 2013年01月13日 16:26
  • 84927

WIN32 控件ListView学习心得

最近学习的是WIN32控件ListView的使用,以下是个人的一点心得。    ListView控件,在直观上个人认为就是表格的意思。与表格一样,ListView也有表头,表头有几个项,下面的内容行...
  • qq2006lx
  • qq2006lx
  • 2015年10月28日 21:15
  • 355

Win32多线程编程学习心得

博客原文地址:http://jerkwisdom.github.io/study/thread/thread-Summary/ 此处博客不再更新。 为什么多线程? 其实不想写这一点,多线程并不一定...
  • jonathan321
  • jonathan321
  • 2016年03月02日 20:26
  • 1636

win32调试API学习心得

要学习如何修改被调试进程,先让我们来了解几个与此有关的函数. 一.读指定进程内存:ReadProcessMemory   此函数的定义为:function ReadProcessMemory(hP...
  • bobopeng
  • bobopeng
  • 2014年06月16日 16:46
  • 291

Win32调试API学习心得(一)

    最近学习了一下WIN32的调试API,并做了一个简单的调试器,略有心得,特写出来希望对需要的朋友有所帮助.参考资料:lczlion:>               彭春华:>概述:   Win...
  • pankun
  • pankun
  • 2003年08月24日 15:33
  • 1599

Win32调试API学习心得(二)

上一章讲解了如何用调试API来打开一个被调试程序,并给出了一个简单的例子,这一章将祥细讲解调试消息包含的内容. 类似于消息处理中的消息结构TMessage一样,调试事件也有自己特定的事件结构,那...
  • pankun
  • pankun
  • 2003年09月03日 22:42
  • 1591

win32调试API学习心得(三)

要学习如何修改被调试进程,先让我们来了解几个与此有关的函数.一.读指定进程内存:ReadProcessMemory  此函数的定义为:function ReadProcessMemory(hProce...
  • pankun
  • pankun
  • 2003年09月15日 09:25
  • 1700

angular学习心得体会

1、ionic的自定义服务factory,service,provide等. .factory('Hots',function(){})”Hots“这个名字是自定义服务的名字,可以注入到不同cont...
  • cao3743438532
  • cao3743438532
  • 2016年10月12日 17:41
  • 294

C++学习心得--完结

1.我们在考虑到继承时设计一个类应该注意的几个基本的问题:基类中的成员函数应该是虚函数;基类中的私有成员应该被声明为保护型成员,因为派生类有时也可能需要访问基类中的私有成员;多重继承时基类应该被声明为...
  • richard_2010
  • richard_2010
  • 2006年05月31日 11:27
  • 3201
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:win32学习心得
举报原因:
原因补充:

(最多只允许输入30个字)