VC中自动改变控件位置和大小的对话框类(2)
对两张截图的比较我们可以很容易的理解上面那段代码。
我还提供了一个函数:
void ShowSizeIcon(BOOL bShow = TRUE);
来设置是否显示对话框右下角表示可以改变大小的图标。这个图标是从系统中读取的,我上面的截图是Windows2000下的,在WindowsXP中就会自动变成XP风格的。
好了,闲话不多说了,下面贴出该对话框类ClxDialog的源代码,里面有详细的注释:
lxDialog.h文件:
/////////////////////////////////////////////////////////////////////////////////////
// 自动改变控件位置和大小的对话框类
// 文件名:lxDialog.h
// 作者:StarLee(coolstarlee@sohu.com)
/////////////////////////////////////////////////////////////////////////////////////
class ClxDialog : public CDialog
{
public:
ClxDialog(UINT nID, CWnd* pParent = NULL);
typedef struct _dlgControlTag
{
int iId;
int iFlag;
int iPercent;
} DLGCTLINFO, *PDLGCTLINFO;
enum
{
MOVEX = 0,
MOVEY,
MOVEXY,
ELASTICX,
ELASTICY,
ELASTICXY
};
// 设置控件信息
BOOL SetControlProperty(PDLGCTLINFO lp, int nElements);
// 是否在对话框右下角显示表示可改变大小的图标
void ShowSizeIcon(BOOL bShow = TRUE);
protected:
virtual BOOL OnInitDialog();
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnSizing(UINT nSide, LPRECT lpRect);
DECLARE_MESSAGE_MAP()