MFC鼠标相关操作说明

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

1:鼠标左键或者右键操作时坐标的转换    事件产生区域为客户区
    程序如下:
void CDemoDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    CRect rect;
    m_staticPic.GetWindowRect(rect);
    ClientToScreen(&point);
    if(rect.PtInRect(point))    //如果鼠标在绘图区
    {
        m_staticPic.ScreenToClient(&point);
        mouseStr.Format("+[x:%d],[y:%d]",point.x,point.y);
        m_status.SetPaneText(0,mouseStr,TRUE);
    }
    CDialogEx::OnLButtonDown(nFlags, point);
}
输入参数point的区域为软件界面的客户区,即不包含菜单栏,工具栏,状态栏。
m_staticPic.GetWindowRect(rect);    //获取某个控件的区域,这里的结果rect为整个屏幕坐标。
ClientToScreen(&point);        //将输入的鼠标客户区的坐标转换为整个屏幕坐标,用于判断鼠标是否在控件区域
m_staticPic.ScreenToClient(&point);    //将已经转换为屏幕坐标的鼠标位置转换到控件坐标,用于显示在控件内的坐标

2:鼠标移动时的坐标转换   流程同左键/右键
    程序如下:
void CDemoDlg::OnMouseMove(UINT nFlags, CPoint point)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    CRect rect;
    m_staticPic.GetWindowRect(rect);
    ClientToScreen(&point);
    if(rect.PtInRect(point))    //如果鼠标在绘图区
    {
        m_staticPic.ScreenToClient(&point);
        mouseStr.Format("+[x:%d],[y:%d]",point.x,point.y);
        m_status.SetPaneText(0,mouseStr,TRUE);
    }
    CDialogEx::OnMouseMove(nFlags, point);
}

3:鼠标滚轮的坐标转换    事件产生区域为整个软件界面
    程序如下:
BOOL CDemoDlg::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    //鼠标滚轮的工作区域为整个界面
    CRect rect;
    m_staticPic.GetWindowRect(rect);
    if(rect.PtInRect(pt))    //如果鼠标在绘图区
    {
        m_staticPic.ScreenToClient(&pt);    //这句不用,只是测试
    }
    return CDialogEx::OnMouseWheel(nFlags, zDelta, pt);
}
输入参数pt的区域为整个屏幕坐标
在获取到控件区域后,可直接判断是否在控件内部

MFC获取客户区鼠标位置和屏幕区鼠标位置 MFC的窗体消息响应函数OnMouseMove, 阅读详情

相关推荐

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

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

m0_60352504的博客 1399

mfc 控制鼠标的程序

通过程序控制鼠标的移动和功能,单击,双击,等等。

OpenCV + MFC 鼠标键盘控制截取图像

前面用Matlab完成过这样的工作,但是win7+64位系统上写的到了XP上用不了,也就懒得再继续了。直接用OpenCV和MFC写了,很简陋的界面和功能,倒也很快就完成了。还是那个想法,记录下留个纪念,能对别人有所帮助就更好了。因为有图像的操作,OpenCV还是很不错滴。在写的过程中,发现OpenCV对于鼠标键盘响应的操作也是灰常的便利呀。看来我真是孤陋寡闻呀… ^O^|||

Jack_Free的专栏 2232

MFC类中的鼠标交互信号创建和绑定,OnMouseMove()和ONLBUTTONDOWN()

创建信号 类视图在相关需要操作的文件对象中打开类导向。如图所示: 在类导向中添加对应的处理程序,系统会创建对应的函数,函数中可以根据需求编写实现。具体操作实现如下图,不同信号对应不同操作。 其中MOUSEMOVE是指鼠标在界面中的移动,可以在对应函数中添加一个位置显示函数实现,能够更清楚了解; //在状态栏最左边实时显示鼠标坐标 CString str; str.Format(_T("[%d,%d] "), point.x, point.y); //获得程序状态栏对象的指针,AFX_IDW

qq_41060452的博客 1398

[MFC]鼠标消息处理

