VC 加载自定义形状鼠标的三种常用方法

首先通过插入->资源->引入插入相应的图标

然后在视类中自定义一个成员变量HCURSOR m_cursor;

如果是加载系统图标则使用下面的方法即可:

m_cursor = LoadCursor(NULL,IDC_CROSS); //加载系统自定义的十字架形状的鼠标

 

如果是加载自定义的鼠标,则可以使用下面三种方法(第一个参数必须为当前应用程序的实例句柄,第二个参数必须是图标资源名称或者图标资源字符串):
m_cursor = LoadCursor(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON1));

 

 

m_cursor = LoadCursor(theApp.m_hInstanceMAKEINTRESOURCE (IDI_ICON1));

注意:在一个文件中想要使用另外一个文件中定义的全局变量时,必须在使用之前声明这个变量时外部定义的,

extern  CTestAPP theApp;  //此处只是外部声明,而非定义,切记

 

 

m_cursor = LoadCursor(AfXGetAPP()->m_hInstance,MAKEINTRESOURCE IDI_ICON1));

 

MAKEINTRESOURCE 的作用:

是把一个"数字形ID",转化为"字符串".但是执行前后,输入的数据的内容和长度是不变的!它只不过就是C语言里面"强制类型转换"而已.

 

 

如果我们是要在整个应用程序运行期间鼠标形状都是我们自定义的,则我们既可以在窗口创建前,也可以在窗口创建后进行修改.

1.在窗口创建前修改:

由于鼠标是在视图类上显示的,所以在视图类的PreCreateWindow函数中利用AfxRegisterWndClass进行修改,其返回值是所对应的窗口类的名称。

cs.lpszclass = AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW,m_cursor,0,0);

 

2.在窗口创建后修改:

在OnCreate函数中利用SetClassLong函数进行修改

SetClassLong(m_hwnd,GCL_CURSOR,(long)m_cursor);

 

 

 

如果我们并不想鼠标在整个程序运行过程当中都是我们定义的形状,则我们可以在消息响应的时候才设置鼠标的形状,比如我们在鼠标在窗口客户区移动的时候将鼠标设置为自定义形状,则我们可以在OnMouseMove当中加入如下代码:

::SetCurSor(m _cursor);

 

 

 

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页