1. 处理对话框的WM_SIZE,然后用MoveWindow或者SetWindowPos来把对话框上面的控件重新调整新位置和大小。
2. 基本的做法就是响应WM_SIZE消息,并按照窗口大小比例来调整控件的位置和大小,控件的大小最好设置成窗口的百分之几,这样的话,就可以根据窗口的大小随时调整了。
3. 每次OnSize 即可获得一个CRect,然后根据这个CRect来确定这些控件的位置和大小,使用函数MoveWindow 或SetWindowpos实现。
4.
1)通过下面两个函数获取的是显示屏幕的大小【屏幕的分辨率】(不包括任务栏等区域):
int nFullWidth=GetSystemMetrics( SM_CXFULLSCREEN ); //屏幕宽度
int nFullHeight=GetSystemMetrics( SM_CYFULLSCREEN ); //屏幕高度
2)这两个函数获取的是真正屏幕的大小【屏幕的分辨率】(包括任务栏等区域):
int cx = GetSystemMetrics( SM_CXSCREEN );
int cy = GetSystemMetrics( SM_CYSCREEN );
如:用前两个函数获取的大小可能是1024*687 ,而用下边两个获取的就是1024*768。
5. 在OnSize() 中调用: GetClientRect() 和 GetWindowRect() 函数可获取窗口大小,但需注意得到的是设备坐标,如果需要画图什么的还需要转换成逻辑坐标。
6. 字体大小随窗口变化而自动变化,比如说始终使字的高度始终占窗口的1/3。使用:
1). 在Creat中将nHeight设成窗口长度或者宽度的一定比值就行了 (最好在onsize函数中设置);
2). 使用 WM_FONTCHANGE 消息。
分享到:
相关推荐
..如何实11现控件随对话框大小变化而自动调整大小和位置.docx
..如何实11现控件随对话框大小变化而自动调整大小和位置.pdf
为了使控件随对话框大小变化,我们需要覆盖CDialog派生类的OnSize函数,然后在这个函数内处理控件的位置和大小。 首先,我们可以创建一个自定义的CDialog派生类,比如叫做CDynamicDialog。在这个类中,我们需要重写...
总结来说,对话框上的控件随对话框大小的改变而改变,这是通过重写OnSize()函数或者使用CDialogLayout类来实现的。在VC6.0下的MFC应用中,理解并熟练运用这些技术,可以创建出用户友好且适应性强的对话框界面。
这样,当对话框大小变化后,再恢复到原始尺寸时,我们可以通过这些记录的初始位置重新设置控件的位置。 总的来说,实现“对话框控件自动改变伸缩 随对话框改变 不失真”的功能,需要理解Windows消息处理机制,特别...
布局管理器可以帮助自动调整控件的位置和大小,以适应对话框的变化。 2. **控件的DS_SIZEBOX标志**:如果希望对话框的边框可拉伸,需要在对话框模板中为对话框设置DS_SIZEBOX标志。这样,用户可以拖动对话框的边缘...
当一个子类继承`CDlgScale`后,子类的对话框实例在大小变化时,其上的控件会自动按照预设的规则进行缩放,保持相对比例或者根据布局策略进行排列。 实现这种功能通常涉及以下几个步骤: 1. **重写OnSize()**:这是...
2. 对于每个需要跟随对话框大小变化的控件,调用特定的关联函数,如`SetAnchor`或`SetSizePolicy`。 3. 在资源编辑器中设置控件的初始位置和大小,无需考虑动态调整。 4. 编译并运行,控件会在对话框大小改变时自动...
CLayout提供了对控件自动布局的支持,只需设置控件的布局属性,如居中、填充、间距等,它就能在对话框大小变化时自动调整控件的位置和大小。 在实际开发中,结合《VC用鼠标调整对话框大小》这样的资源,我们可以...
重写这个函数,根据新的对话框尺寸重新计算并设置每个控件的位置,可以使控件随对话框大小变化。 4. **CLayout类**: MFC提供了一个CLayout类,用于处理控件布局。通过继承CLayout,并覆盖OnLayout()函数,可以实现...
MFC中,包含多个对话框,子对话框在Tab控件中显示,让子对话框中的控件跟随主对话框大小变化而变化,字体也能够缩放,但是不能加载图片控件,只对控件和字体缩放,单个对话框也适用,简单易懂。主要有一个CLout类,...
例如,可以为每个控件设定相对于对话框的左边距和上边距,当对话框大小变化时,根据新的对话框尺寸计算控件的新位置。或者,可以使用MFC的`CDataExchange`类的`DoDataExchange()`方法来根据对话框大小自动调整控件的...
它提供了动态布局管理器,允许控件随着对话框大小的变化自动调整其位置和大小。通过集成BCG,我们可以利用其提供的`CBCGLayoutManager`类来轻松实现这一功能。你需要在对话框类中创建一个`CBCGLayoutManager`对象,...
1. **DS_SETFONT** 样式:在创建对话框模板时,可以设置`DS_SETFONT`样式,这将使所有具有默认字体的控件在对话框大小改变时自动调整大小。你需要指定一个字体大小,系统会根据这个大小来调整控件。 2. **ON_WM_...
当用户需要自定义对话框的大小时,通常希望这些控件能自动调整大小和位置以适应新的对话框尺寸。这种功能称为对话框布局管理,它是VC++开发中的一个重要知识点。 首先,我们要理解控件的锚定(Anchor)机制。在VC++...
总结来说,通过正确设置对话框控件的布局属性,或者自定义消息处理函数以及使用`CMFCDlgLayout`类,可以在MFC中实现对话框控件随对话框大小变化而动态调整大小和位置的功能。这不仅可以提高用户体验,也能确保界面在...
在Microsoft Visual Studio 2019中开发MFC(Microsoft Foundation Classes)应用程序时,经常会遇到一个挑战:如何使对话框中的控件随着对话框大小的变化而自动调整位置和大小。"MFCPrjDlg-控件随对话框大小缩放-VS...
要让对话框中的控件随着对话框大小的变化进行自动调整,是一件很头疼的事情,需要在WM_SIZE的响应函数中对所有的控件用MoveWindow()或者SetWindowPos()设置其变化比例,极其繁琐。EasySize是一个很好解决方案,用...
当对话框大小改变时,这些控件会自动调整大小,但位置可能需要在代码中手动调整。 总结起来,动态改变VC++6.0对话框大小和控件位置的关键在于理解WM_SIZE和WM_SIZING消息,以及如何在响应这些消息时正确调整控件的...
总之,通过处理`WM_SIZE`消息并在`OnSize`函数中计算比例并调整控件的位置和大小,可以实现C++ MFC应用程序中控件随着窗口大小变化而自适应的效果。如果要实现全窗口的自适应布局,可能需要结合使用其他布局管理机制...