首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CPropertySheet只显示一秒钟

CPropertySheet只显示一秒钟
EN

Stack Overflow用户
提问于 2015-03-13 14:20:11
回答 1查看 874关注 0票数 0

我正在尝试向我的MFC应用程序添加一个带有三个CPropertySheet的CPropertyPages。我的问题是,属性表只显示不到一秒,然后关闭。在创建CPropertySheet之后,当我打开一个不同的模式对话框时,CPropertySheet将保持打开状态,并且我可以毫无问题地使用它。这是我的代码:

代码语言:javascript
复制
BOOL CSLIMOptCplusplusApp::InitInstance()
{

CWinApp::InitInstance();
SQLHENV m_1;
EnvGetHandle(m_1);


Login lgn;
lgn.DoModal();




CImageSheet*      imagedlg            = new CImageSheet("Image Capture Dialog" );
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( pageImageDimensions );
imagedlg->AddPage( pageImageDisplay );

imagedlg->Create( NULL,
              -1,
              WS_EX_CONTROLPARENT | WS_EX_TOOLWINDOW ); 

imagedlg->ShowWindow( SW_SHOW );

当我使用imagedlg->Create(作为第一个参数时,我想我的问题可能是在NULL。我所遵循的教程使用this代替了NULL。但是,这会导致错误:

IntelliSense:"CSLIMOptCplusplusApp *“类型的参数与"CWnd *”类型的参数不兼容

我也试过imagedlg->Create();,它也只闪烁片刻。我希望我的CPropertySheet一直开着,直到它关闭。谢谢你的帮助!

编辑:这里是我希望我的财产表看起来像什么的图片。我的第一个选项卡使用ListControl来更改数据库选项,另外两个选项卡将执行其他任务。我的目的是保持对话框/属性表看起来与现在一样,但保持打开而不是关闭。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-13 16:12:12

您的问题在于尝试在基于对话框的应用程序中构造属性表。实际上,您在InitInstance中执行所有内容的选择有时会有问题。

首先,没有必要在堆中创建所有对象(即。使用“new”)。但是如果这是你想要的好吗。至于您最初的问题,工作表只显示片刻,InitInstance是设计为立即返回,如果没有告诉其他。因此,您可以看到实例的工作表。这是因为MFC期望有一个指向CWinApp类派生成员变量'm_pMainWnd‘的有效指针(实际上是CWinThread::m_pMainWnd)。如果要从InitInstance中启动属性表或主对话框,则需要将该变量设置为有效窗口。下面是我写的一个快速示例:

代码语言:javascript
复制
CPropertySheet* m_pdlgPropertySheet = new CPropertySheet(_T("Simple PropertySheet"));
    ASSERT(m_pdlgPropertySheet);

    // Add three pages to the CPropertySheet object.  Both m_pstylePage,  
    // m_pcolorPage, and m_pshapePage are data members of type  
    // CPropertyPage-derived classes in CView-derived class.
    Page1* m_pstylePage = new Page1;
    m_pstylePage->Construct(IDD_DIALOG1);
    Page2* m_pcolorPage = new Page2;
    m_pcolorPage->Construct(IDD_DIALOG2);
    m_pdlgPropertySheet->AddPage(m_pstylePage);
    m_pdlgPropertySheet->AddPage(m_pcolorPage);

    m_pMainWnd = m_pdlgPropertySheet;
    INT_PTR nResponse = m_pdlgPropertySheet->DoModal();

注意DoModal上面的一行。如果您需要更多信息,请查看使用CPropertySheet创建完整的应用程序。最后,您可能希望了解MFC如何启动应用程序以及预期的内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29034636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档