...опять про поиск информации в чужом приложении на Qt
Я перехватываю метод QPainter::drawText, чтобы из всего, что проходит через эту функцию выделить только то, что мне нужно — нужно определить цвет шрифта... Как это сделать? Текст обычный, не html.
пробовал так:
Здравствуйте, qv, Вы писали:
qv>...опять про поиск информации в чужом приложении на Qt
qv>Я перехватываю метод QPainter::drawText, чтобы из всего, что проходит через эту функцию выделить только то, что мне нужно — нужно определить цвет шрифта... Как это сделать? Текст обычный, не html. qv>пробовал так: qv>
Здравствуйте, Peregrin, Вы писали:
P>Спросите то же самое у pen(), а не у brush().
Всё работает! Спасибо! Осталась последняя деталь — имея QPainter добраться до hWnd окна в котором происходит рисование.. подскажите?
Здравствуйте, qv, Вы писали:
qv>Здравствуйте, Peregrin, Вы писали:
P>>Спросите то же самое у pen(), а не у brush(). qv> Всё работает! Спасибо! Осталась последняя деталь — имея QPainter добраться до hWnd окна в котором происходит рисование.. подскажите?
Ну если вам повезло, и рисуют по виджету (хотя это совсем не факт), то можно как-то так:
Здравствуйте, Peregrin, Вы писали:
P>Ну если вам повезло, и рисуют по виджету (хотя это совсем не факт), то можно как-то так:
Видимо, QPainter рисует на чём то отличном от потомка QObject, т.к.
стреляется с AV. Соответственно, нужно искать другой способ Может быть можно похучить еще какой-то метод, который мне поможет? Если так из QPaintDevice hWnd не получить..
Здравствуйте, qv, Вы писали:
qv>Здравствуйте, Peregrin, Вы писали:
P>>Ну если вам повезло, и рисуют по виджету (хотя это совсем не факт), то можно как-то так: qv> Видимо, QPainter рисует на чём то отличном от потомка QObject, т.к. qv>
qv>стреляется с AV. Соответственно, нужно искать другой способ Может быть можно похучить еще какой-то метод, который мне поможет? Если так из QPaintDevice hWnd не получить..
QPaintDevice наследует QObject, 0 может возвращаться, если !qP->isActive().
Вообще, я бы на вашем месте просто подложил Qt той же версии, что используется приложением, но с отладочной инфой, и расставил бы брекпоинтов прямо в Qt в нужных местах. Но это конечно будет работать только если линковка динамическая.
Здравствуйте, Peregrin, Вы писали:
P>QPaintDevice наследует QObject, 0 может возвращаться, если !qP->isActive().
IsActive == true, и, как выясняется, QPaintDevice вызвращает указатель на QWidget, вот только у объекта поле QObjectPrivate не определено, там лежит 0xBAAD000, из-за этого большинство функций падает, узнать родителя, класс и т.д. не получается.. Буду думать.