MFC List Control 上实现左键框选

这篇具有很好参考价值的文章主要介绍了MFC List Control 上实现左键框选。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文主要实现了在list control 上进行框选,获得框选区域的左上角及右下角位置坐标。

1、添加 List Control 控件ID设为IDC_Listcontrol

2、给控件添加变量 m_list

3、在头文件中定义:                                                                                                                            //框选
    int RClickRow_Top;
    int RClickCol_Left;
    int RClickRow_Bottom;
    int RClickCol_Right;

    void Box_select();

4、为控件IDC_Listcontrol添加事件处理函数:OnLvnBegindragTraylist

MFC List Control 上实现左键框选

void CDTHSDemoDlg::OnLvnBegindragTraylist(NMHDR *pNMHDR, LRESULT *pResult) //当控件内左键拖拽时触发
{
    LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
    DWORD   dwPos   =   GetMessagePos(); 
    CPoint   point(   LOWORD(dwPos),   HIWORD(dwPos)   ); 
    GetCursorPos(&point);
    //将屏幕坐标转到客户区坐标
    m_TrayList.ScreenToClient(&point);  
    LVHITTESTINFO info;  
    info.pt = point; 
    info.flags   =   LVHT_ABOVE; 
    int Itsub = m_TrayList.SubItemHitTest(&info); 
    RClickRow_Top = info.iItem+1;//行号从0开始
    RClickCol_Left= info.iSubItem+1;//列号从0开始

    itoa(RClickRow_Top, section, 10);
    SetDlgItemText(IDC_EDIT_ROWNUMBER,section );
    itoa(RClickCol_Left, section, 10);
    SetDlgItemText(IDC_EDITCOLUMN,section );

    CWnd *pWnd = GetDlgItem(IDC_TRAYLIST);           //禁用list control以响应OnLButtonUp()函数
    pWnd->EnableWindow(FALSE);

    
    *pResult = 0;
}

5、为弹出框添加事件处理函数:OnLButtonUp//鼠标左键抬起即触发

MFC List Control 上实现左键框选

void CDTHSDemoDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    CWnd *pWnd = GetDlgItem(IDC_TRAYLIST);                   //解除list control的禁用
    pWnd->EnableWindow(TRUE);

    DWORD   dwPos   =   GetMessagePos(); 
    GetCursorPos(&point);
    //将屏幕坐标转到客户区坐标
    m_TrayList.ScreenToClient(&point);  
    LVHITTESTINFO info;  
    info.pt = point; 
    info.flags   =   LVHT_ABOVE; 
    int Itsub = m_TrayList.SubItemHitTest(&info); 
    RClickRow_Bottom = info.iItem+1;//行号从0开始
    RClickCol_Right = info.iSubItem+1;//列号从0开始

    Box_select();
    CDialog::OnLButtonUp(nFlags, point);
}

6、自定义函数Box_select()

void CDTHSDemoDlg::Box_select()
{
    int temp=0;
     if(RClickRow_Top>RClickRow_Bottom)                //若用户从右下角开始框选
     {
         temp=RClickRow_Bottom;
         RClickRow_Bottom=RClickRow_Top;
         RClickRow_Top=temp;
     }
     if(RClickCol_Left>RClickCol_Right)
     {
         temp=RClickCol_Right;
         RClickCol_Right=RClickCol_Left;
         RClickCol_Left=temp;
     }
   for(int i=RClickRow_Top-1;i<RClickRow_Bottom;i++)
   {
     for(int j=RClickCol_Left-1;j<RClickCol_Right;j++)
     {
        //自定义函数体,根据获得的框选区域的左上和右下角坐标进行遍历处理
     }
   }

}

7、效果:可实现左键框选功能

MFC List Control 上实现左键框选MFC List Control 上实现左键框选文章来源地址https://www.toymoban.com/news/detail-443414.html

