Get HWND on windows with Qt5 (from WId) Get HWND on windows with Qt5 (from WId) windows windows

Get HWND on windows with Qt5 (from WId)


In Qt5 winEvent was replaced by nativeEvent:

bool winEvent(MSG* pMsg, long* result)

is now

bool nativeEvent(const QByteArray & eventType, void * message, long *result)

And in EcWin7::winEvent you have to cast void to MSG:

bool EcWin7::winEvent(void * message, long * result){    MSG* msg = reinterpret_cast<MSG*>(message);    if (msg->message == mTaskbarMessageId)    {      ...

I was able to get the application to work! Just replace:

 mWindowId = wid;

with

 mWindowId = (HWND)wid;


#include <QtGui/5.0.0/QtGui/qpa/qplatformnativeinterface.h>static QWindow* windowForWidget(const QWidget* widget) {    QWindow* window = widget->windowHandle();    if (window)        return window;    const QWidget* nativeParent = widget->nativeParentWidget();    if (nativeParent)         return nativeParent->windowHandle();    return 0; }HWND getHWNDForWidget(const QWidget* widget){    QWindow* window = ::windowForWidget(widget);    if (window && window->handle())    {        QPlatformNativeInterface* interface = QGuiApplication::platformNativeInterface();        return static_cast<HWND>(interface->nativeResourceForWindow(QByteArrayLiteral("handle"), window));    }    return 0; }