首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

函数指针作为参数的有关问题

2012-03-25 
函数指针作为参数的问题在EVC4.0下开发wince5.0的应用程序。在网上下载了一份资料,提供了一个lib一个dll,还

函数指针作为参数的问题
在EVC4.0下开发wince5.0的应用程序。

在网上下载了一份资料,提供了一个lib一个dll,还有一个头文件BlueToothCtrl.h。

在头文件BlueToothCtrl.h里面有如下定义:

 

①typedef struct _RemoteBthDevInfo

{

  _RemoteBthDevInfo ()

  {

  memset ( szName, 0, sizeof(szName) );

  memset ( &RemoteAddr, 0, sizeof(BT_ADDR) );

  memset ( &LocalAddr, 0, sizeof(BT_ADDR) );

  }

  TCHAR szName[256]; //蓝牙设备名称;

  BT_ADDR RemoteAddr; //蓝牙设备远程地址;

  BT_ADDR LocalAddr;

  TCHAR ServiceClassId[72];

} RemoteBthDevInfo;

 

②typedef void (__stdcall *SELECT_DEVICE)(RemoteBthDevInfo* devInfoArray, int arrayLen, __int64* devRemoteAddr);

 

③SOCKET __stdcall ConnectDevice(SELECT_DEVICE pSelectDeviceFunc,LPWSTR lpPassword=L"0000",LPWSTR devNameFilter=GOLDTEL_DEVICE_NAME_FLAG);

其中:

①是定义了一个结构体。

②是定义了一个函数指针类型。

③是一个连接蓝牙设备的函数。

 

现在的问题是:在我的cpp里面如何调用③地方法ConnectDevice。

 

我是这样做的:

第一步:在mycpp.cpp的顶部添加引用#include” BlueToothCtrl.h”

第二部:在mycpp.cpp中定义一个全局函数 void fTest(RemoteBthDevInfo* devInfoArray, int arrayLen, __int64* devRemoteAddr)

第三部:在myMethod()方法中代码如下:

RemoteBthDevInfo m_Rb;

SELECT_DEVICE fSD;

fSD = fTest;

问题来了:ConnectDevice函数如何调用?

我试了ConnectDevice(fSD, L"0000", GOLDTEL_DEVICE_NAME_FLAG); 

和 ConnectDevice(fSD(&m_Rb, 5, NULL), L"0000", GOLDTEL_DEVICE_NAME_FLAG);

都有问题。

请教各位高手,这个ConnectDevice函数应该怎么写呀? SELECT_DEVICE的参数如何传进去呢?



[解决办法]
void __stdcall fTest(RemoteBthDevInfo* devInfoArray, int arrayLen, __int64* devRemoteAddr)
[解决办法]

探讨

void __stdcall fTest(RemoteBthDevInfo* devInfoArray, int arrayLen, __int64* devRemoteAddr)

[解决办法]
SELECT_DEVICE参数应该在ConnectDevice函数实现里面传
如:SOCKET __stdcall ConnectDevice(SELECT_DEVICE pSelectDeviceFunc,LPWSTR lpPassword=L"0000",LPWSTR devNameFilter=GOLDTEL_DEVICE_NAME_FLAG)
{
RemoteBthDevInfo m_Rb;
pSelectDeviceFunc(&m_Rb,5,NULL);
......;
}
在后面调用时 直接ConnectDevice(fTest,L"0000", GOLDTEL_DEVICE_NAME_FLAG);

热点排行