到了这里,关于MFC List Control 上实现左键框选的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity 如何实现框选游戏战斗单位

    本文简单介绍如何实现即时战略游戏中框选战斗单位的功能,如图所示: 🍺 实现思路: 本文将该功能的实现拆分为以下部分: 在屏幕坐标系中绘制框选范围; 根据框选范围定位其在世界坐标系中对应的区域; 在该区域内进行物理检测。 使用 Line Renderer 光线渲染器组件来

    2023年04月08日
    浏览(38)
  • 全方位讲解:鼠标框选图形功能的技术实现

    如果你正在考虑开发一款图形编辑软件,并希望能够支持常用的框选功能,本文将为你提供一些有用的信息。像下面动画所示那样快速选取单个或多个图形并非易事,尤其是还要考虑到像直线这样的图形有其特别之处。本文提出的解决方案主要是利用包围盒的概念,通过包围

    2024年02月03日
    浏览(51)
  • Unity 实现鼠标左键进行射击

    发射脚本实现思路 分析 确定用户交互方式:通过鼠标左键点击发射子弹。 确定子弹发射逻辑:每次点击后有一定时间间隔才能再次发射。 确定子弹发射源和方向:子弹从枪口(Transform)位置发射,沿枪口方向前进。 变量设定 设定子弹预制体引用:用于在游戏中实例化子弹

    2024年04月11日
    浏览(38)
  • 毕设开源 在iOS上使用OpenCV实现图片中的文字框选

    在iOS上使用OpenCV实现图片中的文字框选 提示:适合用于课程设计或毕业设计,工作量达标,源码开放 首先,需要去OpenCV官网下载iOS的framework,下载好后拖入新建的工程中即可,由于OpenCV库是使用C++编写,所以swift无法直接使用,需要使用OC做桥接,需要使用swift的同学可以看

    2024年03月25日
    浏览(38)
  • Unity ECS实现RTS游戏中的游戏单位框选、集结和移动控制

    今天想给大家分享的主题是如何实现RTS类型游戏中的游戏单位角色控制 本文中会介绍如何运用最新的ECS架构来实现游戏单位控制 上方代码实现的功能是获取被鼠标框选的游戏单位,如果需要源代码可以在文末添加爱丽丝老师的QQ或者微信号领取 代码讲解 获取鼠标框选方框的

    2023年04月12日
    浏览(54)
  • 【vue3】js + css 实现 视频框选放大:局部细节放大、放大镜效果

    实现鼠标框选区域放大显示。 需求1:放大 按住鼠标左键不放 ——》向右侧拖动,框选出需要放大的区域后 ——》松开鼠标 ——》框选区域放大显示 需求2:还原 按住鼠标左键不放 ——》向左侧拖动,框选出随意大小的区域后 ——》松开鼠标 ——》视图显示大小还原 需求

    2024年02月03日
    浏览(56)
  • 计算机毕设分享 在iOS上使用OpenCV实现图片中的文字框选

    在iOS上使用OpenCV实现图片中的文字框选 提示:适合用于课程设计或毕业设计,工作量达标,源码开放 首先,需要去OpenCV官网下载iOS的framework,下载好后拖入新建的工程中即可,由于OpenCV库是使用C++编写,所以swift无法直接使用,需要使用OC做桥接,需要使用swift的同学可以看

    2024年02月21日
    浏览(51)
  • VSCode按ctrl与鼠标左键无法实现跳转的解决办法

     我刚开始遇到的问题是:连接到某个目录文件下ctrl+左键可以实现跳转,但切换到其他目录文件都无法跳转,根据网上的更改用户设置,重新安装c/c++插件等方法都没有解决问题。后来找到了以下办法。 1.找到linux里安装插件的位置,每个人安装位置不一样,我的是在 家目录

    2024年02月12日
    浏览(59)
  • 逆向大漠插件/用VB6.0实现后台鼠标移动和后台鼠标左键点击

    自动化设计软件,在一款做门的设计软件CypCut6.3 上实现了自动化勾选了 复选框。一切都是基于后台的。 Private Const GW_CHILD = 5 Private Const GW_HWNDFIRST = 0 Private Const GW_HWNDNEXT = 2 Public Declare Function FindWindow Lib \\\"user32\\\" Alias \\\"FindWindowA\\\" (ByVal lpClassName As String, ByVal lpWindowName As String) As Lon

    2024年02月07日
    浏览(57)
  • 【sgRectSelect】Vue实现拖拽鼠标圈选、划区域、框选组件:矩形区域选中checkbox,并回调相关选中、取消选中的操作

    边框线虚线动画效果请参阅 边框虚线滚动动画特效_虚线滚动效果_你挚爱的强哥的博客-CSDN博客 【代码】边框虚线滚动动画特效。_虚线滚动效果 https://blog.csdn.net/qq_37860634/article/details/130507289   碰撞检测原理请前往  原生JS完成“一对一、一对多”矩形DIV碰撞检测、碰撞检查,

    2024年02月16日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包