c++ - 如何正确更改 CPropertySheet 上的选项卡

标签 c++ tabs mfc cpropertysheet

我有一个包含三个选项卡的 CPropertySheet。每个选项卡都有一个不同的 CPropertyPage 类。当使用调试器加载我的 CPropertySheet 时,第一页总是正确显示。但是,当我单击任何其他选项卡时,CPropertyPage 区域变为空白。即使我在第一个选项卡上单击返回,该区域仍然是空的。我正在使用 Visual Studio、MFC、C++。

我正在尝试找到正确的方法来处理不同的选项卡点击并正确显示我的选项卡。这是初始化我的属性表及其页面的代码:

BOOL CSLIMOptCplusplusApp::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( "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;

这是我的 CPropertySheet 类的代码:

BOOL CImageSheet::OnInitDialog()
{
CWnd* pOKButton = GetDlgItem( IDOK );
ASSERT( pOKButton );
pOKButton->ShowWindow( SW_HIDE );

CWnd* pCANCELButton = GetDlgItem( IDCANCEL );
ASSERT( pCANCELButton );
pCANCELButton->ShowWindow( SW_HIDE );

// Set Flags for property sheet
m_bModeless    =  TRUE;
m_nFlags      |=  WF_CONTINUEMODAL;


BOOL bResult   = CPropertySheet::OnInitDialog();
m_bModeless    =  FALSE;
m_nFlags      &=  ~WF_CONTINUEMODAL;

//Get button sizes and positions
CRect rect, tabrect;
GetDlgItem( IDOK )->GetWindowRect( rect );
GetTabControl()->GetWindowRect( tabrect );

ScreenToClient( rect );
ScreenToClient( tabrect );  

UpdateData( FALSE );

最佳答案

我的问题是我将 m_bModeless 设置为 false,

BOOL bResult   = CPropertySheet::OnInitDialog();
m_bModeless    =  FALSE;  //Change to TRUE to fix the problem.
m_nFlags      &=  ~WF_CONTINUEMODAL;

关于c++ - 如何正确更改 CPropertySheet 上的选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29077704/

相关文章:

C++ - 有一个类型能够容纳它的 child

javascript - Bootstrap 选项卡以 Secondtab 中的大空白开头

android - 使用 fragment 更改为横向时 map 行为会发生变化

javascript - 如何根据从不同选项卡中选择的项目添加总成本

c++ - 为什么 ShellExecuteEx() 参数不起作用?

c++ - 欧拉计划 3(性能)

c++ - 如何像STL一样用c++制作一个库

c++ - & 符号加速器在 Win32 对话框中引起蜂鸣声

c++ - 在 C++ 中创建一个只读文件

c++ - 错误 C2039 : 'serialize' : is not a member of 'std::vector<_Ty>'