MFC在指定控件區域內改變鼠標光標形狀

MFC想要實現鼠標光標在指定區域內能夠改變其形狀,變成十字,需要對OnMouseMove的消息進行處理,在消息處理函數內添加以下代碼,實現鼠標光標改變的效果。

void CInnovpowerUAVDlg::OnMouseMove(UINT nFlags, CPoint point)
{
	 // TODO:  在此添加消息處理程序代碼和/或調用默認值
	 CPoint point1;
	 CRect pRect;
	 GetClientRect(pRect);//獲取屏幕的矩形大小
	 //先獲取鼠標相對於屏幕的座標
	 GetCursorPos(&point1);


	 //之後把當前鼠標在屏幕上的座標轉化爲相對於窗體rect的座標
	 ScreenToClient(&point1);
	 CRect rect;
	 GetDlgItem(IDC_STATICIMAGE)->GetWindowRect(&rect);//獲得指定控件的矩形大小
	 ScreenToClient(&rect);//最後把當前鼠標在窗體上的座標轉化爲相對於控件rect的座標


	 if (rect.PtInRect(point1))//判斷鼠標光標是否在指定控件區域內
	 {
		 /* ::SetCursor(::LoadCursor(NULL, IDC_CROSS));*/
		 HCURSOR cursor = LoadCursor(NULL,IDC_CROSS);
		 ::SetCursor(cursor);//將光標設置成十字
		 SetClassLong(this->GetSafeHwnd(),
			 GCL_HCURSOR,
			 (LONG)LoadCursor(NULL, IDC_CROSS));//使光標在該區域不再閃爍
	 }
	 else
	 {
		 SetClassLong(this->GetSafeHwnd(),
			 GCL_HCURSOR,
			 (LONG)LoadCursor(NULL, IDC_ARROW));//光標離開該區域恢復默認箭頭形狀
	 }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章