bool Widget::nativeEvent(const QByteArray &eventType, void *message, long *result)
{
MSG* msg = (MSG*)message;
DWORD dwPid = 0;
GetWindowThreadProcessId((HWND)msg->wParam,&dwPid);
COPYDATASTRUCT *cds = reinterpret_cast(msg->lParam);
QString text = QString("PID=[%1]的进程发来的消息为:%2").arg((int)dwPid).arg((char*)cds->lpData);
return QWidget::nativeEvent(eventType, message, result);
}
COPYDATASTRUCT data; //使用COPYDATA的方式进行数据传递
data.dwData = 0;
data.cbData = param.length();
data.lpData = ¶m[0];
qDebug()<SendMessage(m_wnd, WM_COPYDATA, (WPARAM)wid, (LPARAM)&data);
QT在win下可以通过SendMessage和PostMessage机制发送给nativeEvent接收,但SendMessage和PostMessage是win下的特有机制。
我发现在linux下也存在nativeEvent,
那在linux下,和win下SendMessage和PostMessage的功能一样的函数是什么
我知道QT机制QApplication::postEvent和QApplication::sendEvent 发送的只能由event(QEvent *event)接收。
无法由nativeEvent接收。
求nativeEvent,在linux下使用方法,
inline bool QCoreApplication::sendEvent(QObject *receiver, QEvent *event)
{ if (event) event->spont = false; return self ? self->notifyInternal(receiver, event) : false; }