MFC改变鼠标样式、MFC获取鼠标点击的客户区坐标

⌚Time: 2023-06-07 22:28:57

👨‍💻Author: Jack Ge

可用鼠标样式


IDC_APPSTARTING 标准的箭头和小沙漏

IDC_ARROW 标准的箭头

IDC_CROSS 十字光标

IDC_HAND Windows 98/Me, Windows 2000/XP: Hand

IDC_HELP 标准的箭头和问号

IDC_IBEAM 工字光标

IDC_ICON Obsolete for applications marked version 4.0 or later.

IDC_NO 禁止圈

IDC_SIZE Obsolete for applications marked version 4.0 or later. Use IDC_SIZEALL.

IDC_SIZEALL 四向箭头指向东、西、南、北

IDC_SIZENESW 双箭头指向东北和西南

IDC_SIZENS 双箭头指向南北

IDC_SIZENWSE 双箭头指向西北和东南

IDC_SIZEWE 双箭头指向东西

IDC_UPARROW 垂直箭头

IDC_WAIT 沙漏,Windows7系统下会显示为选择的圆圈表示等待

在MFC窗体的OnSetCursor函数中设置鼠标样式,代码


BOOL CdrawTextDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)

{

    // TODO: 在此添加消息处理程序代码和/或调用默认值

    //

    HCURSOR hCur = ::LoadCursor(NULL, IDC_CROSS );//加载鼠标样式

    ::SetCursor(hCur);//设置鼠标样式

    return true;//直接返回true

    return CDialog::OnSetCursor(pWnd, nHitTest, message);

}

获取鼠标点击位置,在窗体OnLButtonDown函数中获取。第二个参数是鼠标在客户区的点位置


void CdrawTextDlg::OnLButtonDown(UINT nFlags, CPoint point)

{

    // TODO: 在此添加消息处理程序代码和/或调用默认值

    CString str;

    str.Format(L"鼠标点击位置:%d %d",point.x,point.y);

    GetDlgItem(IDC_STATIC)->SetWindowText(str);

    CDialog::OnLButtonDown(nFlags, point);

}