如何修改dlg的大小
新建了一个dialog,size在.rc文件里面预设好了,但是想在程序启动的时候判断一下屏幕分辨率,根据不同分辨率来设置dialog的size,但是用PostMessage(WM_SIZE,NULL ,MAKELPARAM(120,500));去重新设置onsize,debug发现onsize能进得去,参数也正确,但是dlg的size没有任何变化。还试过SetWindowPos以及MoveWindow,发现都只能移动dlg,不能改变dlg的大小,还请各位帮忙看一下,多谢!
rc文件:
IDD_SETTINGS DIALOGEX 0, 0, 279, 570
STYLE DS_MODALFRAME | WS_POPUP | WS_SYSMENU
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
LTEXT "",IDC_PROP,0,7,277,564
END
IDD_PPG_GENERAL DIALOG DISCARDABLE 0, 0, 341, 227
STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "General"
FONT 8, "MS Sans Serif"
dlg代码:
BOOL CSettingsDlg::OnInitDialog()
{
if(!CDialog::OnInitDialog())
return FALSE;
// SetWindowPos(NULL, 479, 670, 0, 0, DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_SYSMENU);
//SetWindowPos(&wndTop,479, 200, 0, 0,DS_MODALFRAME | WS_POPUP | WS_SYSMENU);
m_PropCtrl.Create(this, IDC_PROP);
//PostMessage(WM_SIZE,NULL ,MAKELPARAM(120,500));
//SetWindowPos(&wndTop,479, 200, 0, 0,DS_MODALFRAME | WS_POPUP | WS_SYSMENU);
//CDialog::OnSize(SIZE_MAXIMIZED, 200, 300);
return TRUE;
}
void CSettingsDlg::SetPropPointer(IPropertyHost *pHost)
{
if(pHost !=NULL){
m_pCurrentHost = pHost;
m_PropCtrl.SetPropertyHost(pHost);
}
else
{
m_pCurrentHost = NULL;
m_PropCtrl.SetPropertyChangeListener(NULL);
m_PropCtrl.SetPropertyHost(NULL);
}
}
void CSettingsDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
}