Я работаю над приложением Win32 с графическим интерфейсом, используя простой Win32 API (без MFC или .NET). У меня проблема заключается в том, что элементы управления выглядят прозрачными. Я придумал метод, который работает для большинства вещей, в Windows Vista + я делаю это в WndProc:
case WM_CTLCOLORSTATIC:
{
SetBkMode((HDC)wParam, TRANSPARENT);
return (INT_PTR)::GetStockObject(NULL_PEN);
}
break;
В Windows XP я делаю это в WndProc:
case WM_CTLCOLORSTATIC:
{
HBRUSH hbr = (HBRUSH)DefWindowProc(hDlg, message, wParam, lParam);
::DeleteObject(hbr);
SetBkMode((HDC)wParam, TRANSPARENT);
return (LRESULT)(HBRUSH)(COLOR_WINDOW);
}
Теперь это работает для большинства элементов управления, однако я получаю прозрачный фон на этикетке в верхней части элемента управления группового поля, который рисует линию группового поля через текст. Я начал работать над случаем только для групповых ящиков, но я уверен, что это проблема, которая должна была быть решена раньше, и я не хочу снова изобретать колесо.
Есть ли испытанный и проверенный метод за то, что элементы управления выглядят прозрачными?
Спасибо, J