设置鼠标的形状

news/2024/11/1 10:31:10/

SetCursor(AfxGetMainWnd()->LoadStandardCursor(IDC_WAIT));  
   
    其中::SetCursor()是全局函数,用来设置整个例程的光标参数是宏定义光标句  
  柄。AfxGetMainWnd()是一个系统函数,它返回当前主窗体的句柄。而CWinApp的  
  LoadStandardCursor()成员函数用来读取一个系统指针,每一种系统指针的具体宏  
  定义如下:  
   
  IDC_APPSTARTING     带小沙漏的标准箭头  
  IDC_ARROW     标准箭头  
  IDC_CROSS     十字光标(用于定位)  
  IDC_HAND     Windows   2000:手型  
  IDC_HELP     带问号的箭头  
  IDC_IBEAM     I型标  
  IDC_ICON     Obsolete   for   applications   marked   version   4.0   or   later.    
  IDC_NO       禁止符号  
  IDC_SIZE     Obsolete   for   applications   marked   version   4.0   or   later.   Use   IDC_SIZEALL.    
  IDC_SIZEALL     十字箭头  
  IDC_SIZENESW     指向东北和西南的双向箭头  
  IDC_SIZENS     指向南和北的双向箭头  
  IDC_SIZENWSE     指向西北和东南的双向箭头  
  IDC_SIZEWE     指向东西的双向箭头  
  IDC_UPARROW     上箭头  
  IDC_WAIT     沙漏  

 

另外,也可以通过::SetCursor(::LoadCursor(NULL, IDC_WAIT));来设置鼠标的形状

转粘(vckbase):  
  Windows编程中有两种方法改变指针:一种是当应用的主窗口类注册时,为WNDCLASS结构提供一个全程光标指针(HCURSOR),另外一种方法是在程序中处理WM_SETCURSOR消息来设置鼠标光标。标准的MFC应用程序使用第一种方法自动在主窗口注册时将光标指针设置为一个箭头。如果要改变光标指针,则可以通过在主窗口或子窗口中重载消息WM_SETCURSOR的处理函数来重新设置鼠标指针。    
   
  //   handle   WM_SETCURSOR   in   button   class    
  BOOL   CMyButton::OnSetCursor(CWnd*   pWnd,   UINT   nHitTest,   UINT   msg)    
  {  
  ::SetCursor(m_hMyCursor);  
  return   TRUE;  
  }  
   
   
          当用户将鼠标指针移到按钮上时,鼠标不被捕获,Windows发送一个WM_SETCURSOR消息到按钮。从上面OnSetCursor的代码中可以看到,它传递一个参数是窗口句柄(pWnd)-   即鼠标指针所指的窗口,这里指的是按钮本身;OnSetCursor传递的第二个参数是nHitTest,这是一个鼠标点击测试代码(Mouse   Hit-Test   Codes),它以HTXXX开头,用于WM_NCHITTEST消息;OnSetCursor传递的第三个参数是触发事件的鼠标消息的消息ID-例如,WM_MOUSEMOVE。WM_SETCURSOR是专门用来设置鼠标指针的消息,当设置了鼠标指针以后,应该让它返回TRUE以防止Windows再作缺省处理。  
   
        WM_SETCURSOR的处理机制是这样的,如果有父窗口的话,缺省的窗口过程首先发送WM_SETCURSOR消息到父窗口,如果父窗口处理WM_SETCURSOR消息(即返回TRUE),则Windows不再作任何多余的事情,处理完消息便结束。如果父窗口不处理WM_SETCURSOR消息(即返回FALSE),Windows让子窗口来处理WM_SETCURSOR,如果子窗口也不做任何处理(返回FALSE),Windows使用全程光标指针,如果没有全程光标指针,则使用箭头指针。  
   
   
          如果你在程序中要是使用动态光标指针,你必须决定是在子窗口处理WM_SETCURSOR消息还是在父窗口中处理WM_SETCURSOR消息。两种方法各有利弊,根据具体情况而定。一般总是让对象决定它们自己的行为属性-也就是说最好在子窗口中做处理。本文中的子窗口即按钮。这就要派生一个新的按钮类,新的按钮类有自己的消息映射及其消息处理过程。可以使用类向导来产生新的按钮类,但那样要做的事情太多。如果你已经有自己的按钮类,那当然是在自己的按钮类中处理WM_SETCURSOR消息。如果没有自己的按钮类而又想偷懒的话,那就在对话框中处理WM_SETCURSOR消息得啦,只是不要向面向对象专家说是我告诉你这么做的。  
   
   
          本文附带一个简单的基于对话框的程序,MyCursor,这个例子程序示范了两种方法来改变光标指针。如果将鼠标移到按钮上(“OK”键和“Cancel”键),光标指针变为蓝色手指,它是通过在对话框中处理OnSetCursor实现的(参见代码),另外,如果将鼠标指针移到带下划线的超链接上,光标指针又变为另外一个Windows中常常使用的手指。它是通过在窗口子类(CStaticLink)中实现的。CStaticLink是一个通用的可重用类,在VC知识库的范例程序中经常用到,其中CStaticLink::OnSetCursor的大多数代码处理是从win32hlp.exe可执行程序中吸取手型指针,它们与本文有关光标设置的内容关系不大.


