Windows detours ライブラリを使用して、win 以外の API 関数を迂回したいと考えています。この関数は Qt ライブラリ (QtGui4.dll) の一部です。の関数シグネチャをどのように設定するのか疑問に思っています:
void QPainter::drawText ( const QPointF & position, const QString & text )
私はこれを試してみましたが、いつものようにエラーが発生しました。要件の少しの説明も興味深いでしょう:
void (QPainter * real_drawText)(const QPointF & position, const QString & text) = drawText
これは、Windows API での TextOut の場合の外観です。
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);
}
しかし、「組み込み型への関数スタイルの変換では、1 つのパラメーターしか使用できない」というエラーが発生しました。
とにかく、公の場で少し屈辱を与えるのは魂に良いと彼らは言う、私の魂は最高の時間を過ごしているに違いない...
ありがとう。