本文总共1494个字,阅读需5分钟,全文加载时间:2.254s,本站综合其他专栏收录该内容! 字体大小:

文章导读:作者:古典小说网 (gudianxiaoshuo.com) 头条:讨厌编程 、 古典古韵古典小说 作品:快乐课堂软件、任性动图软件、古典小说大全 任性动图V9.0版本发布了,之前面试的时候,向面试官演示过这个软件。 面试官看到的……各位看官请向下阅读:

作者:古典小说网 (gudianxiaoshuo.com)

头条:讨厌编程 、 古典古韵古典小说

作品:快乐课堂软件、任性动图软件、古典小说大全

任性动图V9.0版本发布了,之前面试的时候,向面试官演示过这个软件。

面试官看到的往往是不足,果然,没有问我研究的重点,而是其它没有关注的东西,比如光标闪烁,以前没时间解决,现在,核心的都做完了,于是,就着手解决这个问题。

当时面试官,提出这个问题时,我还真没注意过,就说不知道,没研究过,结果被鄙视了,他说他们可以实现。

好吧,我之前没研究过,不知道为什么,面试的都说找熟练的,我无法熟练,只是有了问题,便去解决这个问题。解决完了,过了一段时间就忘了。

今天,就解决下这个光标闪烁的问题。

为什么会闪烁

原因:鼠标移动过程中,会设置为默认的光标,这样你自己设置的光标,和默认光标来回切换,就造成了闪烁

方法:

1、重载CWnd::PreCreateWindow()函数注册自己的要改变鼠标指针的窗口类。

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

2 定义所需的光标

HCURSOR hCursorArrow;HCURSOR hCursorXiGuan;HCURSOR hCursorXuanzhuan;HCURSOR hCursorShensuo;HCURSOR hCursorNS;HCURSOR hCursorWE;HCURSOR hCursorTuceng;HCURSOR hCursorMove;HCURSOR hCurrentCursor; //所用的当前光标

加载光标

LoadCursorEx(){hCursorArrow =LoadCursor(NULL, IDC_ARROW);hCursorXiGuan = AfxGetApp()->LoadCursor(IDC_XIGUAN);hCursorXuanzhuan = AfxGetApp()->LoadCursor(IDC_XUANZHUAN);hCursorShensuo = AfxGetApp()->LoadCursor(IDC_SHENSUO);hCursorNS = LoadCursor(NULL, IDC_SIZENS);hCursorWE = LoadCursor(NULL, IDC_SIZEWE);hCursorTuceng = AfxGetApp()->LoadCursor(IDC_TUCENG);hCursorMove = AfxGetApp()->LoadCursor(IDC_MOVE);//LoadCursor(NULL, IDC_CROSS);//}

重载 SetCursor

SetCursor(HCURSOR hc){if (hc != hCurrentCursor)::SetCursor(hc);hCurrentCursor = hc;}

初始化

OnInitialUpdate(){CScrollView::OnInitialUpdate();//bExit = FALSE;LoadCursorEx();SetCursor(hCursorArrow); //加载光标,设置当前光标

在合适的地方,设置为其它光标就可以了

比如,移动时,设置为

SetCursor(hCursorMove);

使用时,要注意,你自己设置的光标不要频繁切换,否则,也会出现闪烁现象。

以上内容由优质教程资源合作伙伴 “鲸鱼办公” 整理编辑,如果对您有帮助欢迎转发分享!

你可能对这些文章感兴趣:

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注