d3d アプリケーションをオーバーレイするために、次のフラグを使用してウィンドウを作成しました。WS_EX_COMPOSITED | WS_EX_TRANSPARENT | WS_EX_LAYERED 透過性のためにウィンドウのカラーキー設定を進めましたが、すべてうまくいきました。しかし、GDI を使用して描画を開始すると、予期しない問題が発生しました。
何らかの理由で、WM_PAINT の実行中にマウス イベント (特に移動) がウィンドウを正しく通過しないため、マウスとキーボードが遅れているように見えます。FPS は問題ありません。これは API の問題です。何らかの理由で、WM_PAINT の進行中にキーボード/マウス メッセージが適切に処理されていないと思われます。
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_DESTROY:
{
KillTimer(hwnd, ID_TIMER);
PostQuitMessage(0);
break;
}
case WM_CREATE:
{
SetTimer(hwnd, ID_TIMER, 10, NULL);
break;
}
case WM_TIMER:
{
InvalidateRect(hwnd, 0, 1);
break;
}
case WM_PAINT:
{
paint(hwnd);
break;
}
}
return DefWindowProc(hwnd, msg, wParam, lParam);
}
と
void paint (HWND hwnd)
{
PAINTSTRUCT Ps;
HDC hdc = BeginPaint(hwnd, &Ps);
SetBkColor(hdc, RGB(0,0,0));
SetBkMode(hdc, TRANSPARENT);
LOGBRUSH log_brush;
log_brush.lbStyle = BS_NULL;
HBRUSH handle_brush = CreateBrushIndirect(&log_brush);
SelectObject(hdc, handle_brush);
..........................................
DeleteObject(font);
DeleteObject(pen);
DeleteObject(handle_brush);
EndPaint(hwnd, &Ps);
}
お力になれることがございましたら、どうぞよろしくお願いいたします。