【发布时间】:2011-06-23 15:14:38
【问题描述】:
我正在使用具有回调函数的 C 库,例如:
int DownloadStream(LPCTSTR host,DWORD channelNumber,NewImage pNewImage);
typedef int (*NewImage)(BYTE *pData, int nLen,void *returnHandle);
在 C 中我可以这样调用:
int CallDownloadStream(LPCTSTR host,DWORD channelNumber)
{
int hr = DownloadStream(host,channelNumber,OnNewImage);
return hr;
}
int OnNewImage(BYTE *pData, int nLen,void *returnHandle)
{
// able to get data
}
我想要的是将这些函数称为 C++ 类的成员,例如:
class MyClass
{
public:
int CallDownloadStream(LPCTSTR host,DWORD channelNumber)
{
int hr = DownloadStream(host,channelNumber,OnNewImag);
return hr;
}
int OnNewImage(BYTE *pData, int nLen,void *returnHandle)
{
// able to get data
}
}
我无法编译它。是否可以以这种方式使用这些回调函数?如果可以,怎么做?
PS:我无法控制原始 C 风格的回调函数。
【问题讨论】:
-
什么是 void *returnHandle ?是否有另一个功能可以让您将其值设置为您想要的任何值?它可用于将实例传递给您的类,并在调用回调时将其取回。
-
这是一个特定 API 函数的特性...与类实例无关。