• 11939阅读
  • 2回复

在QT内windows SendMessage不起作用,在线等..大虾看看 [复制链接]

上一主题 下一主题
离线bonbonice99
 
只看楼主 倒序阅读 楼主  发表于: 2009-10-09
我写了一个QDialog,由于某些原因,不能用QT自己的sendEvent,需要用windows函数: ::SendMessage,如下:

::SendMessage(this->winId(), WM_SETTEXT, 0, (LPARAM)TCHAR("This is a test window"));

但是如果如何我在QT内无法捕捉到这个Message,试过在winEvent内捕捉,也用Spy++看过,确实没有这个Message发出来

很奇怪

相反,如果我把这句换成

this->setWindowTitle("This is a test window");

winEvent就能捕捉到一个WM_SETTEXT的消息,Spy++里面也能看到

有人知道为什么在QT内无法把Windows native message发出去吗?谢谢啦~
离线dbzhang800

只看该作者 1楼 发表于: 2009-10-09
不懂win32编程,只是想问一下,你确认是因为Qt的存在导致的这个问题么?有没有试过不使用Qt,而是仅仅用C++ 测试一下
离线bonbonice99
只看该作者 2楼 发表于: 2009-10-09
找到问题的答案了,
其实是可以直接sendMessage,贴在这里供大家参考
  1. void HookTestDialog::clickHook()
  2. {
  3. ::SendMessage(this->winId(), WM_SETTEXT, 0, (LPARAM)(LPCTSTR)L"This is a tr test");
  4. }
  5. bool HookTestDialog::winEvent(MSG *msg, long *result)
  6. {
  7. switch(msg->message)
  8. {
  9. case (WM_SETTEXT):
  10. ::MessageBox(this->winId(), (LPCWSTR)(msg->lParam), L"Test", 0);
  11. captionLabel->setText ("Test");
  12. break;
  13. default:
  14. break;
  15. }
  16. return false;
  17. }
快速回复
限100 字节
 
上一个 下一个