请教大家一个关于自己设置鼠标光标的问题?

大胡子 2003-12-14 01:43:08
我的工程是:单文档单视图的。我在视图类中改变了鼠标光标,当我又启动了视图的Timer事件后,该鼠标不停的闪。请大家指点一下,谢谢了。
BOOL CMenuExView::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
// TODO: Add your message handler code here and/or call default
if(!m_oldCM.isEmpty())
{
::SetCursor(AfxGetApp()->LoadCursor(IDC_CURSOR1));
return TRUE;
}
return CView::OnSetCursor(pWnd, nHitTest, message);
}
void CMenuExView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if(nIDEvent == 10)
{
CClientDC dc(this);
if(dc.GetSafeHdc() == NULL)
{
CView::OnTimer(nIDEvent);
return;
}
//画了几条线
}
CView::OnTimer(nIDEvent);
}
...全文
95 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
大胡子 2003-12-27
  • 打赏
  • 举报
回复
谢谢了,问题已解决
checkyvc6 2003-12-15
  • 打赏
  • 举报
回复
呵呵,这个问题我也碰到过,告诉你原因和解决方法吧
CMenuExView在mfc默认注册的时候用的是::LoadCursor(IDC_ARROW),所以你要改变它或者设为空NULL就可以chehw(chehw说得没错)
解决办法:
1
在PreCreateWindow()函数里面自己注册一个窗口类(他的hCursor=NULL)将类名传给cs.lpszClassName或者在OnCreate里面
{
::SetClassLong(m_hWnd,GCL_HCURSOR, (LONG)NULL);
SetCursor(::LoadCursor(::GetModuleHandler(), IDC_YOURCURSOR))//这样就不闪了
}

sandy110 2003-12-15
  • 打赏
  • 举报
回复
up
chehw 2003-12-15
  • 打赏
  • 举报
回复
如果你原来有默认的Cursor时,不应使用SetCursor;否则每当鼠标移动时,系统自动恢复原有的Cursor.
一般在OnCreate()中
{
HCURSOR hCursor=::LoadCursor(::GetModuleHandler(), IDC_YOURCURSOR);
::SetClassLong(m_hWnd,GCL_HCURSOR, (LONG)hCursor);
...
return TRUE;
}
大胡子 2003-12-14
  • 打赏
  • 举报
回复
时间间隔是0.5秒啊!
sboom 2003-12-14
  • 打赏
  • 举报
回复
时间间隔太小了吧。

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