
1. bool QApplication::winEventFilter ( MSG * )
消息磨橡
程序每接受消息调用函数首游帆想处理Qt处理窗口消息msg请者雹重新实现函数 1. bool MainWindow::winEvent(MSG* pMsg) 2. { 3. if ( pMsg->message == WM_COPYDATA ) 4. { 5. COPYDATASTRUCT* pCopyDataStruct6. POSTERS_REC_STRUCT* pRec7. unsigned char* odapMsgPtr[MAX_POSTERS_SIZE]8. QString str9. pCopyDataStruct = (COPYDATASTRUCT*) pMsg->lParam10. switch (pCopyDataStruct->dwData) 11. { 12. case VALID_REC1 : 13. case VALID_REC2 : 14. { 15. (void)memcpy(odapMsgPtr, pCopyDataStruct->lpData, pCopyDataStruct->cbData)16. if (odapMsgPtr != NULL) 17. { 18. pRec = (POSTERS_REC_STRUCT *)odapMsgPtr19. class_data1 = pRec->var120. class_data2 = pRec->var221. } 22. } 23. } 24. return true25. } 26. else 27. return false28. } 29. Some Code on the web gives another example 30. #ifdef HAVE_WIN32_API 31. virtual bool winEventFilter(MSG * msg) { 32. SPW_InputEvent sbEvent33. if (SPW_TranslateEventWin32(msg, &sbEvent)) { 34. QWidget * focus = this->focusWidget()35. if (!focus) focus = this->activeWindow()36. if (focus) { 37. QCustomEvent qevent((QEvent::Type)SoQtInternal::SPACEBALL_EVENT, 38. (void *)&sbEvent)39. QApplication::sendEvent(focus, &qevent)40. } 41. } 42. #if (QT_VERSION >= 0x040000) 43. long result = 044. return QApplication::winEventFilter(msg, &result)45. #else 46. return QApplication::winEventFilter(msg)47. #endif The QSystemTrayIcon class provides an icon for an application in the system tray.
Modern operating systems usually provide a special area on the desktop, called the system tray or notification area, where long-running applications can display icons and short messages. 1. /* translates a Win32 event to a SPW_InputEvent. */ 2. int SPW_TranslateEventWin32(MSG * msg, SPW_InputEvent * sbEvent) 3. { 4. SiSpwEvent spwEvent5. SiGetEventData eventdata6. if (Spw_DeviceHandle != SI_NO_HANDLE) { 7. SiGetEventWinInit (&eventdata, msg->message, msg->wParam, msg->lParam)8. if (SiGetEvent (Spw_DeviceHandle, 0, &eventdata, &spwEvent) == SI_IS_EVENT) { 9. int i10. switch(spwEvent.type) { 11. case SI_MOTION_EVENT: 12. sbEvent->type = SPW_InputMotionEvent13. for(i=0isData[i] = (short)spwEvent.u.spwData.mData[i]15. } 16. break17. case SI_BUTTON_EVENT: 18. sbEvent->type = SPW_InputButtonPressEvent19. sbEvent->buttonState.pressed = (SiButtonPressed(&spwEvent) != SI_NO_BUTTON)20. sbEvent->buttonState.released = (SiButtonReleased(&spwEvent) != SI_NO_BUTTON)21. break22. } 23. return TRUE24. } 25. } 26. return FALSE27. } 结:QT源码解析Qt处理Windows消息内容介绍完希望本文帮助源:网络
S
1、可采用Linux下的socket编程技术,跟QT或ARM的关联性不大。
2、ARM开猜缓发板上运行多线坦昌程的服务器端程序,主线程Listen,子线程采集AD转换器的值。
3、LinuxPC上运行tcp的让兆扒客户端程序,connect到ARM开发板上的服务器进行数据获取和展现。
评论列表(0条)