CMFCPropertyGridCtrl最后一项未绘制?

CMFCPropertyGridCtrl最后一项未绘制?,mfc,mfc-feature-pack,Mfc,Mfc Feature Pack,我在选项对话框中使用了一个CMFCPropertyGridCtrl。我的选项对话框类中有一个名为InitPropertyGrid()的方法。此方法清除所有属性并填充CMFCPropertyGrid对象(使用属性值的自定义设置对象)并将其附加到网格 当我第一次打开对话框时,所有属性都正确显示。但是,如果关闭对话框并重新打开,屏幕上不会绘制最后一个属性。正常绘制所有其他特性: 第一次: 所有后续时间: 如您所见,加号/减号图标在这两种情况下都显示减号,以指示该部分已展开。当最后一个项目未显示时,

我在选项对话框中使用了一个CMFCPropertyGridCtrl。我的选项对话框类中有一个名为InitPropertyGrid()的方法。此方法清除所有属性并填充CMFCPropertyGrid对象(使用属性值的自定义设置对象)并将其附加到网格

当我第一次打开对话框时,所有属性都正确显示。但是,如果关闭对话框并重新打开,屏幕上不会绘制最后一个属性。正常绘制所有其他特性:

第一次:

所有后续时间:

如您所见,加号/减号图标在这两种情况下都显示减号,以指示该部分已展开。当最后一个项目未显示时,单击+/-图标一次收缩,一次展开会使最后一个项目正确显示

注意:当我关闭对话框时,我不会破坏它,只是重新显示它。但是,在调用对话框上的ShowWindow之前,我立即调用InitPropertyGrid()(由UpdateToCurrentSettings调用)方法


我发现只要在初始化属性网格(InitPropertyGrid()的代码末尾调用
myPropertyGrid.ExpandAll(TRUE)
,就可以消除这个问题。这似乎迫使所有属性展开

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

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