0

我正在尝试将系统消息从父进程发送到子进程。
1.我在父方法中注册了消息:

UINT msg = RegisterWindowMessageA("my message");

2.在子应用程序中,我重写方法nativeEvent。
我在 Qt 助手中找到了该方法的语法,但提供的信息不够,因为那里没有描述参数用法。

bool MainWindow::nativeEvent(const QByteArray& eventType, void* message,
        long* result)
{
    UINT mssg = RegisterWindowMessage(L"my message");
    UINT recivedMssg = *static_cast<UINT*>(message);
    if (recivedMssg == mssg)
    {
        *result = 0;
        QMessageBox::information(this,"",QString::number(recivedMssg));
        return true;
    }
    return false;
}

我做了这个实现,但它没有像我预期的那样工作,我认为 void* 消息 - 是消息的数量。
所以我的问题是:如何在 nativeEvent 中获取从父进程发送的消息?

4

1 回答 1

3

我还没有玩过 Qt5,但我怀疑有什么区别。对于 Windows,您应该按如下方式投射消息:

MSG* msg = reinterpret_cast<MSG*>(message);

MSG 是在某些 Windows 标头中声明的 Windows 特定结构(windows.h 肯定就足够了)

于 2013-02-24T07:13:17.257 回答