Имя пользователя:
Пароль:
 

Название темы: Прозрачный STATIC текст
Показать сообщение отдельно

Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


Доброго времени суток.
Для иллюстрации проблемы, привожу скрин, одного демонстрационного приложения, запущенного под Windows 7.

С элементами управления Static проблему удалось победить (как под WinХР, так и под Win7), благодаря коду по ссылке из поста 8.
В программе MultiBoot код сделал немного универсальным, проверяю класс элемента управления,
Код: Выделить весь код
case WM_CTLCOLORSTATIC:
    {
        wchar_t Class[80]=L"";
        GetClassName((HWND)lParam, Class, 80);
        if ((lstrcmp(Class, L"Static")==0))// | (lstrcmp(Class, L"Button")==0))
        {
            //if (((HWND)lParam != ProhWnd[3]) & ((HWND)lParam != ProhWnd[14]) & ((HWND)lParam != ProhWnd[17]) & ((HWND)lParam != ProhWnd[20]) & ((HWND)lParam != ProhWnd[24]) & ((HWND)lParam != ProhWnd[28]) & ((HWND)lParam != ProhWnd[31]))//Исключаем ГрупБоксы
            //{
                SetBkMode((HDC)wParam, TRANSPARENT);   
                return (LRESULT)GetStockObject(NULL_BRUSH); 
            //}
        }
    }
break;
так как в случаи с HMENU в if получится слишком длинная строка.
Ищется решение для Статико-содержащих Чекбоксов (а.к.а. Флажков, Галок), ГруппБоксов (элементов управления Групп).
Закомментированный код как раз и призван решать. В таком случаи:
  • ЧекБокс под WinXP решается, а вот под Win Vista и выше продолжает отображаться с визуальным дефектом (сейчас, при закомментированном - на оборот. Желательно универсальное решения для обеих ОСей).
  • ГрупБокс сильно буквально воспринимает прозрачность - показывает продолжения линии группы.
Для решения вопроса с ГруппБоксами, участник CodeProject, предлагает использовать свой класс
Transparent group box
А со стандартным разве никак не выйдет решить? Ведь фон в приложении стандартный, а не картинка как в случаи описанном на CodeProject.

Отправлено: 03:35, 19-11-2009 | #9

Название темы: Прозрачный STATIC текст