在vc里面使用postMessage将自定义消息传出,然后再qt主体程序中重写nativeEvent函数,在该函数接收windows自定义消息
bool EmbededWidget::nativeEvent(const QByteArray &eventType, void *message, long *result)
{
if (eventType == "windows_generic_MSG") //windows平台
{
MSG* msg = reinterpret_cast<MSG*>(message); //
if(msg->message == WM_COPYDATA)//消息类型
{
COPYDATASTRUCT *data = reinterpret_cast<COPYDATASTRUCT*>(msg->lParam);
QTextCodec *gbk = QTextCodec::codecForName("GB18030");
QString recevice = gbk->toUnicode((char *)(data->lpData));//转码
if(recevice.contains("Command="))
{
return true;//消息不再进行传递,不再处理
}
m_wnd = reinterpret_cast<HWND>(msg->wParam);//高地址的参数
}
}
return QWidget::nativeEvent(eventType, message, result);//交给Qt处理
}