如何在回调函数中调用其他等函数???
我在程序中使用了回调函数,请问在这个回调函数中如何使用其他的函数???
比如调用OnPaint()?????
问题点数:30、回复次数:9Top
1 楼fireseed(【VC无敌,英明神武,千秋万代,一统江湖!】—奶油狗)回复于 2006-06-02 22:17:58 得分 0
直接用,有什么区别吗?回调函数也是函数!Top
2 楼wenbo_ying(应)回复于 2006-06-02 22:25:10 得分 0
OnPaint是成员函数吧,不能在其它函数里直接调用吧Top
3 楼gao_ming77(小明)回复于 2006-06-02 22:28:27 得分 0
发消息。一般不建议直接调用消息响应函数。而且,如果你的回调不是在主线程,直接调用回有很多问题。Top
4 楼fireseed(【VC无敌,英明神武,千秋万代,一统江湖!】—奶油狗)回复于 2006-06-02 22:47:00 得分 10
不用直接调用onpaint(),调用Invalidate函数即可。
你的窗体指针->Invalidate();
AfxGetMainWnd()函数可以获得当前进程的主窗体指针
AfxGetMainWnd()->Invalidate();Top
5 楼jxyhelen1(文武贝)回复于 2006-06-03 09:38:59 得分 0
如果是自己声明的函数呢?比如说定义一个函数void paint(void)
在回调函数中该如何调用阿????Top
6 楼CUG122032(烫烫烫烫烫烫?烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫?烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫)回复于 2006-06-03 12:19:26 得分 0
直接用啊.
On*******(****...)
{
paint();
}Top
7 楼vcPlayer(没有星星,努力做太阳!)回复于 2006-06-03 16:42:17 得分 0
呵呵,莱鸟借用贵宝地一问:
什么是回调函数啊?Top
8 楼jxyhelen1(文武贝)回复于 2006-06-05 09:41:35 得分 0
CUG122032()你试过了吗?我怎么不能直接调用阿?Top
9 楼fireseed(【VC无敌,英明神武,千秋万代,一统江湖!】—奶油狗)回复于 2006-06-05 12:14:09 得分 20
jxyhelen1(文武贝) ( ) 信誉:96 2006-6-3 9:39:00 得分: 0
如果是自己声明的函数呢?比如说定义一个函数void paint(void)
在回调函数中该如何调用阿????
============================================
我明白你的意思了,一般要这样设计的
lParam做为参数
typedef DWORD (CALLBACK *NOTIFYFUNC)( LPARAM lParam );
class A;
void ApiFunc( NOTIFYFUNC pNotify, LPARAM lParam )
{
pNotify(lParam);
}
DWORD CALLBACK MyNotifyFunc( LPARAM lParam )
{
A* pa = dynamic_cast<A*>lParam; // 将指针做为参数传入
_ASSERT( pa );
pa->Paint();//调用了
}
class A
{
public:
void Start( void );
void Paint( void );
};
void A::Paint( void )
{
}
void A::Start( void )
{
ApiFunc( MyNotifyFunc, reinterpret_cast<A*>this );
}
Top




