在一个复杂的目标工程中,目标对象种类繁多CPropertiesWnd如何应付不同的对象属性的更改
我想到的方法是建立一个基类,目标对象处理属性的部分派生自这个基类,这个基类对外提供一个统一的接口.然后派生类实现这个接口的操作.这样就解决了不同对象的属性更改处理问题.
class CWhoAmI
{
public:
CWhoAmI(void);
virtual ~CWhoAmI(void);
//下面这个接口用于实现统一的操作
virtual void WhatCanIDoForYou(void *p);
};
class CPropertiesWnd里处理如下:
CPropertiesWnd::CWhoAmI* 我是谁;
afx_msg LRESULT OnPropertyChanged(__in WPARAM wparam, __in LPARAM lparam );
ON_REGISTERED_MESSAGE( AFX_WM_PROPERTY_CHANGED, OnPropertyChanged )
LRESULT CPropertiesWnd::OnPropertyChanged(__in WPARAM wparam, __in LPARAM lparam )
{
//
CMFCPropertyGridProperty * pProperty = ( CMFCPropertyGridProperty * ) lparam;
if(我是谁)我是谁->WhatCanIDoForYou((void*)lparam);
return TRUE;
}
使用时变量'我是谁' 填写派生类的实例的指针;