如何在改变鼠标光标时不闪烁

yushiqin109

yushiqin109

2016-02-19 16:40

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的如何在改变鼠标光标时不闪烁,过去的都会过去,迎接崭新的开始,释放更美好的自己。

  微软知识库有一篇文章Q131991描述了三种方法来改变基于MFC应用的鼠标光标。其中一种方法是重载CWnd::PreCreateWindow()函数注册自己的要改变鼠标指针的窗口类。这个方法对于要始终使用一个鼠标光标的应用程序很适合。

  如果在应用程序中要动态改变鼠标光标,微软知识库的这篇文章建议重载CWnd::OnSetCursor()来实现。但是这种方法有一个缺点,就是当设置鼠标光标及还原时都会出现令人讨厌的光标闪烁。

  如果应用程序中要使用几个不同的鼠标光标,为了不发生任何光标闪烁,本文介绍一种方法:首先按照微软知识库文章所说重载PreCreateWindow函数,但是不要指定要使用的鼠标光标,而是使用NULL。这样就防止了Windows或MFC针对鼠标指针做任何操作。

  

BOOL CMyView::PreCreateWindow(CREATESTRUCT& cs){// 创建自己的窗口类,窗口不设置光标,以便根据需要进行设置 if (cs.lpszClass == NULL)cs.lpszClass = AfxRegisterWndClass(CS_DBLCLKS);return CScrollView::PreCreateWindow(cs);}

  因为窗口类没有任何事先指定好的的鼠标指针,所以以上代码有效地派出了光标的闪烁。(注意这段代码创建的窗口类也没有背景刷,所以窗口的背景色需要自己画。为此要向函数AfxRegisterWndClass()传递第三个参数作为背景刷。)

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  光标的闪烁是消除了,但同时光标也没了!不用担心。在处理鼠标事件OnMouseMove时设置光标是很容易的事情。实践证明,如果要在应用窗口中改变鼠标指针,在OnMouseMove事件处理模块中设置光标是最方

  便的。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  

void CMyView::OnMouseMove(UINT nFlags, CPoint point){// 设置光标表示当前的操作if (m_nOperation == OPERATION_1)::SetCursor(AfxGetApp()-LoadStandardCursor(IDC_CROSS));else if (m_nOperation == OPERATION_2)::SetCursor(AfxGetApp()-LoadStandardCursor( ??? ));else // 普通光标指针::SetCursor(AfxGetApp()-LoadStandardCursor(IDC_ARROW));}

  尽管要做一点额外的工作,但它实现了应用中不同的鼠标指针变化,同时消除了闪烁。

展开更多 50%)
分享

猜你喜欢

如何在改变鼠标光标时不闪烁

编程语言 网络编程
如何在改变鼠标光标时不闪烁

如何编辑鼠标光标

电脑入门
如何编辑鼠标光标

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

改变窗口中的光标形状

C语言教程 C语言函数
改变窗口中的光标形状

PowerPoint播放幻灯片时如何隐藏鼠标光标

电脑入门
PowerPoint播放幻灯片时如何隐藏鼠标光标

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

随鼠标的闪烁小星星

电脑网络
随鼠标的闪烁小星星

Win7系统如何调整鼠标光标的方法

电脑网络
Win7系统如何调整鼠标光标的方法

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

DLL(Dynamic Link Libraries)全面剖析(2)

DLL(Dynamic Link Libraries)全面剖析(2)

MFC Activex 录音机控件

MFC Activex 录音机控件
下拉加载更多内容 ↓