typedef struct _dlgControlTag { int iId; // 控件ID int iFlag; // 标志,表示怎样改变控件的位置或者大小 int iPercent; // 改变值占对话框改变值的百分比 } DLGCTLINFO, *PDLGCTLINFO; |
enum { MOVEX = 0, // 控件在X方向(左右)移动 MOVEY, // 控件在Y方向(上下)移动 MOVEXY, // 控件在X方向和Y方向同时移动 ELASTICX, // 控件在X方向(宽度)改变大小 ELASTICY, // 控件在Y方向改(高度)改变大小 ELASTICXY // 控件在X方向和Y方向同时改变大小 }; |
BOOL SetControlProperty(PDLGCTLINFO lp, int nElements); |
// 控件信息数组 static DLGCTLINFO dcMenuGroup[] = { {IDOK, MOVEX, 100}, {IDCANCEL, MOVEX, 100}, {IDC_BUTTON1, MOVEX, 50}, {IDC_BUTTON1, MOVEY, 100}, {IDC_EDIT1, ELASTICX, 100}, {IDC_EDIT2, ELASTICX, 50}, {IDC_EDIT3, ELASTICX, 50}, {IDC_EDIT3, MOVEX, 50}, {IDC_EDIT4, ELASTICY, 100}, {IDC_EDIT5, ELASTICX, 100}, {IDC_EDIT5, ELASTICY, 50}, {IDC_EDIT6, ELASTICX, 100}, {IDC_EDIT6, ELASTICY, 50}, {IDC_EDIT6, MOVEY, 50}, }; // 设置控件信息 SetControlProperty(dcMenuGroup, sizeof(dcMenuGroup)/sizeof(DLGCTLINFO)); |
对两张截图的比较我们可以很容易的理解上面那段代码。
void ShowSizeIcon(BOOL bShow = TRUE); |
来设置是否显示对话框右下角表示可以改变大小的图标。这个图标是从系统中读取的,我上面的截图是Windows2000下的,在WindowsXP中就会自动变成XP风格的。
好了,闲话不多说了,下面贴出该对话框类ClxDialog的源代码,里面有详细的注释: