资源描述:
《mfc可变窗口大小 仅供个人使用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、在网上有《VC中自动改变控件位置和大小的对话框类》的文章开始不知道如何使用我在生成的非模态对话框里研究了一天已经搞定了步骤:1,在非模态对话框类的头文件(.h)顶部加上#include"lxDialog.h",然后把非模态对话框类的基类改成ClxDialog,也就是在头文件里classC******:publicCDialog改成:classC******:publicClxDialog在非模态对话框类的.cpp函数里,把构造函数C*****::C*****(CWnd*pParent):CDialog(C*****::IDD,pParent)改成:C*****::C*****(CWnd
2、*pParent):ClxDialog(C*****::IDD,pParent)2,用类向导给非模态对话框添加一个OnInitDialog()函数;也就是在双击类向导->MessageMaps->选非模态对话框类;Messages选WM_INITDIALOG双击它,这样在你的非模态对话框的cpp文件里就生成了ON_WM_INITDIALOG和OnInitDialog()函数;3,在这个OnInitDialog函数里添加代码: ClxDialog::OnInitDialog(); ClxDialog::ShowSizeIcon(TRUE);//显示可以调整大小的图标staticDLGCT
3、LINFOdcMenuGroup[]= { {IDCANCEL,MOVEX,100}, {IDCANCEL,MOVEY,100}, {IDC_EDIT_RECDSPDLG,ELASTICX,100}, {IDC_EDIT_RECDSPDLG,ELASTICY,100}, }; SetControlProperty(dcMenuGroup,sizeof(dcMenuGroup)/sizeof(DLGCTLINFO));returnTRUE; //IDCANCEL是关闭按钮的ID,IDOK按钮我去掉了所以没加,IDC_EDIT_R
4、ECDSPDLG是一个EDIT控件//想让哪个控件调整,就照葫芦画瓢在组里加上4,再用类向导添加OnSize()函数,也就是双击ON_WM_SIZE,这样就增加了voidC******::OnSize(UINTnType,intcx,intcy)这个函数,然后在这个函数里添加代码:ClxDialog::OnSize(nType,cx,cy);5,别忘了在资源里右键你的非模态对话框,把属性栏Styles里Border选成Resizing。这样就搞定了 附上网上找的那个类:《VC中自动改变控件位置和大小的对话框类》 lxDialog.h文件:///////////////////////
5、////////////////////////////////////////////////////////////////自动改变控件位置和大小的对话框类//文件名:lxDialog.h//作者:StarLee(coolstarlee@sohu.com)/////////////////////////////////////////////////////////////////////////////////////classClxDialog:publicCDialog{public:ClxDialog(UINTnID,CWnd*pParent=NULL);typedefs
6、truct_dlgControlTag{ intiId; intiFlag; intiPercent;}DLGCTLINFO,*PDLGCTLINFO;enum{ MOVEX=0, MOVEY, MOVEXY, ELASTICX, ELASTICY, ELASTICXY};//设置控件信息BOOLSetControlProperty(PDLGCTLINFOlp,intnElements);//是否在对话框右下角显示表示可改变大小的图标voidShowSizeIcon(BOOLbShow=TRUE);protected: virtualBOOLOnInitDialog(); afx_ms
7、gvoidOnSize(UINTnType,intcx,intcy); afx_msgvoidOnSizing(UINTnSide,LPRECTlpRect); DECLARE_MESSAGE_MAP()private: intm_iClientWidth;//对话框client区域的宽度 intm_iClientHeight;//对话框client区域的高度 intm_iMinWidth;//对话框的最小宽度 intm_iMinHeight;