我一直在 MFC 中开发一个程序,它用我的数据库中的一些数据填充 PropertyGrid。此 PropertyGrid 中的一个字段包含与一个人的年龄相关的数据。这是实现:
CMFCPropertyGridProperty * pProp = new CMFCPropertyGridProperty(_T("Age"), (variant_t)PropAge->GetNext(headAge), _T("This is a description"));
pProp->EnableSpinControl(TRUE, 0, 150);
pGroup->AddSubItem(pProp);
包含. PropAge
_ CList
_age (integer) of each person's register
这是我的问题:当我尝试修改它的值(使用 SpinControl 或键入另一个值)时,新值不会以粗体显示。此外,当我使用该方法时IsModified()
,它返回 false:
void CPropertiesWnd::DoSomething()
{
CMFCPropertyGridProperty * PropSel;
PropSel = m_wndPropList.GetCurSel();
bool a = PropSel->GetSubItem(1)->IsModified(); //SubItem containing the Age data.
//Returns False when it's modified!
//It always returns 'false', even if
//there was made a modification.
}
我使用调试器检查发生了什么,并看到了一些非常有趣的东西:
http://img836.imageshack.us/img836/8256/c90j.jpg
(注:m_VarValue
代表当前值,m_VarValueOrig
代表修改前的que值)
如您所见,变量m_VarValue
和之间存在类型差异m_VarValueOrig
。(I4 是什么意思?)
我还注意到该项目中还有其他子项也处理数字,它们实际上显示了何时进行了修改。他们的实现是这样的:
pProp = new CMFCPropertyGridProperty(_T("Something"), (_variant_t) 0l, _T(""));
0 之后的这个“l”是什么意思?和I4类型有关系吗?