网上找了个类ClxDialog能够实现控件自动定位,拉伸.
原理通过OnSize里的几个参数UINT nType, int cx, int cy进行运算.
但会有几个问题:
1. 当窗口设为child类型时,nType的值总是0.
2.当窗口拉到特别小,再拉到原来大小,控件都会变形.
3.当窗口最小化,再恢复时,CListCtrl控件变形.
这是本人在使用时发现的问题,因此本人对此作了较大的修改.
原理是:不使用OnSize的参数,而是通过保存窗口初始化时的值.
当窗口变化时,再计出变化的大小.
详情见源码.
使用方法;
在OnInitDialog加入
// 控件信息数组
static DLGCTLINFO dcMenuGroup[] =
{
{IDC_BTN_ADD, MOVEX, 100},
{IDC_BTN_EDIT, MOVEX, 100},
{IDC_BTN_DEL, MOVEX, 100},
{IDC_BTN_EXEC, MOVEX, 100},
{IDC_BTN_STOP, MOVEX, 100},
{IDC_LIST_TASK, ELASTICXY, 100},
};
// 设置控件信息
SetControlProperty(dcMenuGroup, sizeof(dcMenuGroup)/sizeof(DLGCTLINFO));
复制代码
在OnSize调用
CDialogEx::OnSize(nType, cx, cy);
来自 [萝岗九龙社区] http://www.gzzsc.net