VC中自动改变控件位置和大小的对话框类(3)
private:
int m_iClientWidth; // 对话框client区域的宽度
int m_iClientHeight; // 对话框client区域的高度
int m_iMinWidth; // 对话框的最小宽度
int m_iMinHeight; // 对话框的最小高度
PDLGCTLINFO m_pControlArray; // 控件信息数组指针
int m_iControlNumber; // 设置控件信息的控件个数
BOOL m_bShowSizeIcon; // 是否显示表示可改变大小的图标
CStatic m_wndSizeIcon; // 放图标的静态控件
// 保存图标的bitmap
CBitmap m_bmpSizeIcon;
BITMAP m_bitmap;
};
lxDialog.cpp文件:
//////////////////////////////////////////////////////////////////////
// 自动改变控件位置和大小的对话框类
// 文件名:lxDialog.cpp
// 作者:StarLee(coolstarlee@sohu.com)
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "lxDialog.h"
// 表示可改变大小的图标ID
#ifndef OBM_SIZE
#define OBM_SIZE 32766
#endif
ClxDialog::ClxDialog(UINT nID, CWnd* pParent /*=NULL*/)
: CDialog(nID, pParent)
, m_iClientWidth(0)
, m_iClientHeight(0)
, m_iMinWidth(0)
, m_iMinHeight(0)
, m_pControlArray(NULL)
, m_iControlNumber(0)
, m_bShowSizeIcon(TRUE)
{}
BEGIN_MESSAGE_MAP(ClxDialog, CDialog)
ON_WM_SIZE()
ON_WM_SIZING()
END_MESSAGE_MAP()
BOOL ClxDialog::OnInitDialog()
{
CDialog::OnInitDialog();
// 设置对话框为可变大小的
ModifyStyle(0, WS_SIZEBOX);
// 以对话框的初始大小作为对话框的宽度和高度的最小值
CRect rectDlg;
GetWindowRect(rectDlg);
m_iMinWidth = rectDlg.Width();
m_iMinHeight = rectDlg.Height();
// 得到对话框client区域的大小
CRect rectClient;
GetClientRect(rectClient);
m_iClientWidth = rectClient.Width();
m_iClientHeight = rectClient.Height();