因为一个类会用到多个回调函数, 而且这个类的多个地方都会调用, 为了避免麻烦, 所以想做一个回调函数表但是问题是:class A 调用B类的回调函数
Class BClass B : public A, public CDialog1. 怎么定义一个回调函数表? 能不能定义回调函数表?
1. 现在想把B的回调函数传递给A类, 在什么时候传递给A不会出错呢?
解决方案 »
- 使用DEPENDS.EXE查看dll依赖的dll,发现不同的dll依赖的顺序不一样,这个与代码有关吗?
- 127.0.0.1:30606 多线程通信
- activex 安装的奇怪问题
- 紧急(!!)_VC 如何将文本信息的背景设置为图象
- 老板要调我去做市场,郁闷!
- 控件改变大小问题??
- 请问一个进程最多可以开多少个线程?我的程序在win2003下开了2000个左右就不行了
- 用过boundchecher的高手请进
- 头文件<fstream.h>和<fstream>有什么区别???
- GetDatabase函数怎么使用?
- 急!请问高手如何修改common open/save dialog的缺省风格?
- 有谁在win2003下遇到过这种错误 fault error 0x00000000
将用到的函数定义成函数指针的样式,可以做成一个回调函数表 实际上是一个指针列表
2、因为不太明白你的意思,不太好说,但如果用函数指针的方式的话将函数指针以参数方式传递给A应该是不会出错的3、需要注意的是函数指针的定义和回调函数必须是STATIC的
我得意思是:
class B 有个多个静态函数
static int CALLBACK ExecuteAction(LPVOID lParam,TIMER_ITEM stTimerItem); //执行 动作
static int CALLBACK StopAction(LPVOID lParam,TIMER_ITEM stTimerItem); //停止 动作
static CString CALLBACK GetPass()怎么把这些函数做到一个数组里面, 然后把这个数组传递给 class A, 然后A通过数组访问这些函数地址
char* const cmd;
void (*funct)();
};
static cmd_info cmd_list[] ={
{"ExecuteAction",ExecuteAction},
{"StopAction",StopAction},
{"GetPass",GetPass},
{NULL,NULL}
};
static void do_cmd(
const char *const cmd
){
struct cmd_info *cur_cmd;
cur_cmd = cmd_list;
while(
(cur_cmd!=NULL) && (::strcmp(cur_cmd->cmd,cmd)!=0))
{
cur_cmd++;
}
if(cur_cmd ==NULL){
TRACE("Command not founded\n");
}
else{
cur_cmd->funct();
}
}
int main()
{
char cmd[100];
memset(cmd,'\0',100);
memcpy(cmd,"GetPass",50);//调GetPass回调函数
do_cmd(cmd);
}
}
以后你想正么做就真么做了
可是看你后面的话,好像意思又是说A类会用到其他DLL里的函数。
姨,我怎么没有想到呢?