SetCursor(AfxGetApp()->LoadStandardCursor(IDC_CROSS));这种只是在客户区内有效,想在客户区外还是这种鼠标形状
   咋个实现。。

解决方案 »

  1.   

    用SetClassLong(hWnd,GCL_HCURSOR,光标句柄),其中hWnd是窗口句柄,可以用GetSafeHwnd
    获得
      

  2.   

    给解释下第三个参数吧
    ===========
    光标句柄啊,用LoadCursor(NULL,IDC_CROSS)就能得到啊!
      

  3.   

    我是这样得到的 ,然后说第三个参数是long型。我强制给转换了,可是还是不行啊
      

  4.   

    晕了 用了SetSystemCursor 鼠标变成十字形 变不回来了。。系统指针被改了
      

  5.   

    我是这样得到的 ,然后说第三个参数是long型。我强制给转换了,可是还是不行啊
    ============================================
    HCURSOR LoadCursor(
      HINSTANCE hInstance,  // handle to application instance
      LPCTSTR lpCursorName  // name or resource identifier
    );
    怎么可能呢?不过上面这些都是API,引用的时候要加::的.
      

  6.   

    试了SetSystemCursor 确实可以 鼠标差点就没变回来。。HCURSOR m_hcur = ::LoadCursor(NULL,IDC_CROSS);
    HWND hWnd = GetSafeHwnd();
    ::SetClassLong(hWnd,GCL_HCURSOR,m_hcur);编译的时候
    error C2664: “SetClassLongA” : 不能将参数 3 从“HCURSOR”转换为“LONG”
      

  7.   

    我刚才试了一下,SetClassLong第三个参数确实报错了,不过转换了一下就行了,我的代码:
    void CBfView::OnTest() 
    {
    HCURSOR hCursor=::LoadCursor(NULL,IDC_CROSS);
    ::SetClassLong(GetSafeHwnd(),GCL_HCURSOR,(long)hCursor);
    }
    能顺利将光标改为十字形的
      

  8.   

    感谢你的回答啊。我想实现的效果是在客户区外也能保持这个改变的鼠标状态。
    SetSystemCursor 这个可以。