3

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

这很好用,假设用户已经单击选项卡来实例化第二个CPropertyPage. 但是,MFC 会延迟第二个的创建,CPropertyPage直到它被用户激活。在这种情况下,秒内的控件CPropertyPage不存在,MFC 会抛出错误。

为了克服这个问题,我想CPropertyPage通过调用CPropertySheet OnInitDialog(). 有人可以解释如何做到这一点吗?

4

3 回答 3

2

调用函数CPropertyPage::SetActivePage()(当然是在实际CPropertyPage对象上)就可以了。

于 2012-11-30T13:25:58.287 回答
0

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

如果必须,在 OnInitDialog 中,将活动页面设置为循环中的每个页面,然后激活默认页面。

于 2012-05-05T00:08:29.343 回答
0

与其尝试立即启用控件,不如在页面的 OnActivate 方法中执行此操作。

于 2012-05-05T02:38:47.420 回答