积极答复者
VC++有没有委托事件和消息的功能,以及怎么实现?

问题
答案
-
Visual C++ 是开发工具,不涉及语言层面的东西。这件事情是这样的:Managed C++ 实际上是有委托的,而Natived C++ 是没有的。
Managed C++ 的委托实现:
声明:
private:
EventHandler^ _PageLoadComplete;
public:
virtual event EventHandler^ AxPageLoadCompleted
{
virtual void add(EventHandler^ value)
{
_PageLoadComplete += value;
};
virtual void remove(EventHandler^ value)
{
_PageLoadComplete -= value;
};
};
触发:
void OnPageLoadComplete()
{
if(nullptr != this->_PageLoadComplete)
{
this->_PageLoadComplete(this,EventArgs::Empty);
}
}
Natived C++ 就没有这些了,一般是通过消息(比如WM_CLOSE)、回调(比如SetTimer 需要加一个定时器到时的回调函数)、观察者模式(Observer) 来实现通知。
- 已建议为答案 Michael Lee2Microsoft employee, Moderator 2010年1月20日 10:34
- 已标记为答案 Sheng Jiang 蒋晟Moderator 2010年1月23日 15:19
全部回复
-
Visual C++ 是开发工具,不涉及语言层面的东西。这件事情是这样的:Managed C++ 实际上是有委托的,而Natived C++ 是没有的。
Managed C++ 的委托实现:
声明:
private:
EventHandler^ _PageLoadComplete;
public:
virtual event EventHandler^ AxPageLoadCompleted
{
virtual void add(EventHandler^ value)
{
_PageLoadComplete += value;
};
virtual void remove(EventHandler^ value)
{
_PageLoadComplete -= value;
};
};
触发:
void OnPageLoadComplete()
{
if(nullptr != this->_PageLoadComplete)
{
this->_PageLoadComplete(this,EventArgs::Empty);
}
}
Natived C++ 就没有这些了,一般是通过消息(比如WM_CLOSE)、回调(比如SetTimer 需要加一个定时器到时的回调函数)、观察者模式(Observer) 来实现通知。
- 已建议为答案 Michael Lee2Microsoft employee, Moderator 2010年1月20日 10:34
- 已标记为答案 Sheng Jiang 蒋晟Moderator 2010年1月23日 15:19