首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确保在用户单击CPropertySheet之前已经创建了CPropertyPage?

如何确保在用户单击CPropertySheet之前已经创建了CPropertyPage?
EN

Stack Overflow用户
提问于 2012-05-05 07:41:14
回答 3查看 1.8K关注 0票数 3

我已经在MFC中创建了一个CPropertySheet-based模式对话框(使用从CPropertySheet /CPropertyPage派生的BCGSoft类)。当用户在某个CPropertyPage中执行某个操作时,我想启用/禁用另一个CPropertyPage中的控件。

假设用户已经在选项卡上单击以实例化第二个CPropertyPage,则可以很好地工作。但是,MFC会延迟第二个CPropertyPage的创建,直到用户激活它。在这种情况下,第二个CPropertyPage中的控件不存在,并且MFC引发错误。

为了克服这个问题,我想通过在CPropertySheet OnInitDialog()中调用必要的函数来确保所有的CPropertyPage都存在。有人能解释一下怎么做吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-30 21:25:58

调用函数CPropertyPage::SetActivePage() (当然是在实际的CPropertyPage对象上)可以做到这一点。

票数 2
EN

Stack Overflow用户

发布于 2012-05-05 08:08:29

听起来你的数据并没有从UI中分离出来(这是件坏事)。最好重新设计业务逻辑,将数据与UI分开,这样即使没有UI,您也可以填充初始数据。

如果有必要,在OnInitDialog、set the active page to each page in a loop中激活默认页面。

票数 0
EN

Stack Overflow用户

发布于 2012-05-05 10:38:47

而不是尝试立即启用控件,而是在页的OnActivate方法中启用。

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

https://stackoverflow.com/questions/10457455

复制
相关文章

相似问题

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