1. 鼠标事件和鼠标消息:     1) 鼠标和光标的区别:鼠标是指实体鼠标,而光标就是鼠标在屏幕上的表示,因此在编程中通常称为光标;     2) 鼠标事件:Windows中分为是三种,按下或释放鼠标、双击鼠标、移动鼠标;     3) 上述三种鼠标实际那将触发鼠标消息,而鼠标消息分为两类,一类是客户区鼠标消息,另一类是非客户区鼠标消息,一般非客户区鼠标消息直接交由DefWindowPro

Lirx_Tech的专栏 4844

MFC框架下实现动态鼠标框选功能

消息映射机制允许开发者将窗口类中的函数与特定的消息相关联。这种机制保证了消息的正确路由和高效处理。消息可以是系统生成的(如鼠标和键盘事件),也可以是应用程序自定义的。消息处理函数的实现需要严格遵守特定的格式和参数,例如处理鼠标消息的函数:// 消息处理逻辑CRectTracker类是MFC(Microsoft Foundation Classes)中用于实现矩形选择区域的类。它常用于图形界面应用程序中,通过鼠标操作绘制、移动或调整矩形框。

weixin_35677363的博客 1100

MFC 鼠标拖动画圆

先计算出圆心, 半径, 然后再根据圆心半径计算出矩形(正方形)的左上角跟右下角的顶点, 然后用Ellipse函数画圆。 源代码如下: 在**view类头文件里添加如下变量 private:     bool m_bLButtonDown;        bool m_bErase;     CPen* pGrayPen;      CPen* pLinePen;

SzMing 1843

MFC 记录button控件的鼠标事件

