📄 methodptr.h
字号:
// MFCMethodPointer.h: interface for the MFCMethodPointer class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_MFCMETHODPOINTER_H__67CE3765_BEB6_11D2_A18B_00609784F50B__INCLUDED_)
#define AFX_MFCMETHODPOINTER_H__67CE3765_BEB6_11D2_A18B_00609784F50B__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "MethodPtrBase.h"
// r = return type
// o = object definition
// m = method
#define METHOD(r,o,m) (r (o::*)() )(&o::m)
// O = object definition
// R = return type
template <class O, class R>
class CMethodPtr : public CMethodPtrBase<R>
{
typedef R (O::*PMETHOD)();
typedef R (O::*PMETHOD1)(LPVOID);
typedef R (O::*PMETHOD2)(LPVOID, LPVOID);
public:
CMethodPtr(O* pObject, PMETHOD pMethod) : m_pObject( pObject ), m_pMethod( pMethod ) {};
// Member Variables
private:
O* m_pObject; // pointer to an object
PMETHOD m_pMethod; // pointer to the method
//Implementation
public:
void SetObject( O* pObject ) { m_pObject = pObject; }
void SetMethod( PMETHOD pMethod ) { m_pMethod = pMethod; }
// 0 args
virtual R CallMethod()
{
return (m_pObject->*m_pMethod)();
}
// 1 arg
virtual R CallMethod(LPVOID arg1)
{
return (m_pObject->*(PMETHOD1)m_pMethod)(arg1);
}
// 2 args
virtual R CallMethod(LPVOID arg1, LPVOID arg2)
{
return (m_pObject->*(PMETHOD2)m_pMethod)(arg1, arg2);
}
};
#endif // !defined(AFX_MFCMETHODPOINTER_H__67CE3765_BEB6_11D2_A18B_00609784F50B__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -