请教高手类和对象的问题!
我最近在包装一个WINDOWS应用框架,现在发现有很大的问题! 比如我包装一个BUTTON类,这个类实际是以按钮的形式体现的,也就是说,我必须在CreateWindow成功以后才能让 BUTTON 类成功创建,那现在就出了问题了!
我必须在 BUTTON 类的构造函数中调用 CreateWindow 来创建其实体形式!但是有实因为各种原因 CreateWindow 不能成功创建,这时我怎么让 BUTTON 类创建不成功呢? 我确实找不到方法解决!请求高手教教我!
还有一个问题就是,我的这个类都是对应控件的,也就是说,有些成员函数就是一个收到通知的事件,
例如:
class BUTTON
{
public:
void onClick(void);
};
现在如果按钮收到一个BN_CLICKED 通知就调用 BUTTON 的成员函数 onClick 问题就出在这里了!
BUTTON 是一个类,他们每一个实例其 onClick 成员应该不会是同一个函数,这样不就是很没有意思了!
现在我有一种解决方案!如下:
class BUTTON
{
public:
virtual void onClick(void);
};
现在更不行了,第当使用类的用户要创建一个按都就必须从 BUTTON 类派生出一个子类来
这样可以实现事件函数的直正意思,却还是满足不了每个类他是一个类,而它的所有对象的事件接口的不同!
像下面这样,每做一个按钮就派生一个类,多不合理呀,而且每个类只能有一个实例,因为每个类的事件接口是同一个!
很苦恼呀! 像下面这样!
class MyButton:public BUTTON
{
public:
void onClick(void);
};
所以我想MFC也是因为没有办法解决这个问题所以才用消息映射的方法来解决吧!
就是把接口都定义成指针,类对象刚创建里这些针针都指向默认的成员函数,
如果有需要用到的接口,就做一个消息映射表,表分成两项,一项是对象的指针,
另一项是指向自己自己写的接口函数,
当有通知事件时就可以通过对象的指针找出其对应的接口!可是我感觉这样好你很不舒服不知道是哪里的原因,
所以我想问下高手有什么好方法解决这类问题?