如题。
QT程序中加载了一个DLL,这个DLL向QT主界面程序发送一个用户自定义消息 WM_USER+2000
PostMessage(NULL,WM_USER+2000,0,0)或者使用
SendMessage(NULL,WM_USER+2000,0,0)
现在我要在QT 主界面程序中接收这个 WM_USER+2000 应该怎么做?
重写winEvent发现它只接收非用户消息,用户消息根本没传过来。
重写customEvent发现,它只接收在QT程序中自定义的消息
然后,没辙了,WIN32只要在回调函数中就可以得到了。
QT中要到哪里去截获这个消息呢?
请高手指教。谢谢。
------最佳解决方案--------------------
发送消息你得先获取接收消息的窗口句柄
------其他解决方案--------------------
再补充一句,因为这个DLL中不允许加载QT库,因此不能使用postEvent函数,只能使用Win32 API发送消息
------其他解决方案--------------------
没有人来回答吗?自己顶
------其他解决方案--------------------
获得窗口句柄,发送,依然无效,随意建了一个WIN32程序,发送立刻成功收到。
唉,再去研究一下QT的事件机制
------其他解决方案--------------------
经研究那些让人头疼的英文手册,找到答案
创建一个静态函数
myEventFilter(void* msg,long* result)
{
//接收所有原始WINDOWS消息
}
然后 setEventFilter(myEventFilter);
测试,收到所有windows原始消息,包括自定义的用户消息。
非常感谢3楼的回答
over
------其他解决方案--------------------
但是这里引入了一个静态函数,意味着,我的处理不能在成员函数中使用,感觉 很不爽。
本来想使用thunk技术,不过感觉 不值得
突然想到了一个笨办法,在myEventFilter将消息封装成QT的QEvent,再发送一次。
在成员函数中成功接收。
狂汗~~~
虽然这个办法很笨拙,但总算实现了我的要求。
仍然想直接在成员函数中接收PosetMessage发送的自定义消息。难道真的没有办法了吗?