3

MFC でベースのモーダル ダイアログを作成しました( /CPropertySheetから派生した BCGSoft クラスを使用)。ユーザーがいずれかの で特定のアクションを実行したときに、別の でコントロールを有効/無効にしたいと考えています。CPropertySheetCPropertyPageCPropertyPageCPropertyPage

これは、ユーザーがすでにタブをクリックして 2 番目のCPropertyPage. ただし、MFC はCPropertyPage、ユーザーがアクティブ化するまで、秒の作成を遅らせます。このシナリオでは、秒内のコントロールCPropertyPageは存在せず、MFC はエラーをスローします。

CPropertyPageこれを克服するために、 内で必要な関数を呼び出して、すべての が存在することを確認したいと思いますCPropertySheet OnInitDialog()。誰かがこれを行う方法を説明できますか?

4

3 に答える 3

2

CPropertyPage::SetActivePage()関数を(もちろん実際のオブジェクトで)呼び出すと、CPropertyPageうまくいきます。

于 2012-11-30T13:25:58.287 に答える
0

コントロールをすぐに有効にするのではなく、ページの OnActivate メソッドで有効にします。

于 2012-05-05T02:38:47.420 に答える
0

あなたのデータはUIから分離されていないようです(悪いことです)。UI からデータを分離するようにビジネス ロジックを再設計して、UI がなくても初期データを設定できるようにすることをお勧めします。

必要な場合は、OnInitDialog で、ループ内の各ページにアクティブ ページを設定してから、既定のページをアクティブにします。

于 2012-05-05T00:08:29.343 に答える