CMFCPropertyGridCtrl последний элемент не нарисован? - PullRequest
0 голосов
/ 29 сентября 2011

У меня есть CMFCPropertyGridCtrl, который я использую в диалоговом окне параметров. У меня есть метод в моем классе диалогового окна параметров, который называется InitPropertyGrid (). Этот метод очищает любые свойства и заполняет объекты CMFCPropertyGrid (используя пользовательский объект настроек для значений свойств) и добавляет их в сетку.

Когда я открываю свое диалоговое окно в первый раз, все свойства отображаются правильно. Однако если я затем закрою диалоговое окно и снова открою его, самое последнее свойство не будет отображено на экране. Все остальные свойства нарисованы нормально:

Первый раз:

enter image description here

Все последующие времена:

enter image description here

Как видите, значок плюс / минус показывает минус в обоих случаях, что указывает на то, что раздел расширен. Когда последний элемент не отображается, нажатие на значок +/- один раз, чтобы заключить контракт и один раз, чтобы развернуть, приводит к тому, что последний элемент отображается правильно.

Обратите внимание, что когда я закрываю диалоговое окно, я не уничтожаю его, а просто заново показываю. Однако непосредственно перед вызовом ShowWindow в диалоговом окне я вызываю метод InitPropertyGrid () (вызываемый UpdateToCurrentSettings).

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

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

1 Ответ

0 голосов
/ 01 октября 2011

Я обнаружил, что могу устранить эту проблему, просто вызвав myPropertyGrid.ExpandAll(TRUE) в конце кода, где я инициализирую сетку свойств (InitPropertyGrid () для меня).Это, кажется, заставляет все свойства расширяться.

...