• 5856阅读
  • 4回复

在Qt程序中使用Windows API的问题,请高手解答。 [复制链接]

上一主题 下一主题
离线sflute
 
只看楼主 倒序阅读 楼主  发表于: 2006-12-12
我在Qt程序中使用Windows的录音API,在MSDN中对 waveInOpen 函数的解释是这样的:
MMRESULT waveInOpen(
LPHWAVEIN     phwi,         // 输入设备句柄
UINT_PTR     uDeviceID,       // 指定的音频设备ID
LPWAVEFORMATEX pwfx,       // 录音格式指针
DWORD_PTR     dwCallback,   // 回调函数
DWORD_PTR     dwCallbackInstance,
DWORD       fdwOpen       // 处理消息方式的符号位(回调方式)
);

我现在想用函数来回调,设置 fdwOpen 参数为 CALLBACK_FUNCTION,dwCallback 就是回调函数的函数地址,在MFC程序中,只要设置这个参数为“(DWORD)<函数名>”就行了,但是在Qt程序中却怎么也不成功,请问在Qt程序中如何取得某个函数的地址?谢谢。
离线浪漫天使
只看该作者 1楼 发表于: 2006-12-12
尝试一下用QLibrary
  typedef void (*MyPrototype)();
  MyPrototype myFunction;

  QLibrary myLib( "mylib" );
  myFunction = (MyProtoype) myLib.resolve( "mysymbol" );
  if ( myFunction ) {
    myFunction();
  }
离线sflute
只看该作者 2楼 发表于: 2006-12-12
谢谢您的解答,不过我没怎么明白,在MFC中可以直接用“&”来取得函数地址,比如
  typedef void (CMyClass::*PMYFUNC)();
  PMYFUNC pMF = &(CMyClass::myFunc);
但是在Qt程序中就总是有错,按理说这是标准的C++代码啊,怎么会有错呢?
[ 此贴被sflute在2006-12-12 11:55重新编辑 ]
离线axlrose

只看该作者 3楼 发表于: 2006-12-21
类成员函数static
枪炮与玫瑰
离线attica

只看该作者 4楼 发表于: 2006-12-31
回调函数最好使用不是类成员的函数,直接定义一个普通函数就行了,可以将对象指针作为参数传递给回调函数

BTW:改为如下就对了
  typedef void (CMyClass::*PMYFUNC)();
PMYFUNC pMF = &CMyClass::myFunc;
快速回复
限100 字节
 
上一个 下一个