1.对话框是切分窗口得到的第一排第2个对话框:
if (!m_MSplitter.CreateStatic(this,1,2))
return FALSE;
m_MSplitter.CreateView(0, 0, RUNTIME_CLASS(CLView), CSize(0,0),pContext);
m_nViewMain=m_MSplitter.AddView(0, 1, RUNTIME_CLASS(CMainPlay), pContext);
m_MSplitter.SetColumnInfo( 0, 180, 0 );
return TRUE;
2.初始运行最大化:
m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);
m_pMainWnd->UpdateWindow();
3.得到 //对话框尺寸
CRect rect;
GetClientRect(&rect);
4.相应控件定位:
GetDlgItem(IDC_BUTTON_YUNTAI)->MoveWindow(rect.right-m_btnW,rect.bottom-m_btnH,m_btnW,m_btnH,true);可是这样的操作并不能把控钮定位在对话框的右下角,我觉得是对话框尺寸获取的不正确,是吗?
if (!m_MSplitter.CreateStatic(this,1,2))
return FALSE;
m_MSplitter.CreateView(0, 0, RUNTIME_CLASS(CLView), CSize(0,0),pContext);
m_nViewMain=m_MSplitter.AddView(0, 1, RUNTIME_CLASS(CMainPlay), pContext);
m_MSplitter.SetColumnInfo( 0, 180, 0 );
return TRUE;
2.初始运行最大化:
m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);
m_pMainWnd->UpdateWindow();
3.得到 //对话框尺寸
CRect rect;
GetClientRect(&rect);
4.相应控件定位:
GetDlgItem(IDC_BUTTON_YUNTAI)->MoveWindow(rect.right-m_btnW,rect.bottom-m_btnH,m_btnW,m_btnH,true);可是这样的操作并不能把控钮定位在对话框的右下角,我觉得是对话框尺寸获取的不正确,是吗?
断点调试得到的,我的电脑分辨率是1440*900
m_btnW=116,m_btnH=28
左窗口宽度设的是180
3.得到 //对话框尺寸
CRect rect;
GetClientRect(&rect);
4.相应控件定位:
GetDlgItem(IDC_BUTTON_YUNTAI)->MoveWindow(rect.right-m_btnW,rect.bottom-m_btnH,m_btnW,m_btnH,true);
就可以得到正确的但是放在OnSize中好像又不行,调试发现OnSize比初始化函数先运行,得不到m_btnW,m_btnH的值,把获取按钮尺寸的代码放在OnSize中又会出错
CRect rc; //按钮尺寸
GetDlgItem(IDC_BUTTON_YUNTAI)->GetWindowRect(&rc);
ScreenToClient(&rc);
m_btnX=rc.left;
m_btnY=rc.top;
m_btnW=rc.right-rc.left;
m_btnH=rc.bottom-rc.top;
void CXXXDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
CWnd* pWnd=GetDlgItem(IDC_BUTTON_YUNTAI);
if(pWnd)
{
CRect rc;
pWnd->GetClientRect(rc);
pWnd->MoveWindow(cx-rc.Width(),cy-rc.Height(),rc.Width(),rc.Height());
}
// TODO: 在此处添加消息处理程序代码
}