Advertisement

MFC实现获取鼠标坐标(附完整源码)

阅读量:

MFC实现获取鼠标坐标

下面是一个基于MFC的简单示例代码,展示了如何捕获鼠标位置并以窗口界面的形式呈现。随着鼠标在窗体内发生位置变化时,程序会即时更新并展示鼠标的当前屏幕坐标信息。

复制代码
    // MouseCoordinatesDlg.h
    #pragma once
    
    #include "afxwin.h"
    
    class CMouseCoordinatesDlg : public CDialogEx
    {
    public:
    CMouseCoordinatesDlg(CWnd* pParent = nullptr);
    
    #ifdef AFX_DESIGN_TIME
    enum { IDD = IDD_MOUSECOORDINATES_DIALOG };
    #endif
    
    protected:
    HICON m_hIcon;
    
    virtual void DoDataExchange(CDataExchange* pDX);
    virtual BOOL OnInitDialog();
    afx_msg void OnPaint();
    afx_msg HCURSOR OnQueryDragIcon();
    afx_msg void OnMouseMove(UINT nFlags, CPoint point);
    DECLARE_MESSAGE_MAP()
    
    private:
    CStatic m_staticMouseCoordinates;
    };
复制代码
    // MouseCoordinatesDlg.cpp
    #include "pch.h"
    #include "framework.h"
    #include "MouseCoordinates.h"
    #include "MouseCoordinatesDlg.h"
    #include "afxdialogex.h"
    
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #endif
    
    CMouseCoordinatesDlg::CMouseCoordinatesDlg(CWnd* pParent /*=nullptr*/)
    : CDialogEx(IDD_MOUSECOORDINATES_DIALOG, pParent)
    {
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    }
    
    void CMouseCoordinatesDlg::DoDataExchange(CDataExchange* pDX)
    {
    CDialogEx::DoDataExchange(pDX);
    DDX_Control(pDX, IDC_STATIC_MOUSE_COORDINATES, m_staticMouseCoordinates);
    }
    
    BEGIN_MESSAGE_MAP(CMouseCoordinatesDlg, CDialogEx)
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_WM_MOUSEMOVE()
    END_MESSAGE_MAP()
    
    BOOL CMouseCoordinatesDlg::OnInitDialog()
    {
    CDialogEx::OnInitDialog();
    SetIcon(m_hIcon, TRUE);
    SetIcon(m_hIcon, FALSE);
    
    return TRUE;
    }
    
    void CMouseCoordinatesDlg::OnPaint()
    {
    CPaintDC dc(this);
    }
    
    HCURSOR CMouseCoordinatesDlg::OnQueryDragIcon()
    {
    return static_cast<HCURSOR>(m_hIcon);
    }
    
    void CMouseCoordinatesDlg::OnMouseMove(UINT nFlags, CPoint point)
    {
    // 将鼠标坐标转换为屏幕坐标
    ClientToScreen(&point);
    
    // 格式化坐标字符串
    CString strCoordinates;
    strCoordinates.Format(_T("鼠标坐标:%d, %d"), point.x, point.y);
    
    // 在静态文本框中显示坐标
    m_staticMouseCoordinates.SetWindowText(strCoordinates);
    
    CDialogEx::OnMouseMove(nFlags, point);
    }

在以下示例中,在线Mouse移动事件函数主要负责捕获当前屏幕的坐标值,并将这些数值以文本形式显示于静态文本框内。

在资源编辑器中搭建相应的对话框与控件,并配置对应的消息处理逻辑。仅作为一个演示获取鼠标位置并显示的基础案例。你可以依据具体要求实现更为复杂的鼠标交互与显示效果。

这篇文章是一篇原创文章。不得在未经博主同意的情况下转载此篇文章。本文章博客地址:

全部评论 (0)

还没有任何评论哟~