0

オプション ダイアログ ボックスで使用している CMFCPropertyGridCtrl があります。オプション ダイアログ クラスに InitPropertyGrid() というメソッドがあります。このメソッドは、すべてのプロパティをクリアし、(プロパティ値のカスタム設定オブジェクトを使用して) CMFCPropertyGrid オブジェクトを設定し、グリッドに追加します。

初めてダイアログ ボックスを開くと、すべてのプロパティが正しく表示されます。ただし、ダイアログ ボックスを閉じて再度開くと、最後のプロパティが画面に表示されません。他のすべてのプロパティは通常どおりに描画されます。

初めて:

ここに画像の説明を入力

以降のすべての時間:

ここに画像の説明を入力

ご覧のとおり、プラス/マイナス アイコンはどちらの場合もマイナスを示しており、セクションが展開されていることを示しています。最後の項目が表示されていない場合、+/- アイコンを 1 回クリックして縮小し、1 回拡大すると、最後の項目が正しく表示されます。

ダイアログ ボックスを閉じるときに、ダイアログ ボックスを破棄せずに再表示することに注意してください。ただし、ダイアログで ShowWindow を呼び出す直前に、InitPropertyGrid() (UpdateToCurrentSettings によって呼び出される) メソッドを呼び出します。

if(optionsDialog_ == NULL)
{
    optionsDialog_ = new OptionsDialog(settings_, this);
    optionsDialog_->Create(OptionsDialog::IDD, this);
}

optionsDialog_->UpdateToCurrentSettings();
optionsDialog_->ShowWindow(SW_SHOW);
4

1 に答える 1

0

プロパティグリッドを初期化するコードの最後で呼び出すだけmyPropertyGrid.ExpandAll(TRUE)で、この問題を解決できることがわかりました(私にとってはInitPropertyGrid())。これにより、すべてのプロパティが強制的に拡張されるようです。

于 2011-09-30T22:04:58.090 に答える