用wtl做一个窗口类,需要将窗口客户区光标设置为自定义光标IDC_PENCIL,代码如下,但光标是改变了,而当鼠标移动到滚动条的时候光标不是系统默认的箭头光标,而是自定义的光标IDC_PENCIL;问题是如何将客户区的光标设置为自定义光标IDC_PENCIL,而当鼠标移动到滚动条的时候将光标设置为系统默认的箭头光标?
...........................代码如下................................class CSourceView : 
   public CWindowImpl<CSourceView>
{
...
private:
    HCURSOR curCursor;
    ...
public:
   CSourceView() 
   {
...
curCursor=AtlLoadCursor(IDC_PENCIL); //自定义类似画笔的光标
...
   }  BEGIN_MSG_MAP(CSourceView)
...
MESSAGE_HANDLER(WM_SETCURSOR, OnSetCursor)
...
  END_MSG_MAP()  LRESULT OnSetCursor(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  {
// TODO : Add Code for message handler. Call DefWindowProc if necessary.
::SetCursor(curCursor);

return 0;
  }
}

解决方案 »

  1.   

    不懂wtl,不过在mfc里.在OnMouseMove里取ClientRect().然后判断point是不是在rect里。CRect::PtInRect ();然后SetCurosr(...);
      

  2.   

    添加非客户区鼠标事件,然后改变鼠标。
    void CMyView::OnNcLButtonDown( UINT nHitTest, CPoint point)
    {
        if( (nHitTest & HTHSCROLL) || (nHitTest & HTVSCROLL) )
        {
             curCursor=::LoadCursor(NULL,IDC_ARROW);
        }
    }