main.cpp
//Windows API 窗体间消息传递
HWND hwnd = FindWindow(NULL, L"NewVision VC Desktop");
QString command = QString("Command=Browserjoining=%1\r\n").arg(paramList);//传递的内容
std::string param = command.toStdString();
COPYDATASTRUCT data;
data.dwData = 0;
data.cbData = param.length();
data.lpData = ¶m[0];
SendMessage(hwnd, WM_COPYDATA, (WPARAM)qApp->activeModalWidget(), (LPARAM)&data);
子窗口
bool ***::nativeEvent(const QByteArray &eventType, void *message, long *result)
{
//HWND hwnd = FindWindow(NULL, L"NewVision VC Desktop");
if (eventType == "windows_generic_MSG") //windows平台
{
MSG* msg = reinterpret_cast<MSG*>(message); //
//QMessageBox::information(NULL, qAppName(), "111");
if (msg->message == WM_COPYDATA)//消息类型
{
COPYDATASTRUCT *data = reinterpret_cast<COPYDATASTRUCT*>(msg->lParam);
//QTextCodec *gbk = QTextCodec::codecForName("GB18030");
//QString recevice = gbk->toUnicode((char *)(data->lpData));//转码
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForLocale(codec);
QString recevice =QString::fromLocal8Bit( (char *)(data->lpData)).toUtf8();
if (recevice.contains("Command=Browserjoining"))
{
***();//事件处理
return true;//消息不再进行传递,不再处理
}
//hwnd = reinterpret_cast<HWND>(msg->wParam);//高地址的参数
}
}
return QWidget::nativeEvent(eventType, message, result);//交给Qt处理
}