フックを使用して、プログラムの同じウィンドウにペイントすることで、制御できないプログラムから自分の関数を呼び出そうとしています。しばらくは機能しますが、クラッシュすると、GDI リークなどの可能性があると思われます。誰かがこのコードを見て、一般的な構造の観点からコメントできるか、改善できるかどうか疑問に思っています。2 つ目の問題は、テキストが数秒ごとにちらつくことです。この点で誰も助けることができますか?C++ GDI に関しては、私はまだ初心者であることに注意してください。ありがとう。
void Paint(HWND hWnd)
{
HDC hdc = GetWindowDC(hWnd);
HBRUSH Brush = CreateSolidBrush(RGB(255,255,0));
HPEN Pen = CreatePen(PS_DOT,1,RGB(255,255,0));
HGDIOBJ PriorBrush = SelectObject(hdc, Brush);
HGDIOBJ PriorPen = SelectObject(hdc, Pen);
Gdiplus::Graphics g(hdc);
Gdiplus::Pen pen(Gdiplus::Color(255, 255, 0, 0), 1);
g.DrawLine(&pen,fpx,fpy,spx,spy);
Font font(&FontFamily(L"Arial"), 12);
LinearGradientBrush brush(Rect(0,0,100,100), Color::Red, Color::Yellow, LinearGradientModeHorizontal);
Status st = g.DrawString(L"SampleText!", -1, &font, PointF((float)spx, (float)spy), &brush);
assert(st == Ok);
SelectObject(hdc,PriorBrush);
SelectObject(hdc,PriorPen);
ReleaseDC(hWnd,hdc);
return;
}
///
以下を使用して上記の呼び出しを行います。
case WM_PAINT:
{
LRESULT l = CallWindowProc(hook, hWnd, uMsg, wParam, lParam);
Paint(hWnd);
return l;
}