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

Пользователь
Статус
Оффлайн
Регистрация
23 Окт 2020
Сообщения
98
Реакции[?]
46
Поинты[?]
0
Приветствую всех, ваша помощь просто необходима мне.
Я написал оверлей, и он даже работает.
Проблема вот чем;
Untitled.png
Как удалять предыдущий выведенный текст?
Отрывки кода, весь код думаю не стоит показывать ибо ужаснетесь)
C++:
//цвет моего окна.
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);
 
Продавец
Статус
Оффлайн
Регистрация
28 Окт 2019
Сообщения
1,153
Реакции[?]
302
Поинты[?]
3K
Приветствую всех, ваша помощь просто необходима мне.
Я написал оверлей, и он даже работает.
Проблема вот чем;
Как удалять предыдущий выведенный текст?
Отрывки кода, весь код думаю не стоит показывать ибо ужаснетесь)
C++:
//цвет моего окна.
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);
Это неправильная отрисовка, ты получается каждый раз создаешь новый элемент отрисовки, а тебе просто надо изменять координаты текущего элемента
 
Пользователь
Статус
Оффлайн
Регистрация
23 Окт 2020
Сообщения
98
Реакции[?]
46
Поинты[?]
0
Это неправильная отрисовка, ты получается каждый раз создаешь новый элемент отрисовки, а тебе просто надо изменять координаты текущего элемента
А что так можно было чтоли?
 
Продавец
Статус
Оффлайн
Регистрация
28 Окт 2019
Сообщения
1,153
Реакции[?]
302
Поинты[?]
3K
Пользователь
Статус
Оффлайн
Регистрация
23 Окт 2020
Сообщения
98
Реакции[?]
46
Поинты[?]
0
Ну а ты вместо кода вызова отрисовки примитивов бесполезные мемы побольше кидай, так тебе точно помогут
Ок извини. Вот этот код находится в WM_PAINT:
C++:
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);
 
Продавец
Статус
Оффлайн
Регистрация
28 Окт 2019
Сообщения
1,153
Реакции[?]
302
Поинты[?]
3K
Ок извини. Вот этот код находится в WM_PAINT:
C++:
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 в вин апи
 
#define VOID void
Начинающий
Статус
Оффлайн
Регистрация
13 Май 2017
Сообщения
120
Реакции[?]
24
Поинты[?]
13K
Можешь создать WINAPI окно,
инициализировать на нём DirectX
и рисовать через него,
очищая каждый кадр через pDevice->Clear =)
 
Сверху Снизу