Я создал прозрачный флажок в Win32 C++. Я сделал это, потому что, насколько я знаю, у вас не может быть прозрачного флажка в родном win32, и мне нужно использовать этот флажок в установщике NSIS.
Моя проблема:При перерисовке я не знаю, как стереть прозрачный фон, чтобы рисовать на «чистом холсте». Это важно, когда пользователь меняет текст внутри флажка, и мне нужно его перекрасить. Думаю, я столкнулся с проблемой, с которой все должны столкнуться с прозрачными окнами.
Как я могу очистить свое прозрачное окно . Обратите внимание, что я знаком с WinAPI, и вы не можете действительно очистить окно, потому что вы просто перерисовываете окно. Поэтому я ищу совета о том, какие методы я могу использовать для перерисовки окна, например:
Мой код:
case WM_SET_TEXT:
{
// set checkbox text
// Technique 1: update parent window to clear this window
RECT thisRect = {thisX, thisY, thisW, thisH};
InvalidateRect(parentHwnd, &thisRect, TRUE);
}
break;
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
// Technique 2:
SetBkMode(hdc, TRANSPARENT);
Rectangle(hdc, thisX, thisY, thisW, thisH); // doesn't work just makes the window a big black rectangle?
EndPaint(hwnd, &ps);
}
break;