在Visual C ++中缩放/缩放CWnd控件

时间:2012-07-12 03:31:31

标签: mfc visual-c++

我们有一个CWnd,它有几个控件(CButton,CEdit,CStatic等),并希望找到一种方法允许用户放大和缩小控件变得更大/更小。控件本身需要更改大小以及控件内的文本标签(如按钮文本)。

我正在研究在Web上记录的CZoomView并使用CDC SetMapMode到MM_ISOTROPIC,但这似乎只在OnDraw方法中有用,因为CZoomView在实现时有一个TODO来实现绘图代码。由于这些是Microsoft控件,我们只是让他们自己画画。

这甚至可能吗?看起来我应该能够使用调整设备上下文来认为设备与逻辑单元的比例是不同的,但我无法想出如何让控制器来兑现这一点。

int previousMode = pDC->SetMapMode(MM_ISOTROPIC);
CSize previousWin = pDC->SetWindowExt(100,100);
CSize previousExt = pDC->SetViewportExt(m_zoom, m_zoom);

思想或想法?

2 个答案:

答案 0 :(得分:1)

,这对于Win32用户/标准/通用控件是不可能的,因为Windows的“User32”层都是基于像素的,并且您提到的GDI函数在该级别不起作用,并且用户API中没有等效项(窗口句柄与设备上下文)。


我知道这是一个老问题而且我没有回答得分。我自己会问同样的问题,但在我输入问题之后就遇到了这个问题。既然你不应该在这里提出重复的问题,我会发布这个答案,而不是希望有人会来,并用更好的答案证明我错了。或者Mark可能会找到答案,并会得到我的答案通知,并分享他所学到的知识。在我的情况下,我需要创建一个像Adobe Acrobat这样的UI,其中包含可填写的表单,但基本内容是相同的。

答案 1 :(得分:0)

为什么不在Windows中更改DPI设置(显示 - >设置自定义文字大小)?这是使事情变得更小/更大的常见方式,如果用户在阅读内容时遇到问题,他们应该这样做。

Windows标准控件具有“DPI识别”功能,因此您可以免费进行缩放。