【发布时间】:2017-07-03 17:22:52
【问题描述】:
我在 MFC 对话框 MyDlg(C++、VS2015、64 位 Windows 7)中创建了一个 MFC 网格控件 (Code Project MFC Grid control 2.27)。 MyDlg.h 文件包含
CGridCtrl gridCtrl;
资源编辑器用于添加MFCGridCtrl 类型的自定义控件。在MyDlg.cpp 中,我将控件子类化为
DDX_Control(pDX, IDC_ComponentRatios, gridCtrl);
在MyDlg::OnInitDialog中,我用
gridCtrl.SetColumnCount(2);
gridCtrl.SetRowCount(2);
gridCtrl.EnableWindow(TRUE);
我得到的是我期望的 2 x 2 网格,但是自定义控件的大小与网格的大小不匹配。
自定义控件的宽度是错误的,因为设置列数似乎是为滚动条留出空间,这是不必要的。
高度不变,这是错误的,因为自定义控件的大小是8行,而我在这个例子中只使用了2(实际需要的行数是可变的)。
如何让网格填充自定义控件的宽度,并调整该控件的高度以匹配?
【问题讨论】:
-
如果你使用
CGridCtrl代替它有一个ExpandColumnsToFit方法。 -
如果你想调整控件本身的大小,你可以使用 SetWindowPos(),但是还有其他的事情需要考虑。它的最大尺寸应该是多少?包含对话框是否可调整大小?如果你想控制它的宽度,最小、最大、单个列的宽度应该是多少?
-
我使用 MoveWindow 来设置控件的整体大小。单元格的数量及其尺寸是固定的,并且在创建对话框时已知。对话框不可调整大小,但即使调整大小,控件也不会改变。