使对话框中的控件大小随对话框尺寸的改变而改变(大小、位置):
方法思想:获取指定控件的大小,然后根据对话框当前尺寸与变化前尺寸的比例来改变指定控件的大小和位置。在OnSize函数中进行操作:
void Cformview::OnSize(UINT nType, int cx, int cy)
{
CFormView::OnSize(nType, cx, cy);
// TODO: 在此处添加消息处理程序代码
if (nType==SIZE_MINIMIZED)//最小化时不处理
return;
CWnd *pwnd;
pwnd=GetDlgItem(IDC_BUTTON1);
if (pwnd)
{
CRect rect;
pwnd->GetWindowRect(&rect);
ScreenToClient(&rect);
rect.left=rect.left*cx/m_rect.Width();
rect.right=rect.right*cx/m_rect.Width();
rect.top=rect.top*cy/m_rect.Height();
rect.bottom=rect.bottom*cy/m_rect.Height();
pwnd->MoveWindow(rect);//重置大小和位置
}
GetClientRect(&m_rect);//初始在OnInitialUpdate中
写成函数如下:
void Cformview::AdjustContrSize(int nID, int cx, int cy, CRect m_rect)
{
CWnd *pwnd;
pwnd=GetDlgItem(nID);
if (pwnd)
{
CRect rect;
pwnd->GetWindowRect(&rect);
ScreenToClient(&rect);
rect.left=rect.left*cx/m_rect.Width();
rect.right=rect.right*cx/m_rect.Width();
rect.top=rect.top*cy/m_rect.Height();
rect.bottom=rect.bottom*cy/m_rect.Height();
pwnd->MoveWindow(rect);
}
}