在网络游戏(如MU奇迹)中出现的问题:奇迹中的鼠标形状是自定义的,我的程序用Hook技术在游戏中弹出一个普通Dialog* Dialog能正常显示,也能截获键盘事件。* 但鼠标移动到Dialog上就消失了,移出Dialog区域又显示出来* 虽然Dialog上的鼠标不可见,但鼠标事件可以响应:可以用鼠标拖动Dialog,只是看不见鼠标估计是鼠标移动到Dialog上需要重绘,但我的程序没有做处理,导致鼠标不可见。请专家帮忙解答,如果是鼠标需要重绘的原因,请指点一下如何做?

解决方案 »

  1.   

    如果不Hook单独运行可不可见,多半是没正确调入资源。
      

  2.   

    BOOL CSetCursor256Dlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
    {
    if (m_Button1.m_hWnd == pWnd->m_hWnd )
    { //HCURSOR hCursor = AfxGetApp()->LoadCursor(IDC_CURSOR1);
    HCURSOR hCursor = ::LoadCursorFromFile("Tgwrite.cur");
    ::SetCursor(hCursor);
    return TRUE;
    }
    return CDialog::OnSetCursor(pWnd, nHitTest, message);
    }
      

  3.   

    重载你的对话框的WM_SETCURSOR消息,在消息响应函数中调用
    SetCursor(hCursor);并让这个消息响应函数返回true;hCursor:光标句柄
    可以通过LoadCursor或LoadCursorFromFile()来获得!