Как нарисовать наложение в 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]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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