MFC 改变光标形状

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC 改变光标形状相关的知识,希望对你有一定的参考价值。

点击一个位图按钮 然后光标变成该位图的形状
该如何实现
BYTE ANDmaskCursor[] =

0xFF, 0xFC, 0x3F, 0xFF, // line 1
0xFF, 0xC0, 0x1F, 0xFF, // line 2
。。。。。。。。。。。。。
0xFF, 0xC3, 0xFF, 0xFF, // line 31
0xFF, 0xFF, 0xFF, 0xFF // line 32
;
BYTE XORmaskCursor[] =

0x00, 0x00, 0x00, 0x00, // line 1
0x00, 0x03, 0xC0, 0x00, // line 2
0x00, 0x3F, 0x00, 0x00, // line 3
。。。。
0x00, 0x00, 0x00, 0x00, // line 31
0x00, 0x00, 0x00, 0x00 // line 32
;这些代码不清楚什么意思

参考技术A 建一个事件:点击一个位图按钮,发送一个消息。
当这个事件发生时,
HCURSOR hCurs3;
hCurs3 = CreateCursor(AfxGetInstanceHandle(), // app.instance #include <afxwin.h>
19, // horizontal position of hot spot
2, // vertical position of hot spot
32, // cursor width
32, // cursor height
ANDmaskCursor, // AND mask
XORmaskCursor ); // XOR mask
(void) SetCursorPos( 200, 200);
(void) ShowCursor( TRUE);

其中的 两个数组,用你自己的位图值:
BYTE ANDmaskCursor[] =

0xFF, 0xFC, 0x3F, 0xFF, // line 1
0xFF, 0xC0, 0x1F, 0xFF, // line 2
。。。。。。。。。。。。。
0xFF, 0xC3, 0xFF, 0xFF, // line 31
0xFF, 0xFF, 0xFF, 0xFF // line 32
;
BYTE XORmaskCursor[] =

0x00, 0x00, 0x00, 0x00, // line 1
0x00, 0x03, 0xC0, 0x00, // line 2
0x00, 0x3F, 0x00, 0x00, // line 3
。。。。
0x00, 0x00, 0x00, 0x00, // line 31
0x00, 0x00, 0x00, 0x00 // line 32
;
#include <Winuser.h>
链接库由你的编译器定 User32.lib (或者Iconcurs.lib Mcursor.lib Cursor.lib)本回答被提问者和网友采纳

MFC编程的时候,改变鼠标光标样式

在rect范围内,鼠标变成移动的样式。
在rect四角和边界上,鼠标变成拖动(以改变rect大小)的双箭头模式。
怎么实现,求大神指导

基本思想是:获取鼠标的位置,判断是否在rect范围内,或者是四角边界,当触发对应条件时,将鼠标style修改就行追问

对这步我做到了。现在需要比方说东西双向箭头的时候,如何移动那条边来改变rect大小呢?

追答

首先这个MFC没有封装现成的控件,因此只能手动写代码实现
建议你查一下CRectTracker,看看是否符合你的需要,我不太确定
如果不行的话只能是自己写了,总之是比较麻烦的

我觉得自己写的话 主要方法就是重载鼠标点击、拖动和抬起三个函数
Down、move和Up
在Down里获取当前鼠标位置、矩形大小位置等等信息
重点在Move里:不停获取鼠标位置,重新获取当前rect位置大小
up:利用当前的rect位置大小重绘

基本思路应该是这样,但是具体实现楼主得自己琢磨了

参考技术A 获取鼠标的位置,判断是否在rect范围内,或者是四角边界

以上是关于MFC 改变光标形状的主要内容,如果未能解决你的问题,请参考以下文章

MFC如何让鼠标移动到按钮上马上改变鼠标形状为手型

MFC中静态控件怎样改变鼠标的形状呀?

c++ X11全局改变光标形状

如何改变vim中的光标形状 : 在插入状态下显示为 beam?而在 其他 状态下 为 block?

MFC中修改光标形状

在Delphi中怎样抓取鼠标形状