• 4804阅读
  • 3回复

[提问]qt的widget如何响应第三方库提供的自定义Windows消息 [复制链接]

上一主题 下一主题
离线louisir
 
只看楼主 倒序阅读 楼主  发表于: 2012-04-05
qt版本 4.8.1 vc2010
麻烦详细说明一下,感激不尽!

离线louisir
只看该作者 1楼 发表于: 2012-04-06
  1. Windows代码:
  2. ON_MESSAGE(WM_DM_ERROR,  OnMsgError)
  3. LRESULT CMFCDlg::OnMsgError(WPARAM wParam,LPARAM lParam)
  4. {
  5.     tagError Error;
  6.     memcpy(&Error,(tagError *)wParam,sizeof(tagError));
  7.     int handle = lParam;
  8.     switch (Error.ErrorType)
  9.     {
  10.     case DM_OPEN_DIR_ERROR:
  11.         AfxMessageBox("DM_OPEN_DIR_ERROR");
  12.         break;
  13.     case DM_SOCKET_ERROR:
  14.         AfxMessageBox("DM_SOCKET_ERROR");
  15.         break;
  16.     case DM_OPEN_ERROR:
  17.             AfxMessageBox("DM_OPEN_ERROR");
  18.         break;
  19.     case DM_COMMAND_ERROR:
  20.         AfxMessageBox("COMMAND ERROR");
  21.         break;
  22.     default:
  23. break;
  24. }
  25. return 0;
  26. }


我希望用QT应用程序的主窗体(QDialog)来响应DM_OPEN_ERROR消息,请教一下怎么实现,谢谢!
离线dbzhang800

只看该作者 2楼 发表于: 2012-04-06
离线louisir
只看该作者 3楼 发表于: 2012-04-06
麻烦详细说一下可以么,manual看了,也是这么用的,就是不响应,代码如下:
  1. bool MyWidget::winEvent(MSG* message, long* result)
  2. {
  3.     if(WM_DM_ERROR == message->message)
  4.     {
  5.         tagError Error;
  6.         memcpy(&Error,(tagError *)(message->wParam), sizeof(tagError));
  7.         switch(Error.ErrorType)
  8.         {  
  9.         case DM_OPEN_ERROR:
  10.             break;
  11.         default:  
  12.             break;  
  13.         }
  14.     }
  15.     return QWidget::winEvent(message, result);
  16. }


快速回复
限100 字节
 
上一个 下一个