http://www.ppmy.cn/news/361326.html

相关文章

改变鼠标指针图案

可以使用css来控制 1 2 3 .class { cursor : url ( 路径 ), auto ; } cursor是支持自定义图标的 只要定义该元素的样式,给定路径后,就可以加载。 不过要注意的是,考虑到IE的兼容性问题,最好使用ico或cur格式的文件,分辨…

动态创建一个鼠标指针图案

function CircleCursor(// 创建一个圆形的鼠标图案 AColor: TColor;// 指定圆形的颜色 ASize: Integer // 指定圆形的直径 ): HCursor;// 返回鼠标图案句柄 var vBitmapMask: TBitmap; vBitmapColor: TBitmap; vIconInfo: TIconInfo; begin vBitmapMask : TBitmap.Create; vBit…

鼠标样式:cursor属性值(含自定义光标图案) - 代码篇

文章目录 鼠标样式:cursor属性值(含自定义光标图案) - 代码篇1. 常用取值 举例:2. 更多取值 截图参考 (部分图标显示,因电脑系统而异):3. 自定义cursor图片:附&#xf…

processing制作熊猫头像跟随鼠标拖尾

先上效果图: 我演示时电脑有点卡所以看着有些顺畅,你的电脑应该是没有问题的。 processing实现跟随鼠标拖尾其实不难,在这篇文章中我将介绍图案封装、封装图案整体缩放、数组的创建方法以及一些逻辑处理技巧像for和if这些 目录 1.封装图案 …

修改鼠标光标的形状

我还是比较习惯通过案例说明问题,需求案例描述如下:实现一个从 CDialog 派生的窗口类,要求当鼠标移动到窗口客户区的时候,修改鼠标指针的形状,使其显示一个小手的形状。 为了后面阐述方便,我们假设该派生窗…

鼠标的图像

var mouse_pic:Texture; function Start(){ Screen.showCursorfalse; }function OnGUI(){ var mouse_posInput.mousePosition; GUI.DrawTexture(Rect(mouse_pos.x,Screen.height-mouse_pos.y,16,20),mouse_pic); }

鼠标移动文字上显示图片

鼠标移动显示图片 js <script type"text/javascript">$(function(){$(document).mousemove(function (en) { var xPos parseInt(en.pageX15) "px";var yPos parseInt(en.pageY12) "px"; $("div").css("left", …

前端做一个鼠标指针图案替换鼠标样式并在项目中使用

先做一个.cur 类型的文件&#xff08;.cur类型的文件众多浏览器都能兼容&#xff09;&#xff1a; 如果可以的话&#xff0c;可以自己画一张鼠标样式的图片。这里从网上借用了一张橡皮擦的 .jpg 图片。 这个图片不是 .png 类型的图片&#xff08;有白色的背景&#xff09;。 然…