lin1270

1.如果程序按住左键不放,改变鼠标形状,左键弹起时,又改回默认,这是很简单的,在OnLButtonDown下,SetCapture,然后SetCursor即可。

2.如果单击了左键,而且弹起来了,再移动鼠标时,这时候就比较难以改变,如何要做一个取色计之类的软件,你还得处理单击不使之生效的问题。

 

这个时候,可以使用一个假象来实现该功能:

1)建一个全屏幕窗口,去标题,把WM_ERASEBKGROUND直接返回TRUE,这时候,窗口不会控除背景,它的背景就是屏幕背景,这个就是假象。

2)为了使窗口跟着屏幕刷新,比较屏幕上有GIF,FLASH之类的动态东东,也为了动态刷新,可以使用WS_EX_TRANSPARENT属性,该属性的意思是只有当底窗口刷新时,我自己才刷新,所以屏幕有GIF时,它会刷新,于是我也跟着刷新,就实现了跟着屏幕变化的效果。

3)在该窗口中WM_SETCURSOR设置鼠标形状,即可实现窗口外鼠标形状的改变,而且用户感觉不到这个窗口的存在。

 

具体的代码,在安装了VS2008及其SP1后,见代码:

$VS2008$/VC/atlmfc/src/mfc/afxcolordialog.cpp 中的CSreenWnd类。

该类的调用方式见279行的void CMFCColorDialog::OnColorSelect () 函数。

 

在公司使用虚拟机上网啊,不能复制粘贴,只好这么发贴了。。

 

分类:

技术点:

相关文章:

  • 2021-09-11
  • 2021-09-06
  • 2021-12-22
  • 2021-11-11
  • 2021-09-06
  • 2021-09-16
  • 2021-11-20
猜你喜欢
  • 2021-12-06
  • 2021-09-06
  • 2021-12-06
  • 2021-09-06
  • 2021-09-06
  • 2021-10-17
  • 2021-09-06
相关资源
相似解决方案