MFC改变 随着控件大小变化 改变控件字体的大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC改变 随着控件大小变化 改变控件字体的大小相关的知识,希望对你有一定的参考价值。

CWnd *win = GetWindow(GW_CHILD);
while (win)

CRect rect;
win->GetWindowRect(rect);
ScreenToClient(rect);
rect.left = (int)(float(rect.left)*x);
rect.right = (int)(float(rect.right)*x);
rect.top = (int)(float(rect.top)*y);
rect.bottom = (int)(float(rect.bottom)*y);
win->MoveWindow(rect);

CPaintDC dc(this);
CFont *CurFont = dc.GetCurrentFont();
LOGFONT lf;
memset(&lf, 0, sizeof(LOGFONT));
CurFont->GetLogFont(&lf);

lf.lfHeight = (int)(lf.lfHeight*y);
lf.lfWidth = (int)(lf.lfWidth*x);
lf.lfWeight = 400;

CFont font;
font.CreateFontIndirect(&lf);
win->SetFont(&font);

win = win->GetWindow(GW_HWNDNEXT);


控件大小改变了 但是字体改变是固定的不会随着控件大小改变而改变

参考技术A 字体的控制和控件的大小不是关联的,所以要在程序中实现,举个例子,当控件大小改变后,根据控件改变的比例,将原有的字体的大小也根据控件缩放比例设置一次。这样就可以实现动态控制界面尺寸了。追问

你有例子么

追答

sorry,没有例程。

参考技术B

你要自己创建字体,根据大小来创建才可以改变。这里有个创建字体的例子。

http://blog.csdn.net/rmxming/article/details/10416069

MFC中TabCtrl控件怎么随着窗体的大小变化而变化?

我在做一个项目,需要最大化显示,但是初始界面不可能就画很大,所以在想怎么让标签控件放大,哪位大神不吝赐教?

参考技术A 写在Onsize里 获取tab的rect,然后跟界面算一下比例 然后movewindow 参考技术B 这有个MFC tabctrl的例子,当窗口执行WM_SIZE时,改变tabctrl的大小即可,用MoveWindow.
http://www.codeproject.com/Articles/93521/MultiPaneCtrl追问

标签控件我已经能最大化了,但是子窗口里的控件怎么随窗口大小改变呢 ,有例子吗?

追答

我给你的那个例子就有啊,每个标签控件都有个子窗口的。你仔细看看。。。

本回答被提问者采纳

以上是关于MFC改变 随着控件大小变化 改变控件字体的大小的主要内容,如果未能解决你的问题,请参考以下文章

mfc 窗口大小变化时,如何让窗口内部控件也一起随比例改变位置?

如何改变mfc对话框中的控件中的字体大小

MFC中TabCtrl控件怎么随着窗体的大小变化而变化?

MFC中TabCtrl控件怎么随着窗体的大小变化而变化?

MFC 请教怎样设置STATIC TEXT控件的字体大小和颜色

MFC如何将窗口中所有控件大小随父窗口大小改变