我想设置对话框的默认大小,例如宽度为640像素,高度为384像素。我所说的“默认值”是指当第一次调用CXXXDlg::OnSize(UINT nType, int cx, int cy)
时,cx
的值为640,cy
的值为384。由于对话框的默认大小是以对话框单位为单位的,因此我可以使用MapDialogRect()将对话框单位转换为像素。那么如何进行反向转换呢?MoveWindow()
和SetWindowPos()
可以设置对话框的大小,但不能设置默认大小。我也尝试过使用GetDialogBaseUnits(),像这样:
DWORD dw = GetDialogBaseUnits();
WORD m_duXx4 = LOWORD(dw);
WORD m_duYx8 = HIWORD(dw);
int dialogUnitX = MulDiv(640, 4, m_duXx4);
int dialogUnitY = MulDiv(384, 8, m_duYx8);
事实证明,dialogUnitX
是 320
,而 dialogUnitY
是 192
,但是当我将对话框单元设置为 320 * 192
时,在 CXXXDlg::OnSize(UINT nType, int cx, int cy)
中得到的不是 640 * 384
而是 560 * 336
。有什么想法吗?