当在MFC/MDI项目的CDialogBar中创建MainFrame时,我想知道如何指定它的默认大小。下面是“机箱代码”对话框栏。
// add Dialog bar window
if (m_wndDlgBar.Create(this, IDD_ADDLGBAR,
CBRS_RIGHT|CBRS_SIZE_DYNAMIC|CBRS_FLYBY, IDD_ADDLGBAR))
TRACE0("Failed to create DlgBar\n");
return -1; // fail to create
m_wndDlgBar.EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndDlgBar);
我试图调用 、MoveWindow()、 或,但它们不起作用。我想要达到的目标是当对话框被创建时,它有固定的大小(例如200x300),不管DPI设置是什么。如您所知,在资源中绘制的对话框的大小将随着DPI设置的更改而改变。所以我要对话框有固定的大小。
提前感谢!
-bc
发布于 2009-09-03 06:48:22
如果您用自定义方法对 CalcFixedLayout 进行子类化,则可以使用CDialogBar overridable方法。例如:
class CSizingDialogBar : public CDialogBar {
CSize m_size;
bool m_forceSize;
public:
CSizingDialogBar(CWnd* pParentWnd, UINT nID, CSize initialSize)
: CDialogBar(
pParentWnd, nID,
CBRS_RIGHT|CBRS_SIZE_DYNAMIC|CBRS_FLYBY, nID)
, m_size(initialSize)
, m_forceSize(true) {
~CSizingDialogBar() {}
virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz) {
if (m_forceSize) {
return m_size;