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处理就相当于此窗口对鼠标事件不会有任何反映。

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

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

        

 

stm32学习心得

  • 2014年04月17日 22:28
  • 232KB
  • 下载

stm32_usb_hid_学习心得

  • 2012年12月17日 19:06
  • 71KB
  • 下载

WIN32无边框窗体的缩放、移动与WM_NCHITTEST消息&&UpdateLayeredWindow重要心得

一、WM_NCHITTEST消息 MSDN对它的解释是: The WM_NCHITTEST message is sent to a window when the cursor moves,...

windows下实现win32俄罗斯方块练手,编程的几点心得

编程珠玑2阅读笔记: 1.使用c语言性能监视器,完成对代码的调优工作 2.关联数组:  拓扑排序算法,可以用于当存在遮挡的时候决定三维场景的绘制顺序。 3.小型算法中的测试与调试工具 脚手...

WIN32无边框窗体的缩放、移动与WM_NCHITTEST消息&&UpdateLayeredWindow重要心得

一、WM_NCHITTEST消息 MSDN对它的解释是: The WM_NCHITTEST message is sent to a window when the cursor moves, or...

Win32 IME 编程心得【转】

一些术语 IME: Input Method Editor/Engine, 输入法编辑器, 引擎IMM: Input Method Manager, 输入法管理器Comp: Compositio...

学习心得之ARM (STM32F207)

上一篇专门有提到MSC51的汇编,有MSC51的就应该有对应其它平台的汇编,现在详解ARM下的。 首先讲下两者的区别: 1.C51所用的指令集应用于所有X86架构的系统,被称为CISC(复杂指令集...

STM32中断优先级--学习心得

刚开始学习STM32单片机时,对中断优先级的规则不是很明白,通过今天的学习,对这方面的内容有了新的了解,记录下来以便日后查看。 首先说一下STM32的中断: STM32有84个中断,包括16个内核...

stm32f103学习心得

今年3月份开始接触意法半导体的STM32微控制器,实际操作的是STM32F103VET6,收到过ST免费赠送的STMF407开发板,可惜没有太多时间去研究了。     STM32系列基于嵌入式应用专...

STM32 CAN过滤器的学习心得

http://www.0658.org/viewthread16/3753.htm  关于STM32的CAN的过滤器 STM32普通型芯片的CAN有14组过滤器组,互联型有28组过滤器组. ...
  • stude
  • stude
  • 2011年09月20日 09:06
  • 2602
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:win32学习心得
举报原因:
原因补充:

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