c++获取屏幕分辨率DPI以及屏幕放缩倍数

本文介绍了如何使用C++编程获取计算机屏幕的分辨率、DPI(每英寸点数)以及屏幕放缩倍数的详细步骤,帮助开发者实现更精确的图形界面适配。
摘要由CSDN通过智能技术生成

c++获取屏幕分辨率DPI以及屏幕放缩倍数

参考示例

	// 获取分辨率不准
	nScreenWidth = GetSystemMetrics(SM_CXSCREEN);
	nScreenHeight = GetSystemMetrics(SM_CYSCREEN);

	// 获取创口句柄
	HWND hWnd = GetDesktopWindow();
	HMONITOR hMonitor = MonitorFromWindow(hWnd, MONITOR_DEFAULTTONEAREST);
	// 获取监视器逻辑尺寸
	MONITORINFOEX miex;
	miex.cbSize = sizeof(miex);
	GetMonitorInfo(hMonitor, &miex)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
您好!对于C++ MFC对话框中的鼠标拖动和缩放控件中的图片,可以使用以下步骤实现: 1. 在对话框中添加一个图片控件,可以使用MFC中提供的CStatic类,并设置图片的初始位置和大小。 2. 通过WM_LBUTTONDOWN和WM_LBUTTONUP消息,实现鼠标拖动图片的功能。在WM_LBUTTONDOWN消息中,记录下鼠标点击时的位置,并设置一个标志位表示当前正在拖动图片。在WM_LBUTTONUP消息中,清除标志位。 3. 通过WM_MOUSEWHEEL消息,实现鼠标滚轮缩放图片的功能。在WM_MOUSEWHEEL消息中,获取鼠标滚轮滚动的距离,根据距离缩放图片的大小,并重新设置图片的位置。 4. 在对话框的OnPaint()函数中,绘制图片。 以上是实现鼠标拖动和缩放控件中的图片的基本步骤,您可以参考以下代码示例: ``` // 在对话框头文件中添加以下变量 private: CStatic m_picCtrl; // 图片控件 CPoint m_ptOrigin; // 鼠标点击时的位置 BOOL m_bDragging; // 是否正在拖动图片 CSize m_szPic; // 图片大小 // 在OnInitDialog()函数中初始化图片控件,并设置图片的初始位置和大小 m_picCtrl.Create(NULL, WS_VISIBLE | WS_CHILD | SS_BITMAP, CRect(0, 0, 0, 0), this); m_picCtrl.SetBitmap(/* 设置图片 */); m_szPic = /* 设置图片大小 */; m_picCtrl.MoveWindow(/* 设置图片初始位置和大小 */); // 处理鼠标消息 void CMyDialog::OnLButtonDown(UINT nFlags, CPoint point) { m_ptOrigin = point; m_bDragging = TRUE; } void CMyDialog::OnLButtonUp(UINT nFlags, CPoint point) { m_bDragging = FALSE; } void CMyDialog::OnMouseMove(UINT nFlags, CPoint point) { if (m_bDragging) { CPoint ptOffset = point - m_ptOrigin; m_picCtrl.MoveWindow(m_picCtrl.GetRect() + ptOffset); } } void CMyDialog::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt) { double fScale = zDelta > 0 ? 1.1 : 0.9; m_szPic.cx = (int)(m_szPic.cx * fScale); m_szPic.cy = (int)(m_szPic.cy * fScale); m_picCtrl.MoveWindow(/* 计算并设置图片的位置和大小 */); } // 绘制图片 void CMyDialog::OnPaint() { CPaintDC dc(this); CDC dcMem; dcMem.CreateCompatibleDC(&dc); CBitmap* pOldBitmap = dcMem.SelectObject(/* 获取图片的位图句柄 */); dc.BitBlt(/* 绘制图片 */); dcMem.SelectObject(pOldBitmap); } ``` 希望对您有所帮助!
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值