Как нарисовать наложение в C++?C++

Программы на C++. Форум разработчиков
Anonymous
Как нарисовать наложение в C++?

Сообщение Anonymous »

Я загружаю свою dll в процесс и создаю наложение в новом потоке.
Моя идея состоит в том, чтобы использовать это наложение из основного потока dll.
Это код maindll.cpp:

Код: Выделить всё

uintptr_t mainModule = NULL;
bool visuals = false;
HWND hwndOverlay;

void DoMagic() {

uintptr_t LocalPlayer = *(uintptr_t*)(mainModule + Offsets::dwLocalPlayerPawn);
if (LocalPlayer == 0)
return;

if (GetAsyncKeyState(VK_F1) & 1)
{
visuals = !visuals;
}

if (hwndOverlay) {
HDC hdcOverlay = GetDC(hwndOverlay);
if (visuals) Visuals(mainModule, LocalPlayer, hdcOverlay);
}

Sleep(1);
}

DWORD WINAPI OverlayThread(LPVOID lpParam) {
HMODULE hModule = (HMODULE)lpParam;
hwndOverlay = CreateOverlayWindow(hModule);

if (!hwndOverlay) {
MessageBox(NULL, L"Error creating overlay window", L"Error", MB_ICONERROR);
return 1;
}

MSG msg;
while (GetMessage(&msg, nullptr, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return 0;
}

DWORD WINAPI MainFunc(HMODULE hModule) {
AllocConsole();
FILE* f;
freopen_s(&f, "CONOUT$", "w", stdout);

CloseHandle(CreateThread(nullptr, 0, OverlayThread, hModule, 0, nullptr));

mainModule = (uintptr_t)GetModuleHandle(L"client.dll");
if (hModule)
{
while (!GetAsyncKeyState(VK_END) & 1) DoMagic();
}
else
{
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/78273599/how-to-draw-an-overlay-in-c[/url]

Вернуться в «C++»