首页| 论坛| 消息

标题:在Qt程序中使用Windows API的问题,请高手解答。
作者:sflute
日期:2006-12-12 10:24
内容:

我在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 [浪漫天使 12-12 10:39]
尝试一下用QLibrary
typedef void (*MyPrototype)();
MyPrototype myFunction;
QLibrary myLib( "mylib" );
myFunction = (MyProtoype) myLib.resolve( "mysymbol" );
if ( myFunction ) {
myFunction();
}
#2 [sflute 12-12 11:12]
谢谢您的解答,不过我没怎么明白,在MFC中可以直接用“&”来取得函数地址,比如
typedef void (CMyClass::*PMYFUNC)();
PMYFUNC pMF = &(CMyClass::myFunc);
但是在Qt程序中就总是有错,按理说这是标准的C++代码啊,怎么会有错呢?
#3 [axlrose 12-21 09:44]
类成员函数static
#4 [attica 12-31 16:58]
回调函数最好使用不是类成员的函数,直接定义一个普通函数就行了,可以将对象指针作为参数传递给回调函数
BTW:改为如下就对了
typedef void (CMyClass::*PMYFUNC)();
PMYFUNC pMF = &CMyClass::myFunc;

回复 发表
主题 版块