Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

C++ Оверлей очищение окна.

  • Автор темы Автор темы Nubzilla
  • Дата начала Дата начала
Пользователь
Пользователь
Статус
Оффлайн
Регистрация
23 Окт 2020
Сообщения
99
Реакции
46
Приветствую всех, ваша помощь просто необходима мне.
Я написал оверлей, и он даже работает.
Проблема вот чем;
Untitled.png
Как удалять предыдущий выведенный текст?
Отрывки кода, весь код думаю не стоит показывать ибо ужаснетесь)
C++:
Expand Collapse Copy
//цвет моего окна.
w.hbrBackground=(HBRUSH)RGB(0, 0, 0),255;
//создания окна
hWnd=CreateWindowEx(WS_EX_TOPMOST|WS_EX_TRANSPARENT|WS_EX_LAYERED,szProgName,"Overlay window",WS_POPUP,100,100,500,500,(HWND)NULL,(HMENU)NULL,(HINSTANCE)hInstance,(HINSTANCE)NULL);
//Для того что бы окно показывалось
SetLayeredWindowAttributes(hWnd,RGB(0, 0, 0),255,LWA_ALPHA|LWA_COLORKEY);
 
Приветствую всех, ваша помощь просто необходима мне.
Я написал оверлей, и он даже работает.
Проблема вот чем;
Как удалять предыдущий выведенный текст?
Отрывки кода, весь код думаю не стоит показывать ибо ужаснетесь)
C++:
Expand Collapse Copy
//цвет моего окна.
w.hbrBackground=(HBRUSH)RGB(0, 0, 0),255;
//создания окна
hWnd=CreateWindowEx(WS_EX_TOPMOST|WS_EX_TRANSPARENT|WS_EX_LAYERED,szProgName,"Overlay window",WS_POPUP,100,100,500,500,(HWND)NULL,(HMENU)NULL,(HINSTANCE)hInstance,(HINSTANCE)NULL);
//Для того что бы окно показывалось
SetLayeredWindowAttributes(hWnd,RGB(0, 0, 0),255,LWA_ALPHA|LWA_COLORKEY);
Это неправильная отрисовка, ты получается каждый раз создаешь новый элемент отрисовки, а тебе просто надо изменять координаты текущего элемента
 
Это неправильная отрисовка, ты получается каждый раз создаешь новый элемент отрисовки, а тебе просто надо изменять координаты текущего элемента
А что так можно было чтоли?
maxresdefault.jpg
 
Ну а ты вместо кода вызова отрисовки примитивов бесполезные мемы побольше кидай, так тебе точно помогут
Ок извини. Вот этот код находится в WM_PAINT:
C++:
Expand Collapse Copy
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
for(int num = 1; num < countPlayers; num++){
    if(worldToScreen()){
        TextOutW(hdc,calcData[num].screenX,calcData[num].screenY,L"enemy",5);
    }
}
EndPaint(hWnd, &ps);
 
Ок извини. Вот этот код находится в WM_PAINT:
C++:
Expand Collapse Copy
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
for(int num = 1; num < countPlayers; num++){
    if(worldToScreen()){
        TextOutW(hdc,calcData[num].screenX,calcData[num].screenY,L"enemy",5);
    }
}
EndPaint(hWnd, &ps);
Юзай InvalidateRect и UpdateWindow в вин апи
 
Можешь создать WINAPI окно,
инициализировать на нём DirectX
и рисовать через него,
очищая каждый кадр через pDevice->Clear =)
 
Назад
Сверху Снизу