На основании ответа Сергея Кулиша я использовал перегрузку функции nativeEvent
, но для класса диалогового окна (не для основного окна):
#include <windows.h>
bool MyDialog::nativeEvent(const QByteArray&, void* message, long*)
{
const auto msg = static_cast<MSG*>(message);
if (msg->message == WM_NCACTIVATE)
{
if (msg->wParam == TRUE) { ... } // dialog become active while blinking
else { ... } // dialog become inactive while blinking
}
return false;
}
Мигание окна в Windows реализовано в виде серии WM_NCACTIVATE
сообщений с wParam
, установленным на FALSE
и TRUE
.