2024年3月24日发(作者:)

在网上有《VC中自动改变控件位置和大小的对话框类》的文章

开始不知道如何使用

我在生成的非模态对话框里研究了一天

已经搞定了

步骤:

1,在非模态对话框类的头文件(.h)顶部加上#include "lxDialog.h",然后把非

模态对话框类的基类改成ClxDialog,也就是在头文件里class C****** : public

CDialog 改成:

class C****** : public ClxDialog

在非模态对话框类的.cpp函数里,把构造函数

C*****::C*****(CWnd* pParent ): CDialog(C*****::IDD, pParent)

改成:

C*****::C*****(CWnd* pParent ): ClxDialog(C*****::IDD, pParent)

2,用类向导给非模态对话框添加一个OnInitDialog()函数;也就是在双击类向

导->Message Maps-> 选非模态对话框类;Messages选WM_INITDIALOG双击它,

这样在你的非模态对话框的cpp文件里就生成了ON_WM_INITDIALOG和

OnInitDialog()函数;

3,在这个OnInitDialog函数里添加代码:

ClxDialog::OnInitDialog();

ClxDialog::ShowSizeIcon(TRUE);//显示可以调整大小的图标

static DLGCTLINFO dcMenuGroup[] =

{

{IDCANCEL, MOVEX, 100},

{IDCANCEL, MOVEY, 100},

{IDC_EDIT_RECDSPDLG, ELASTICX, 100},

{IDC_EDIT_RECDSPDLG, ELASTICY, 100},

};

SetControlProperty(dcMenuGroup,

sizeof(dcMenuGroup)/sizeof(DLGCTLINFO));

return TRUE;

//IDCANCEL是关闭按钮的ID,IDOK按钮我去掉了所以没加,IDC_EDIT_RECDSPDLG

是一个EDIT控件

//想让哪个控件调整,就照葫芦画瓢在组里加上

4,再用类向导添加OnSize()函数,也就是双击ON_WM_SIZE,这样就增加了

void C******::OnSize(UINT nType, int cx, int cy) 这个函数,然后在这个

函数里添加代码:ClxDialog::OnSize(nType, cx, cy);

5,别忘了在资源里右键你的非模态对话框,把属性栏Styles里Border选成

Resizing。

这样就搞定了

附上网上找的那个类:《VC中自动改变控件位置和大小的对话框类》

lxDialog.h文件:

/////////////////////////////////////////////////////////////////

////////////////////

// 自动改变控件位置和大小的对话框类

// 文件名:lxDialog.h

// 作者:StarLee(coolstarlee@)

/////////////////////////////////////////////////////////////////

////////////////////

class ClxDialog : public CDialog

{

public:

ClxDialog(UINT nID, CWnd* pParent = NULL);

typedef struct _dlgControlTag

{

int iId;

int iFlag;