1.新建一个MFC工程,工程属性配置如下:
2.添加最大化窗口和最小化窗口的属性.
3.更改对话框到合适的大小.
4.添加服务端连接后显示的列表控件IDC_ONLINE,日志列表控件IDC_MESSAGE.
5.演示伸缩窗口,最大化时列表不能伸缩
6.添加列表控件变量m_CList_Online,m_CList_Message
7.响应对话框改变大小的消息WM_SIZE就是 当对话框的大小发生改变时,调用的函数.
void CPCRemoteDlg::OnSize(UINT nType, int cx, int cy)
{
CDialogEx::OnSize(nType, cx, cy);
// TODO: 在此处添加消息处理程序代码
if (m_CList_Online.m_hWnd!=NULL)
{
CRect rc;
rc.left=1; //列表的左坐标
rc.top=80; //列表的上坐标
rc.right=cx-1; //列表的右坐标
rc.bottom=cy-160; //列表的下坐标
m_CList_Online.MoveWindow(rc);
}
if (m_CList_Message.m_hWnd!=NULL)
{
CRect rc;
rc.left=1; //列表的左坐标
rc.top=cy-156; //列表的上坐标
rc.right=cx-1; //列表的右坐标
rc.bottom=cy-6; //列表的下坐标
m_CList_Message.MoveWindow(rc);
}
}
8.修改初始化部分,设置对话框尺寸,触发WM_SIZE消息,调节列表控件的位置:
BOOL CPCRemoteDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
// 初始化在线列表的List控件。
// 修改对话框的大小,出发WM_SIZE消息,重新调整对话框中列表控件的界面显示比例.
CRect rect;
GetWindowRect(&rect);
rect.bottom+=20;
MoveWindow(rect);
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}