![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
Kostik88 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 9.5.2008 Репутация: нет Всего: 2 |
mekhanikus, так всё правильно, обработчик события WM_CTLCOLORSTATIC возвращает значения BOOL - го типа и поэтому LRESULT, если ставить значение HBRUSH компилятор просто напросто будет ругаться.
Кому интересно про включение ХP те могут глянуть сайтик, похожая проблема, такаяже ф-ция.... Но почемуто у меня она отказывается работать. http://forum.sources.ru/index.php?showtopic=219977 Добавлено через 13 минут и 23 секунды Просто будет выдаваться ошибка: 'return' : cannot convert from 'HBRUSH' to 'BOOL' Это сообщение отредактировал(а) Kostik88 - 28.7.2008, 00:04 |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
Во первых где ты ловишь сообщение? у родителя ? приходит или нет? Во вторых не кажется ли окончание static подозрительным? Чекбокс как никак кнопка. Мне кажется, что в данном случае надо использовать WM_CTLCOLORBTN ![]() |
|||
|
||||
Kostik88 |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 9.5.2008 Репутация: нет Всего: 2 |
Я тоже так думаю=) только не шипко помогло(
Сообщение ловлю у родителя.
приходит. |
||||||
|
|||||||
Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
Можно еще так
#include <uxtheme.h> #pragma comment(lib, "UxTheme.lib") SetWindowTheme(hwndList, L"Explorer", NULL); -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
Kostik88 |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 9.5.2008 Репутация: нет Всего: 2 |
Вроде бы решил проблему:
для бутонов:
и для чекбокса:
теперь фон кнопок и чекбоксов меняется. Добавлено через 2 минуты и 54 секунды А если хочется поставить любой другой фон то можно воспользоваться ф-цией CreateSolidBrush =) |
||||
|
|||||
mekhanikus |
|
|||
Вольноопределяющийся ![]() Профиль Группа: Участник Сообщений: 186 Регистрация: 16.6.2008 Где: Спасск-Дальний Репутация: 1 Всего: 1 |
Странно.
Читаем про WM_CTLCOLORSTATIC
Тоже самое про WM_CTLCOLORBTN. Кинь исходник, если не жалко, самый минимум, как ты кнопки делаешь и красишь. Интересно самомы скомпилить. |
|||
|
||||
Kostik88 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 9.5.2008 Репутация: нет Всего: 2 |
mekhanikus, Я не совсем понял что тебя в этих сообщения не устраивает и в чём твое негодование относительно цитаты из msdn?
Код выкладывать не буду ибо там больше 3 тысяч строк кода. Хочешь проверить сделай простой проект прикрепи к нему диалог с помощью Resource View и кинь на него кнопочки и проверь эти сообщения. |
|||
|
||||
Draeden |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 7.7.2008 Репутация: нет Всего: нет |
Любопытная задачка: нужно поменять значения поля в WNDCLASS созданного ранее через RegisterWindowClass.
Интересно посмотреть, есть ли красивое решение... |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
если я правильно понял то Вам нужно SetClassLong Добавлено через 1 минуту и 44 секунды также непонятно почему вопрос поместили в этом топике.. в чем связь с темой ?? |
|||
|
||||
mekhanikus |
|
|||
Вольноопределяющийся ![]() Профиль Группа: Участник Сообщений: 186 Регистрация: 16.6.2008 Где: Спасск-Дальний Репутация: 1 Всего: 1 |
Никакого негодования, спокоен как удав. Просто, у меня был опыт раскрашивания статиков. При этом в DialogProc сообщения обрабатывались макросами HANDLE_MSG, с последующим вызовом соответствующих функций. Так вот функция раскраски статиков возвращала HBRUSH, и все работало. Сейчас попробовал стелать тоже самое без HANDLE_MSG, действительно, без (LRESULT) ругается. ![]() Оказывается в HANDLE_MSG сделано тоже самое - преобразование в LRESULT. Век живи - век учись. ![]() Кстати PUSHBUTTON у меня нехотят краситься никак. |
|||
|
||||
Draeden |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 7.7.2008 Репутация: нет Всего: нет |
если я правильно понял то Вам нужно SetClassLong Добавлено @ 23:28 также непонятно почему вопрос поместили в этом топике.. в чем связь с темой ?? Это не мой вопрос. Автор темы хочет поменять цвет фона для определённого окна, а также для всех его дочерних окон. Цвет фона определяется полем в структуре WNDCLASS которая регистрируется функцией RegisterClass. Таким образом нужно 1. найти все дочерние окна 2. определить классы всех окон - родительского и дочерних ( этот класс возвращается функцией RegisterClass и указывается при вызове CreateWindow ) 3. найти структуры WNDCLASS для найденных классов ( я не вижу документированного способа сделать это ) 4. изменить соотвтесвующее поля в этой структуре ( кисть фона ) 5. обновить родительское окно со всеми дочерними окнами Проблема - п.3, всё остальное сделать просто. |
||||||
|
|||||||
Kostik88 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 9.5.2008 Репутация: нет Всего: 2 |
Draeden, если Вы не заметили то вопрос уже решён, кодом в несколько строк.
|
|||
|
||||
mes |
|
||||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
Цвет фона класса окон, а не отдельно взятого окна.
http://msdn.microsoft.com/en-us/library/ms633588(VS.85).aspx |
||||||
|
|||||||
Draeden |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 7.7.2008 Репутация: нет Всего: нет |
И то верно, надо MSDN внимательнее читать
![]() |
|||
|
||||
Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
Kostik88,
Ага а ты попробуй Оформление XP поставить на классический вид или оформление другое поставь из сторонних разработчиков и получишь гимморой, и тогда фон будет другим цветом и твои статики будут закрашиваться белым цветом, а подбирать через СreateSolidBrush у тебя не получится. А чтою этого небыло используется SetWindowTheme(hwndList, L"Explorer", NULL), которая сама автоматически раскрашивает контролы с установленной цветовой схемой в системе, при этом эта функция вызывается только для родительского окна или для диалога который создается на TabControl/ -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |