删除CPropertySheet /选项卡式对话框中页面下方的间隙

时间:2015-03-13 19:15:15

标签: c++ layout mfc tabbed-interface cpropertysheet

我有一个CPropertySheet,我用它来显示三个CPropertyPages。我删除了默认" Apply"和"帮助"纽扣。我的问题是,现在他们被删除,我有一个很大的差距,他们曾经位于。有没有办法消除这种差距?谢谢!

这是我所说的 gap 的图片: Gap

在取下按钮之前,它们位于间隙的右侧。请注意"更改选项"页面是在Visual Studio的设计器中创建的,页面在“打印”按钮下方结束。主要管理选项CPropertySheet完全由代码创建。 以下是初始化CPropertySheet和页面的代码(以及删除"帮助"和"应用"按钮:

BEGIN_MESSAGE_MAP(CSLIMOptCplusplusApp, CWinApp)
//ON_COMMAND(ID_HELP, &CWinApp::OnHelp) Commented out to remove the "Help" button
END_MESSAGE_MAP()

BOOL OptCplusplusApp::InitInstance()
{
CWinApp::InitInstance();
SQLHENV m_1;
EnvGetHandle(m_1);

Login lgn;   //Creates a Login dialog for the user to enter credentials.
lgn.DoModal();

CImageSheet*      imagedlg = new CImageSheet( "SLIM Admin Options" );
CImageDisplay*    pageImageDisplay    = new CImageDisplay;
CImageDimensions* pageImageDimensions = new CImageDimensions;
ListOption*       pageListOption      = new ListOption;

ASSERT( imagedlg );
ASSERT( pageImageDisplay );
ASSERT( pageImageDimensions );  
ASSERT( pageListOption );

imagedlg->AddPage( pageListOption);
imagedlg->AddPage( pageImageDisplay );
imagedlg->AddPage( pageImageDimensions );

imagedlg->m_psh.dwFlags |= PSH_NOAPPLYNOW;  //Removes the default Apply button
imagedlg->Create();
imagedlg->ShowWindow( SW_SHOW );
m_pMainWnd = imagedlg;

如果需要进一步的细节,我会编辑。感谢。

1 个答案:

答案 0 :(得分:1)

使用属性表来实现这种外观......

enter image description here

您需要在工作表中处理OnitDialog并重新调整大小。例如,使用CPropertySheet::GetPageCWnd::MoveWindow的组合可以实现您想要的效果。

BOOL MyPropSheet::OnInitDialog()
    {
    BOOL bResult = CPropertySheet::OnInitDialog();

    // TODO:  Add your specialized code here
    CPropertyPage* pg1 = GetPage(0);
    CRect rect(0, 0, 0, 0);

    pg1->GetWindowRect(&rect);

    CRect thisRect(0, 0, 0, 0);
    GetWindowRect(&thisRect);

    thisRect.bottom = rect.bottom + 16;
    MoveWindow(&thisRect);
return bResult;
}