为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

vc下动态改变鼠标光标实现方法

2017-10-16 3页 doc 15KB 17阅读

用户头像

is_447713

暂无简介

举报
vc下动态改变鼠标光标实现方法vc下动态改变鼠标光标实现方法 vc下动态改变鼠标光标 消息下: SetCursor(AfxGetApp()->LoadStandardCursor(IDC_CROSS)); 或是: HCURSOR hc; hc=LoadCursor(NULL,IDC_CROSS); SetCursor(hc); IDC_APPSTARTING 带小沙漏的标准箭头 IDC_ARROW 标准箭头 IDC_CROSS 十字光标 IDC_HAND windows 2000:手型 IDC_HELP 带...
vc下动态改变鼠标光标实现方法
vc下动态改变鼠标光标实现方法 vc下动态改变鼠标光标 消息下: SetCursor(AfxGetApp()->LoadStandardCursor(IDC_CROSS)); 或是: HCURSOR hc; hc=LoadCursor(NULL,IDC_CROSS); SetCursor(hc); 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 沙漏 windows编程中有两种方法改变指针:一种是当应用的主窗口类注册时,为wndclass结构提供一个全程光标指针,另外一种方法是在程序中处理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的代码中可以看到,它传递一个参数是窗口句柄- 即鼠标指针所指的窗口,这里指的是按钮本身;onsetcursor传递的第二个参数是nhittest,这是一个鼠标点击测试代码,它以htxxx开头,用于wm_nchittest消息;onsetcursor传递的第三个参数是触发事件的鼠标消息的消息id-例 如,wm_mo‎‎usemove。wm_setcursor是专门用来设置鼠标指针的消息,当设置了鼠标指针以后,应该让它返回true以防止windows再作缺省处理。 wm_setcursor的处理机制是这样的,如果有父窗口的话,缺省的窗口过程首先发送wm_setcursor消息到父窗口,如果父窗口处理wm_setcursor消息,则windows不再作任何多余的事情,处理完消息便结束。如果父窗口不处理wm_setcursor消息,windows让子窗口来处理wm_setcursor,如果子窗口也不做任何处理,windows使用全程光标指针,如果没有全程光标指针,则使用箭头指针。 如果你在程序中要是使用动态光标指针,你必须决定是在子窗口处理wm_setcursor消息还是在父窗口中处理wm_setcursor消息。两种方法各有利弊,根据具体情况而定。一般总是让对象决定它们自己的行为属性-也就是说最好在子窗口中做处理。本文中的子窗口即按钮。这就要派生一个新的按钮类,新的按钮类有自己的消息映射及其消息处理过程。可以使用类向导来产生新的按钮类,但那样要做的事情太多。如果你已经有自己的按钮类,那当然是在自己的按钮类中处理wm_setcursor消息。如果没有自己的按钮类而又想偷懒的话,那就在对话框中处理wm_setcursor消息得啦,只是不要向面向对象专家说是我告诉你这么做的。 本文附带一个简单的基于对话框的程序,mycursor,这个例子程序示范了两种方法来改变光标指针。如果将鼠标移到按钮上,光标指针变为蓝色手指,它是通过在对话框中处理onsetcursor实现的,另外,如果将鼠标指针移到带下划线的超链接上,光标指针又变为另外一个windows中常常使用的手指。它是通过在窗口子类中实现的。cstaticlink是一个通用的可重用类,在vc知识库的范例程序中经常用到,其中cstaticlink::onsetcursor的大多数代码处理是从win32hlp.exe可执行程序中吸取手型指针,它们与本文有关光标设置的内容关系不大.
/
本文档为【vc下动态改变鼠标光标实现方法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索