Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Фон элементов управления 
V
    Опции темы
Kostik88
Дата 24.7.2008, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 9.5.2008

Репутация: нет
Всего: 2



Здравствуйте! Сталкнулся с такой проблемой: закрашиваю клиентскую область окна белой кистью ( WHITE_BTUSH), на закрашиваемом окне имеются элементы управления(две кнопки и один чекбокс), так вот при закраске их фон не меняется(см. прикреплённый файл). Вопрос, какбы можно убрать этот фон не совпадающий с цветом фона окна?

Присоединённый файл ( Кол-во скачиваний: 41 )
Присоединённый файл  ___.JPG 3,46 Kb
PM MAIL   Вверх
SABROG
Дата 24.7.2008, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: нет
Всего: 91



Все элементы управления в программе - отдельные окна со своим фоном.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
mes
Дата 24.7.2008, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



есть флаг по использованию родительского контекста, точно не помню как в винапи он будет 
типа (CS_) WS_PARENTDC

Это сообщение отредактировал(а) mes - 24.7.2008, 22:22


--------------------
PM MAIL WWW   Вверх
Kostik88
Дата 24.7.2008, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 9.5.2008

Репутация: нет
Всего: 2



Цитата

Все элементы управления в программе - отдельные окна со своим фоном. 

Это я знаю, вовпрос не в том что все элементы это окна со своим фоном, а в том как этот самый фон изменить. smile 
PM MAIL   Вверх
mes
Дата 24.7.2008, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(Kostik88 @  24.7.2008,  22:11 Найти цитируемый пост)

Это я знаю, вовпрос не в том что все элементы это окна со своим фоном, а в том как этот самый фон изменить.

флаг пробовал ставить? 


--------------------
PM MAIL WWW   Вверх
Dem_max
Дата 25.7.2008, 05:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



Юзай сообщения, и возвращяй нужный цвет.

      case WM_CTLCOLORBTN:
      case WM_CTLCOLORSTATIC:
      {
         SetBkMode((HDC)wParam,TRANSPARENT);
         return (LRESULT) GetSysColorBrush(COLOR_BTNFACE);
      }

Ноя так понял тебя интересует стиль как у винды  ?
то юзай такой код, после создания окна нужно этой функции передать HWND окна (диалога):

Код

//Гдето в заголовке
typedef HRESULT (WINAPI * ETDTProc) (HWND, DWORD);

// Сама функция
BOOL EnableDialogTheme(HWND hwnd)
{
    HMODULE hUXTheme;
    ETDTProc fnEnableThemeDialogTexture;

    hUXTheme = LoadLibrary(_T("uxtheme.dll"));

    if(hUXTheme)
    {
        fnEnableThemeDialogTexture = 
            (ETDTProc)GetProcAddress(hUXTheme, "EnableThemeDialogTexture");

        if(fnEnableThemeDialogTexture)
        {
            fnEnableThemeDialogTexture(hwnd, ETDT_ENABLETAB);

            FreeLibrary(hUXTheme);
            return TRUE;
        }
        else
        {
            FreeLibrary(hUXTheme);
            return FALSE;
        }
    }
    else
    {
        return FALSE;
    }
}



--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
mes
Дата 25.7.2008, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(Dem_max @  25.7.2008,  05:17 Найти цитируемый пост)
Ноя так понял тебя интересует стиль как у винды  ?

так ведь в атаче на скриншоте уже установлен ХP-стиль ... smile 


--------------------
PM MAIL WWW   Вверх
Kostik88
Дата 25.7.2008, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 9.5.2008

Репутация: нет
Всего: 2



Цитата

флаг пробовал ставить?  

Пробовал, но результат никакой.

Код

SetClassLong(hBottom,GCL_STYLE,GetClassLong(hBottom,GСL_STYLE) | CS_PARENTDC);

PM MAIL   Вверх
mes
Дата 25.7.2008, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(Kostik88 @  25.7.2008,  14:30 Найти цитируемый пост)
Пробовал, но результат никакой.

тогда только как предложил Dem_max- надо перегрузить ответ на дочерний запрос родителю о атрибутах 


--------------------
PM MAIL WWW   Вверх
Kostik88
Дата 25.7.2008, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 9.5.2008

Репутация: нет
Всего: 2



Dem_max, Вот к примеру я пишу обработку сообщения для чекбокса :

Цитата

case WM_CTLCOLORSTATIC: 
         SetBkMode((HDC)GetWindowDC(hChec),TRANSPARENT);
         return (LRESULT) GetSysColorBrush(COLOR_BTNFACE);   
      break;


Только цвет фона  чекбокса не меняется. 0о

Это сообщение отредактировал(а) Kostik88 - 25.7.2008, 17:46
PM MAIL   Вверх
Dem_max
Дата 25.7.2008, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



Цитата

так ведь в атаче на скриншоте уже установлен ХP-стиль

Нифига не установлен, ты к к ехе только присобачил манифест, 'nnjlftn возможность отображать контролы в стиле XP, а тему ХР можно задать только через EnableDialogTheme(HWND hwnd)


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Kostik88
Дата 25.7.2008, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 9.5.2008

Репутация: нет
Всего: 2



Цитата

Нифига не установлен, ты к к ехе только присобачил манифест, 'nnjlftn возможность отображать контролы в стиле XP, а тему ХР можно задать только через EnableDialogTheme(HWND hwnd) 



Чтобы убрать этот фон с элементов управления мне обязательно нужно ставить тему ХР чтоли?

А присобачил манифест Я, а не mes  smile 

Это сообщение отредактировал(а) Kostik88 - 25.7.2008, 18:13
PM MAIL   Вверх
Dem_max
Дата 26.7.2008, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



Цитата

Чтобы убрать этот фон с элементов управления мне обязательно нужно ставить тему ХР чтоли?


Не ты функцией активизируешь текущую тему. Текущей может быть стандартная или которая изменяет оформление рабочего стола, ты бы лучше сделал как говорят и не ...... нам мозг.


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Kostik88
Дата 26.7.2008, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 9.5.2008

Репутация: нет
Всего: 2



Dem_max, меньше всего мне хочется ......., такому как ты, мозг!

Это сообщение отредактировал(а) Kostik88 - 26.7.2008, 15:08
PM MAIL   Вверх
mekhanikus
Дата 27.7.2008, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вольноопределяющийся
*


Профиль
Группа: Участник
Сообщений: 186
Регистрация: 16.6.2008
Где: Спасск-Дальний

Репутация: 1
Всего: 1



Цитата(Kostik88 @ 25.7.2008,  17:36)
Dem_max, Вот к примеру я пишу обработку сообщения для чекбокса :

Цитата

case WM_CTLCOLORSTATIC: 
         SetBkMode((HDC)GetWindowDC(hChec),TRANSPARENT);
         return (LRESULT) GetSysColorBrush(COLOR_BTNFACE);   
      break;


Только цвет фона  чекбокса не меняется. 0о

Попробуй сделать так:

Код


case WM_CTLCOLORSTATIC: 
         SetBkMode((HDC)GetWindowDC(hChec),TRANSPARENT);
         return GetSysColorBrush(COLOR_BTNFACE);   
      break;



Функция должна возвращать HBRUSH, а ты возвращаеш LRESULT.

Это сообщение отредактировал(а) mekhanikus - 27.7.2008, 14:47
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.1301 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.