zoukankan      html  css  js  c++  java
  • 如何获取鼠标在控件中位置


    在GetcursorPos得到鼠标在屏幕的位置,在屏幕获取控件的矩形位置,用GetcursorPos得到鼠标位置减去控件矩形坐标,正是鼠标在控件上的坐标位置.我晕,半天都没人回答,让我自己给解决了.
     
    MFC如何获取控件在对话框上的位置坐标

    本来希望的效果是在对话框上设置两个picture控件,分别显示两幅图像,然后将两幅图像中的相似部分利用一条直线连接起来。要实现这样的效果需要知道相似位置在这两幅图中的坐标以及这两个控件在对话框上的坐标,然后通过加减运算就可以得到图像上的相似区域在对话框的坐标,直接将这两个坐标用直线连接就可以了。                                                                                

    为此,如何获得控件在对话框上的坐标是关键问题。编写了如下的测试小程序,目的是将两个picture控件中的点用直线连接起来,比较直观的是picture控件的四个角,所以程序中是将控件的拐角连接起来。首先在对话框上并排放置两个同样大小的picture控件,将他们的标识分别设成IDC_LEFT和IDC_RIGHT,然后添加两个编辑框用于显示picture控件的大小,给这两个编辑框添加相应的数据成员m_row和m_colume。添加一个按钮用于连接picture控件中的点,为这个按钮添加成员函数OnMatch() 。

    void CControlDlg::OnMatch() 
    {
    // TODO: Add your control notification handler code here
    CRect rectL,rectR;
    GetDlgItem(IDC_LEFT)->GetWindowRect(&rectL);//获取控件相对于屏幕的位置
    ScreenToClient(rectL);//转化为对话框上的相对位置
    GetDlgItem(IDC_RIGHT)->GetWindowRect(&rectR);//获取控件相对于屏幕的位置
    ScreenToClient(rectR);//转化为对话框上的相对位置
    m_row=rectL.bottom-rectL.top;
    m_colume=rectL.right-rectL.left;
    UpdateData(FALSE);

    CClientDC dc(this);
    dc.MoveTo(rectL.left,rectL.top);
    dc.LineTo(rectR.right,rectR.bottom);
    dc.MoveTo(rectL.right,rectL.top);
    dc.LineTo(rectR.left,rectR.bottom);

    dc.MoveTo(rectL.left+m_colume/2,rectL.top+m_row/2);//连接两个控件中心点
    dc.LineTo(rectR.left+m_colume/2,rectR.top+m_row/2);

    }



  • 相关阅读:
    ASP.NET MVC下的四种验证编程方式
    tp框架下,数据库和编辑器都是utf-8, 输出中文却还是乱码
    按拼音首字母排序
    PHP 文件导出(Excel, CSV,txt)
    RedisDesktopManager 可视化工具提示:无法加载键:Scan..
    window下redis如何查看版本号
    jQuery 防止相同的事件快速重复触发
    input中加入搜索图标
    JS搜索商品(跟外卖app店内搜索商品一样) ,keyup函数和click函数调用
    JS正则对象 RegExp(有变量的时候使用),用来匹配搜索关键字(标红)
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13318814.html
Copyright © 2011-2022 走看看