
对话框属性->样式,勾上最大化框。
再在类向导里,选择WM_SIZE,然后Edit Code
1、在对话框类中加入成员变量CRect m_rect;用于保存对话框大小变化前的大小;
2、在对话框的OnInitDialog()函数中获取对话框创建时的大小:GetClientRect(&m_rect);
3、在WM_SIZE的响应函数OnSize()中加入以下代码:
C/C++ code
CWnd pWnd;
pWnd = GetDlgItem(IDC_LIST); //获取控件句柄
if(pWnd && nType!=1)//判断是否为空,因为对话框创建时会调用此函数,而当时控件还未创建
{
CRect rect; //获取控件变化前大小
pWnd->GetWindowRect(&rect);
ScreenToClient(&rect);//将控件大小转换为在对话框中的区域坐标
// cx/m_rectWidth()为对话框在横向的变化比例
rectleft=rectleftcx/m_rectWidth();/////调整控件大小
rectright=rectrightcx/m_rectWidth();
recttop=recttopcy/m_rectHeight();
rectbottom=rectbottomcy/m_rectHeight();
pWnd->MoveWindow(rect);//设置控件大小
}
GetClientRect(&m_rect);//将变化后的对话框大小设为旧大小
MFC 对话框的尺寸大小使用MoveWindow,意思是改变指定窗口的位置和大小。
函数功能:改变指定窗口的位置和大小对顶窗口来说,位置和大小取决于屏幕的左上角;对子窗口来说,位置和大小取决于父窗口客户区的左上角对于Owned窗口,位置和大小取决于屏幕左上角
函数原型:BOOL MoveWindow( HWND hWnd, int X, int Y, int nWidth, int nHeight, BOOL bRepaint );
参数
hWnd指定了窗口的句柄
x指定了CWnd的左边的新位置。
y指定了CWnd的顶部的新位置。
nWidth指定了CWnd的新宽度。
nHeight指定了CWnd的新高度。
bRepaint指定了是否要重画CWnd。如果为TRUE,则CWnd象通常那样在OnPaint消息处理函数中接收到一条WM_PAINT消息。如果这个参数为FALSE,则不会发生任何类型的重画 *** 作。这应用于客户区、非客户区(包括标题条和滚动条)和由于CWnd移动而露出的父窗口的任何部分。当这个参数为FALSE的时候,应用程序必须明确地使CWnd和父窗口中必须重画的部分无效或重画。
MoveWindow给窗口发送WM_WINDOWPOSCHANGING,WM_WINDOWPOSCHANGED,WM_MOVE,WM_SIZE和WM_NCCALCSIZE消息。
使用GetSystemMetrics获取显示器屏幕大小,然后调整
设置窗口的大小根据屏幕大小来按比例设置,比如屏幕宽的80%,高的60%来设置你窗口大小等
获取屏幕坐标:
int
x
=
GetSystemMetrics(SM_CXSCREEN);
int
y
=
GetSystemMetrics(SM_CYSCREEN);
处理WM_SIZE,将大小算好改变然后再重新显示,大致思路就这样!您试试看!
从理论上讲,图像文件的大小,和图像像素与图像尺寸成正比例关系。图像像素是文件大小的一个因素,它另外还取决于文件的格式(比如BMP、JPG),和图像的色彩(比如单色、16灰、24彩、32彩),所以不能确定一个像素多少容量。
以上就是关于MFC如何将窗口中所有控件大小随父窗口大小改变全部的内容,包括:MFC如何将窗口中所有控件大小随父窗口大小改变、MFC 对话框的尺寸大小如何确定的、VC MFC界面怎么根据桌面分辨率自动设置显示窗口和控件的大小等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)