原来在qt 3.3.x下没有问题,可以收到windows的热键(我定义的是CTRL+ALT+h)
但是升级到 qt 4.1.x 就收不到热键消息了。。。郁闷啊
debug运行时候,显示注册热键成功、退出时候卸载热键也成功。
但是winEventFilter就是没有 WM_HOTKEY 收到。
#ifndef _IABAPP_H_
#define _IABAPP_H_
#include <Windows.h>
#include <QApplication>
class iabApp : public QApplication
{
Q_OBJECT
public:
iabApp ( int & argc, char ** argv )
:QApplication(argc,argv)
{
hkHide=1;
if( RegisterHotKey(0, hkHide, MOD_ALT|MOD_CONTROL, VkKeyScan('h')) )
{
qDebug("RegisterHotKey successfully.");
}else
{
qDebug("RegisterHotKey failed.");
}
}
~iabApp()
{
if( UnregisterHotKey(0, hkHide) )
{
qDebug("UnregisterHotKey successfully.");
}else
{
qDebug("UnregisterHotKey failed.");
}
}
bool winEventFilter(MSG *msg,long *result)
{
if(WM_HOTKEY==msg->message)
{
qDebug("WM_HOTKEY");
result=0;
emit hotkey();
return TRUE;
}
return FALSE;
}
signals:
void hotkey();
private:
int hkHide;
};
#endif//_IABAPP_H_
[ 此贴被XChinux在2006-04-05 10:42重新编辑 ]