在我的MFC Dialog类中,我使用__hook
和__unhook
为我的一个对象的事件注册一个处理程序。
对话类:
// Header
class CMyDlg : public CDialogEx, public CEffectController
{
public:
CMyDlg(CWnd* pParent = NULL);
enum { IDD = IDD_MY_DIALOG };
protected:
CEffect m_effect;
virtual BOOL OnInitDialog();
afx_msg void OnDestroy();
private:
void OnEffectReady();
. . .
};
// CPP
BOOL CMyDlg::OnInitDialog
{
CDialogEx::OnInitDialg();
__hook(&Effect::effectReady, &m_effect, &CMyDlg::OnEffectReady);
return TRUE;
}
void CMyDlg::OnDestroy
{
__unhook(&Effect::effectReady, &m_effect, &CMyDlg::OnEffectReady);
CDialogEx::OnDestroy();
}
父类:
class CEffectController
{
public:
CEffectController();
virtual ~CEffectController();
};
对象类:
class CEffect
{
public:
CEffect();
~CEffect();
__event void effectReady();
};
问题在于,无论何时我继承CEffectController
OR ,请使用__hook
和__unhook
我得到以下调试器输出:
Detected memory leaks!
Dumping objects ->
{352} normal block at 0x013E35E0, 24 bytes long.
Data: <p > 70 A6 C2 00 00 00 00 00 10 F7 0F 01 CD CD CD CD
Object dump complete.
不继承CEffectController
或使用__hook
或__unhook
修复此问题。
我想在__hook
中使用函数指针会导致我的类的某些部分再次被__unhook
取消挂钩的问题。
有没有人遇到这样的问题,或者知道可能的解决方案或解决方法吗?
注意:所有函数,构造函数,析构函数都被调用!