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;


发布评论