在CMainFrame类里,我想在一个函数里设置一个定时器,同时将鼠标改为沙漏状态;在定时器超时事件触发的处理函数中,将鼠标改回箭头形状,怎么实现呢?我试用过SetCursor()、BeginWaitCursor()函数,它们都只能在同一个函数中实现对光标的修改和恢复,分散到2个函数里,不知道有什么办法?3qs!

解决方案 »

  1.   

    设置一个状态量,在WM_SETCURSOR消息响应里,根据这个状态量改变鼠标。2个函数里只须分别改变状态量即可
      

  2.   

    看看这个,跟你的差不多,反正就是改变鼠标形状,该该//当鼠标指针在view范围内时,显示指定的鼠标形状,并且指定view颜色
    //改写CDmView的PreCreateWindow(CREATESTRUCT& cs)函数
    //其中,IDC_CURSOR1是新加入的鼠标指针资源的ID号,RGB(247,247,255)是view颜色
    BOOL CDmView::PreCreateWindow(CREATESTRUCT& cs)
    {
    if (!CView::PreCreateWindow(cs)) 
    {
    return FALSE;
    }
    cs.lpszClass = AfxRegisterWndClass(CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW,
    AfxGetApp()->LoadCursor(IDC_CURSOR1), ::CreateSolidBrush(RGB(247,247,255)));
    if(cs.lpszClass != NULL)
    return TRUE;
    else
    return FALSE;
    return CView::PreCreateWindow(cs);
    }
      

  3.   

    感谢两位的答复,我找到了可以解决这个问题的办法:
    http://support.microsoft.com/kb/131991/zh-cn
    翻译有点烂,不过可以凑合着看看
    它提供的方法1和方法3我都尝试过第一位的答复,可以做,但是有bug,如果鼠标不动的话,即时我的定时器超时了,鼠标的形状也不会改变的;
    第二位的答复,我没看懂,不好意思的说~再次感谢两位:)