Visual C++ 时尚编程百例014(限制鼠标)

在CXXXView.h中添加
public:
 HCURSOR m_hCursor;
 int m_hClick;//
protected:
 void LoadCur(UINT CurName);
 void GetCur(int ID_NO);
源文件添加
Cvc1010View::Cvc1010View()
{
 // TODO: 在此处添加构造代码
 m_hClick=0;
}
void Cvc1010View::OnLButtonDown(UINT nFlags, CPoint point)
{
 // TODO: 在此添加消息处理程序代码和/或调用默认值
 ++m_hClick;
 GetCur(m_hClick);//获取鼠标指针
 SetCursor(m_hCursor);
 RECT rect;
 GetClientRect(&rect);
 ClientToScreen(&rect);//该函数将指定点,或者矩形的用户坐标转换成屏幕坐标。
 ClipCursor(&rect);//限制鼠标移动范围(在rect内)
 CScrollView::OnLButtonDown(nFlags, point);
}

void Cvc1010View::OnMouseMove(UINT nFlags, CPoint point)
{
 // TODO: 在此添加消息处理程序代码和/或调用默认值
 SetCursor(m_hCursor);
 CScrollView::OnMouseMove(nFlags, point);
}

void Cvc1010View::OnLButtonUp(UINT nFlags, CPoint point)
{
 // TODO: 在此添加消息处理程序代码和/或调用默认值
 ClipCursor(NULL);
 CScrollView::OnLButtonUp(nFlags, point);
}

void Cvc1010View::LoadCur(UINT CurName)
{
 //AfxGetApp()返回指向应用程序的单一的CWinApp对象的指针。
 m_hCursor=AfxGetApp()->LoadCursorW(CurName);//
}
void Cvc1010View::GetCur(int ID_NO)
{
 if(m_hClick>6)
  m_hClick=1;
 switch(m_hClick)
 {
 case 1:LoadCur(IDC_NODROP);break;
 case 2:LoadCur(IDC_POINTER);break;
 case 3:LoadCur(IDC_POINTER_COPY);break;
 case 4:LoadCur(IDC_NODROP);break;
 case 5:LoadCur(IDC_POINTER);break;
 case 6:LoadCur(IDC_POINTER_COPY);break;
 }
}

posted @ 2011-03-09 09:56  大气象  阅读(708)  评论(0编辑  收藏  举报
http://www.tianqiweiqi.com