моя программа - прозрачное наложение поверх игры
код, который устанавливает его в окно игры
setwindowtotarget вызывается в отдельном потоке
я очень разочарован
Кроме того, игра выглядит медленной, когда мой счетчик фпс говорит, что я тоже получаю более 200
void SetWindowToTarget(){
while(true){
tWnd = FindWindow(0, tWindowName);
if (tWnd)
{
GetWindowRect(tWnd, &tSize);
Width = tSize.right - tSize.left;
Height = tSize.bottom - tSize.top;
DWORD dwStyle = GetWindowLong(tWnd, GWL_STYLE);
if(dwStyle & WS_BORDER)
{
tSize.top += 23;
Height -= 23;
}
MoveWindow(hWnd, tSize.left, tSize.top, Width, Height, true);
}
Sleep(5000);
}
}
этот код заставляет мои fps падать и затем каждые 10 секунд возвращаться обратно
while (GetMessage(&Message, NULL, 0, 0)){
TranslateMessage(&Message);
DispatchMessage(&Message);
}
LRESULT CALLBACK WinProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam){
Sleep(17);
switch (Message)
{
case WM_PAINT:
Render();
break;
case WM_CREATE:
DwmExtendFrameIntoClientArea(hWnd, &Margin);
break;
case WM_DESTROY:
PostQuitMessage(1);
return 0;
default:
return DefWindowProc(hWnd, Message, wParam, lParam);
break;
}
return 0;
}
рендер func:
int Render(){
p_Device->Clear(0, 0, D3DCLEAR_TARGET, 0, 1.0f, 0);
p_Device->BeginScene();
if(tWnd == GetForegroundWindow()){
g_vCenterScreen.x = Width / 2.f;
g_vCenterScreen.y = Height / 2.f;
//draw stuff
}
}
p_Device->EndScene();
p_Device->PresentEx(0, 0, 0, 0, 0);
return 0;
}