1

こんにちは..MFC アプリケーションで CPropertySheet と CpropertyPage を使用してセットアップ ウィザードを設計しています.設計は完了しましたが、問題は..通常の CProperty シートには、4 つの既定のボタン "BACK NEXT FINISH HELP" があります.. .しかし、[次へ]ボタンと[終了]ボタンのみが必要です...次のコードを使用してそれを実行しましたが、実行時エラーが発生しました..「スタックオーバーフロー」このコードを正確にどこに含めるかわかりません(つまりどのクラス..この機能をどのように利用するか..誰でも私を助けることができます..

BOOL CExtractorFinalUIDlg::OnSetActive() { CSelfExtractor setButtons = (CSelfExtractor )GetParent(); setButtons->SetWizardButtons(PSWIZB_NEXT | PSWIZB_FINISH | PSWIZB_CANCEL);

CExtractorFinalUIDlg::OnSetActive(); を返します。

}

4

2 に答える 2

1

スタック オーバーフローの実際の原因は、CExtractorFinalUIDlg::OnSetActive() で CExtractorFinalUIDlg::OnSetActive() を呼び出すことです。そのため、関数は自分自身を再帰的に呼び出します。これにより、スタック オーバーフローが発生します。

関数は次のようになります。

BOOL CExtractorFinalUIDlg::OnSetActive() {
     CPropertySheet* sheet = (CPropertySheet*) GetParent();
     ASSERT(sheet);
     // Combination of PSWIZB_NEXT and PSWIZB_FINISH might be useless
     sheet->SetWizardButtons(PSWIZB_NEXT | PSWIZB_FINISH | PSWIZB_CANCEL)

     return CPropertyPage::OnSetActive();
}

詳細については、MSDN: CPropertySheet ::SetWizardButtonsを参照してください。

于 2013-11-18T11:43:21.403 に答える
0

プロパティシートのコンストラクターに、

m_psh.dwFlags |= PSH_NOAPPLYNOW;

m_pshのタイプはPROPSHEETHEADERで、さまざまな設定を行うことができます。

于 2009-12-22T19:10:18.493 に答える