У меня есть CMFCPropertyGridCtrl, который я использую в диалоговом окне параметров. У меня есть метод в моем классе диалогового окна параметров, который называется InitPropertyGrid (). Этот метод очищает любые свойства и заполняет объекты CMFCPropertyGrid (используя пользовательский объект настроек для значений свойств) и добавляет их в сетку.
Когда я открываю свое диалоговое окно в первый раз, все свойства отображаются правильно. Однако если я затем закрою диалоговое окно и снова открою его, самое последнее свойство не будет отображено на экране. Все остальные свойства нарисованы нормально:
Первый раз:
Все последующие времена:
Как видите, значок плюс / минус показывает минус в обоих случаях, что указывает на то, что раздел расширен. Когда последний элемент не отображается, нажатие на значок +/- один раз, чтобы заключить контракт и один раз, чтобы развернуть, приводит к тому, что последний элемент отображается правильно.
Обратите внимание, что когда я закрываю диалоговое окно, я не уничтожаю его, а просто заново показываю. Однако непосредственно перед вызовом ShowWindow в диалоговом окне я вызываю метод InitPropertyGrid () (вызываемый UpdateToCurrentSettings).
if(optionsDialog_ == NULL)
{
optionsDialog_ = new OptionsDialog(settings_, this);
optionsDialog_->Create(OptionsDialog::IDD, this);
}
optionsDialog_->UpdateToCurrentSettings();
optionsDialog_->ShowWindow(SW_SHOW);