Я хочу использовать библиотеку обходов окон, чтобы обойти функцию api без выигрыша.Функция является частью библиотеки Qt (QtGui4.dll).Мне интересно, как бы я настроил сигнатуру функции для:
void QPainter::drawText ( const QPointF & position, const QString & text )
Я попробовал это сделать, и он получил свою обычную долю ошибок, было бы интересно также немного объяснить требования:
void (QPainter * real_drawText)(const QPointF & position, const QString & text) = drawText
Вот как они выглядят для TextOut под Windows API:
BOOL (WINAPI * Real_TextOut)(HDC a0, int a1, int a2, LPCWSTR a3, int a4) = TextOutW;
BOOL WINAPI Mine_TextOut(HDC hdc,int X,int Y,LPCWSTR text,int textLen)
{
BOOL rv = Real_TextOut(hdc, X, Y, text, textLen);
HWND hWindow = WindowFromDC(hdc);
SendTextMessage(hWindow, text);
return rv;
}
Итак, следуя предложению Джина, я попытался:
typedef void (QPainter::* Real_qp_drawText)(const QPointF & position, const QString & text);
void Mine_drawText(const QPointF & position, const QString & text)
{
Real_qp_drawText(position,text);
}
НоЯ понял, что преобразование функционального стиля во встроенный тип может принимать только один параметр.
Так или иначе, они говорят, что небольшое публичное унижение полезно для души, моя душа должна быть лучшевремя ...
Спасибо.