注册 登录
编程论坛 C++教室

vfw中回调函数的问题(参数传递问题)

ucyan 发布于 2012-06-29 14:32, 898 次点击
程序代码:

a.h
class a
{
public:
a(void);
~a(void);
static LRESULT WINAPI EncodeCallback(HWND hWnd, LPVIDEOHDR lpVHdr);
public:
int m;
static a* pThis;
};
a.cpp
a* a::pThis;
a:a(void)
{
pThis = this;
}
LRESULT WINAPI a::EncodeCallback(HWND hWnd, LPVIDEOHDR lpVHdr)
{
pThis->m;  //通过静态成员能够访问到类中的成员
}


这种方法只能对应一个类实例,但是如果多个类实例的话就不行(会获得最后一个类实例的成员)
现在有一个方法就是想EncodeCallback这个静态的回调函数传递一个this指针(网上说)
但是具体实现我不会,我想问一下怎样能够实现,谢谢
EncodeCallback(HWND hWnd, LPVIDEOHDR lpVHdr)的函数原型是这样,只有两个参数
3 回复
#2
rjsp2012-06-29 14:37
http://msdn.
用 lpVHdr->dwUser 保存 this
#3
ucyan2012-06-29 15:28
请问具体怎样实现?谢谢

[ 本帖最后由 ucyan 于 2012-6-29 17:06 编辑 ]
#4
ucyan2012-06-29 18:37
以找到解决方法,通过capSetUserData(hwnd, (DWORD)this);传递this指针到用户数据中
在回调函数中调用capGetUserData(hwnd)获得相应的指针。
但是rjsp提到的lpVHdr->dwUser 保存 this不知道怎样实现
1