1 这里的鼠标事件包括 "单击" "双击" "右击" "移动"  2 button有自己的单击事件响应函数, 但是不能区分单击还是双击, 需要自己做判断 void CvcDlg::OnBnClickedButton1() {   // TODO: 在此添加控件通知处理程序代码       MSG message;   DWORD st = GetTickCount();

gaiazhang‘s blog 4612

MFC鼠标和键盘编程实验

最开始想到的并不是MFC框架下的CString类,而是标准库的string类来格式化输出。但运行调试时出现了形参实参不匹配的问题以及多字节和宽字节的矛盾的问题。这是因为在创建项目时使用的是宽字节编码,而是多字节,这中间出现了编码转换的问题,可以使用宏TEXT进行转换,但使用TEXT对的c_str()返回的C风格字符串转换时会报错。因此最终使用了MFC框架下的CString类进行格式化输出。

m0_61219098的博客 714

VS2012环境下MFC鼠标拖动绘制矩形示例

MFC(Microsoft Foundation Classes)是微软提供的一套用于简化Windows应用程序开发的C++类库。MFC封装了大部分Windows API函数,以面向对象的形式提供给开发者,极大提高了Windows应用的开发效率和代码的可复用性。CDC类是MFC(Microsoft Foundation Classes)中用于管理设备上下文(Device Contexts, DC)的抽象基类。设备上下文作为图形绘制的枢纽,它封装了与设备有关的输出绘图操作的属性和方法。

weixin_42451850的博客 928

实现鼠标轨迹划线的MFC编程指南

MFC(Microsoft Foundation Classes)是一个用于Windows应用程序开发的C++库。它提供了一系列预定义的类,用于处理窗口、图形设备接口(GDI)、网络编程和数据库等。MFC框架可以帮助开发者快速构建复杂的GUI应用程序。鼠标事件是与鼠标操作相关的通知,告诉应用程序用户正在通过鼠标与应用程序交互。在MFC(Microsoft Foundation Classes)框架中,鼠标事件主要包括以下几种:: 当用户按下鼠标左键时发出。: 当用户释放鼠标左键时发出。

weixin_35756373的博客 804

VC++和MFC中实现鼠标形状变化的详细指南

在Windows操作系统中,系统预定义了一系列鼠标形状,用于在不同的用户交互场景下提供视觉反馈。常见的预定义鼠标形状包括但不限于:IDC_ARROW:标准箭头,通常用于默认指针。IDC_CROSS:十字形状,常用于绘图应用程序中的精确位置指示。IDC_HAND:手形指针,用于链接或按钮提示用户可以点击。IDC_IBEAM:I形指针,表明文本输入区域。IDC_NO:禁止符号,用于告知用户某一动作不可执行。IDC_WAIT:等待指示器,提示用户程序正在处理某项任务。

weixin_31974443的博客 1385

MFC 显示对话框内鼠标单击点的坐标值

主要分为两步: 1.重载OnLButtonDown函数    步骤: (1)右键单击对话框==>>类向导 (2)类名中选择要重载此函数的.cpp文件,例如*Dlg.cpp==>>选中“消息”列表==>>在消息列表中找到WM_LBUTTONDOWN项,添加处理程序 (3)点击添加处理程序后,选中函数名,编辑代码 2. 在代码中添加代码(代码来自网络):

qq_23862447的博客 4028

opencv MFC中的鼠标响应函数

方法一: bool check_line_state=false; IplImage* imgshow; void on_mouse4(int event, int x,int y,int flags,void* param) { int thickness=1; CvPoint p1,p2; if(event==CV_EVENT_LBUTTONDOWN) { ROI_rect

Rachel Zhang的专栏 8707

MFC 鼠标画线总结

使用mfc鼠标画线,主要使用鼠标左键单击,鼠标移动,鼠标右键单击等响应函数完成。      在mfc画线是主要要注意以下几点:         1、坐标系问题:在鼠标左键单击的响应函数中获取的鼠标坐标为设备坐标(屏幕坐标),而画线使MOVETO,LINETO函数使用的是逻辑坐标(客户区坐标),因此在获取鼠标单击坐标时需要进行坐标系的转换。                同时,如果是在对话框的

hfutljx的博客 7093

MFC中通过Tooltip类来实现悬浮鼠标显示提示信息

方法一: 利用CWnd本身自身支持的tooptip来实现,这种方法适用给控件增加tooltip,非常方便和简单方法如下: 1、在窗口中增加消息映射ON_NOTIFY_EX(TTN_NEEDTEXT, 0, SetTipText) SetTipText是个回调函数,名字叫什么无所谓,符合原型就行了,原型下面会说。    2、EnableToolTips(TRUE),使用这个方法调用这个

ghevinn欢迎您光临 7659

关于MFC的使用总结之八——CGridListCtrlEx鼠标响应事件

MFC的使用总结之八——CGridListCtrlEx鼠标响应事件写在前面点击表格触发事件表格中添加按钮,点击按钮触发事件运行结果如下最终程序 写在前面 MFC是一种用c++设计交互界面的的开发工具,在二三十年前比较流行,但目前比较少用了。所以现在使用MFC进行开发,相关资料的查找也比较困难。最近做了一个与MFC有关的项目,其中用到的相关知识总结于此。在使用工具时,最好的资料其实就是那个库本身,查...

墨藍的博客 2108

MFC VC判断鼠标左键点击在哪个控件并响应相关的处理

1、PreTranslateMessage函数里面 if(pMsg->message == WM_LBUTTONDOWN && pMsg->hwnd == GetDlgItem(IDC_STATIC_1)->GetSafeHwnd()) { //添加响应相关的处理 } 2、可以在OnLButtonDown里面 void XXView::OnLB...

weixin_40407666的博客 2469

MFC 鼠标移动画矩形

MFC 鼠标移动画矩形 问题日记:MFC 鼠标移动画矩形 昨天的时候,模仿人家的软件已经七七八八啦,开始不断完善的工作。首先是完善用鼠标拖动矩形选择东西,开始当然进入死胡同,在OnMouseMove里单纯画矩形,结果测试移动一下鼠标杯了,n个矩形刺瞎了我的眼: 我相信人家做得到的,我也做得到,只是我还不知道而已。于是上网找资料,虽说网上有很多资料,可也有点费时,有时看了资

歌行梅村的专栏 1万+
上一篇: MFC 获取对话框的指针
smrynet
博客等级 码龄17年 2粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值