删除 CPropertySheet / 选项卡式对话框页面下方的间隙
Removing gap underneath pages on CPropertySheet / Tabbed Dialog
我有一个 CPropertySheet,用于显示三个 CPropertyPage。我删除了默认的 "Apply" 和 "Help" 按钮。我的问题来了,现在它们被移除了,我在它们曾经所在的位置有一个很大的差距。有没有办法消除这个差距?谢谢!
这是我所说的 差距 的图片:
按钮被移除之前,它们位于间隙的右侧。请注意,"Change Options" 页面是在 Visual Studio 的设计器中创建的,页面在“打印”按钮的正下方结束。主要的管理选项 CPropertySheet 完全由代码创建。
这是初始化 CPropertySheet 和页面的代码(以及删除 "Help" 和 "Apply" 按钮:
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;
如果需要更多详细信息,我会进行编辑。谢谢
用 属性 sheet 实现这种外观......
您需要在 sheet 中处理 OnitDialog 并重新调整它的大小。例如,使用 CPropertySheet::GetPage and CWnd::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;
}
我有一个 CPropertySheet,用于显示三个 CPropertyPage。我删除了默认的 "Apply" 和 "Help" 按钮。我的问题来了,现在它们被移除了,我在它们曾经所在的位置有一个很大的差距。有没有办法消除这个差距?谢谢!
这是我所说的 差距 的图片:
按钮被移除之前,它们位于间隙的右侧。请注意,"Change Options" 页面是在 Visual Studio 的设计器中创建的,页面在“打印”按钮的正下方结束。主要的管理选项 CPropertySheet 完全由代码创建。 这是初始化 CPropertySheet 和页面的代码(以及删除 "Help" 和 "Apply" 按钮:
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;
如果需要更多详细信息,我会进行编辑。谢谢
用 属性 sheet 实现这种外观......
您需要在 sheet 中处理 OnitDialog 并重新调整它的大小。例如,使用 CPropertySheet::GetPage and CWnd::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;
}