在视图类中创建了一个按钮,现在想要设置按钮上的光标,int CShiyanView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;

// TODO: Add your specialized creation code here
    m_button.Create("aaa",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_LEFT,CRect(100,100,150,140),this,IDB_BUTTON);
m_button.SetCursor(::LoadCursor(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDC_CURSOR1))); return 0;
}
但是这样做不行,请问要怎么做?????

解决方案 »

  1.   

    设置视图的光标在响应WM_SETCURSOR消息中OnSetCursor()
    {}
      

  2.   

    除此之外还有没有其他方法,按钮类好像也有自己的OnSetCursor();能不能用他呢?
      

  3.   

    你的意思是,自己定义一个按钮类,这个按钮类要派生与CButton,然后呢??要不要把WM_SETCURSOR映射到自己的类中,还是只要重写OnSetCursor();
      

  4.   


    还有,那个CButton::SetCursor要怎么用,好像都不行?
      

  5.   

    BOOL CPictureExDemoDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
    {
    CRect rect;//按钮范围
    m_Button.GetWindowRect(&rect);
    ScreenToClient(&rect); CPoint point;//鼠标位置
    GetCursorPos(&point);
    ScreenToClient(&point); HCURSOR hCursor = AfxGetApp()->LoadCursor(IDC_HAND);//光标,建议还是定义成员变量,构造函数中就导入,不需要每次都去导入
    if (rect.PtInRect(point) && hCursor)
    {
    SetCursor(hCursor);
    return TRUE;
    }; return CDialog::OnSetCursor(pWnd, nHitTest, message);
    }
      

  6.   

    感谢8楼:
       你的方法我知道了,可以;但是你调用的SetCursor不是CButton类的函数,如果把你上面的换成m_Button.SetCursor那行不行呢?
      

  7.   

    setclasslong(hwnd,GCL_HCURSOR,(LONG)loadcursor(.....));
      

  8.   

    换成m_Button.SetCursor就不是你要的效果了,m_Button.SetCursor只是为按钮画上光标的图像而已。你可以试试,看一下效果就明了。注意风格要加BS_ICON.
    myButton.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_ICON, 
    CRect(10,10,60,50), pParentWnd, 1);
    myButton.SetCursor( ::LoadCursor(NULL, IDC_APPSTARTING) );