Здравствуйте, c-smile, Вы писали:
CS>В файле /corelib/kernel/qeventdispatcher_win.cpp я вижу такой фрагмент:
CS>CS> if (!filterEvent(&msg)) {
CS> TranslateMessage(&msg);
CS> QT_WA({
CS> DispatchMessage(&msg);
CS> } , {
CS> DispatchMessageA(&msg);
CS> });
CS> }
CS>
CS>Вот в этот filterEvent(&msg) или что-то от него вызываемое и надо вставить мой вызов.
Уфф. Все оказалось не так очевидно, как кажется:
в main()
QApplication a(argc, argv);
QAbstractEventDispatcher::instance()->setEventFilter(myEventFilter);
bool myEventFilter(void *message)
{
HTMLayoutTranslateMessage((MSG*)message);
return false;
}
если возвращать return HTMLayoutTranslateMessage((MSG*)message);
как написано в комментах, к HTMLayoutTranslateMessage
* if( !HTMLayoutTranslateMessage(&msg) )
* TranslateMessage(&msg);
то не работает.
вопрос к c-smile — Вы считаете разумным прогонять все события довольно большого приложения, через HTMLayoutTranslateMessage, даже если htmlayout используется эпизодически как диалог настройки например? Не внесет ли это лишние "тормоза"? Как вариант ставить фильтр при открытии окна и снимать при закрытии, но тогда придется отслеживать все открытые окна, вводить счетчик. Это все конечно дело техники

, т.к. Вам виднее.