vc如何动态增加类的成员函数
2010-12-08 08:30
211 查看
struct someClass;
typedef LPVOID (*pfCallback)(someClass* pThis,LPVOID);
struct someClass{
static CONST int m_xxx=0;
CArray <pfCallback> m_arr_pCallback;
LPVOID invoke(int idx,LPVOID parm);
int AddCallback(pfCallback pCallback);
};
LPVOID someClass::invoke(int idx,LPVOID parm)
{
return m_arr_pCallback[idx](this,parm);
}
int someClass::AddCallback(pfCallback pCallback)
{
return m_arr_pCallback.Add(pCallback);
}
LPVOID callbackfun(someClass* pThis,LPVOID)
{
printf( "%d/n ",pThis-> m_xxx);
return NULL;
}
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
// initialize MFC and print and error on failure
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
_tprintf(_T("Fatal Error: MFC initialization failed/n"));
nRetCode = 1;
}
else
{
// TODO: code your application's behavior here.
}
someClass s;
s.invoke(s.AddCallback(callbackfun),NULL);
return nRetCode;
}
typedef LPVOID (*pfCallback)(someClass* pThis,LPVOID);
struct someClass{
static CONST int m_xxx=0;
CArray <pfCallback> m_arr_pCallback;
LPVOID invoke(int idx,LPVOID parm);
int AddCallback(pfCallback pCallback);
};
LPVOID someClass::invoke(int idx,LPVOID parm)
{
return m_arr_pCallback[idx](this,parm);
}
int someClass::AddCallback(pfCallback pCallback)
{
return m_arr_pCallback.Add(pCallback);
}
LPVOID callbackfun(someClass* pThis,LPVOID)
{
printf( "%d/n ",pThis-> m_xxx);
return NULL;
}
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
// initialize MFC and print and error on failure
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
_tprintf(_T("Fatal Error: MFC initialization failed/n"));
nRetCode = 1;
}
else
{
// TODO: code your application's behavior here.
}
someClass s;
s.invoke(s.AddCallback(callbackfun),NULL);
return nRetCode;
}
相关文章推荐
- VC中外部函数如何获得对话框成员变量
- 如何将GTK+-2.0的信号、回调处理映射成类成员函数的调用--VC中测试(虚拟继承类及多继承)
- VC中外部函数如何获得对话框成员变量
- 如何动态保存不同类的对象的成员函数的地址?--解决
- 如何动态保存不同类的对象的成员函数的地址?--解决(续)
- VC中外部函数如何获得对话框成员变量
- 只有dll的情况下如何动态调用里面的类成员函数
- VC多线程中全局函数如何调用对话框类成员变量及成员函数
- 如何动态保存不同类的对象的成员函数的地址?--解决(续)
- 如何将GTK+-2.0的信号、回调处理映射成类成员函数的调用--VC中测试(单类继承)
- 如何动态保存不同类的对象的成员函数的地址?--解决
- 如何使类的成员函数作为回调函数
- 谈谈vc如何写dll(封装性,隐藏头文件,私有成员)
- 如何在Python函数执行前后增加额外的行为
- vc如何返回函数结果及压栈参数
- const成员函数内部如何改变成员变量
- 如何利用c++11的新特性编写类成员线程函数并实现同步
- 再谈如何实现动态增加(选取)报表字段的问题
- 虚函数的真相(VC编译器如何实现“virtual ”规则)
- VC++ 6.0中如何添加OnInitDialog()函数