Chinaunix首页 | 论坛 | 博客
  • 博客访问: 589120
  • 博文数量: 752
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5005
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:47
文章分类

全部博文(752)

文章存档

2011年(1)

2008年(751)

我的朋友

分类:

2008-10-13 16:47:08

  当用户在屏幕的某个地方点击鼠标时,Windows 通过其内部机制来决定光标下面是什么东西,在发送WM_LBUTTONDOWN消息之前,Windows 首先要发送WM_NCHITTEST消息来查询光标处于哪个非客户区上方。如果光标在标题上方,则 Windows 返回HTCAPTION。如果光标处于菜单上方,则 Windows 返回HTMENU。如果光标落在客户区,则 Windows 返回HTCLIENT。大多数应用程序都不处理WM_NCHITTEST消息——一般这个消息都是由缺省的窗口过程(DefWindowProc)处理,所以可能有些人从来就没有听说过有这么一个Windows消息。DefWindowProc 进行所有相应的计算来确定像素是否落在标题,菜单,边界,大小调整客户区等区域,同时返回相应的HT码。在这些返回的HT码中有一个HTTRANSPARENT。这个返回码是我们分场感兴趣的东西。它告诉Windows,“我是透明的,不要把任何鼠标事件消息发给我,把它们发给下一个窗口吧。”这里所说的下一个窗口,指的是光标下面Z-坐标上的窗口线程。实际上这就是我们所需要的东西——对CPopupText类做如下修改:
--------------------next---------------------

阅读(242) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~