Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/16: Рейтинг темы: голосов - 16, средняя оценка - 4.75
 Аватар для Dimarik__
21 / 21 / 3
Регистрация: 29.04.2010
Сообщений: 444

Создать static таким образом, чтобы его цвет был таким же, как у окна

19.06.2011, 21:14. Показов 3490. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно создать метку таким образом чтобы цвет метки был таким же как у окна.
Code
1
2
3
HWND hLabelFrom = CreateWindow("STATIC", "Исходное число",
        WS_CHILD | WS_VISIBLE , 
        20, 40, 100, 50, window1._hMainWnd, (HMENU)-1, hInstance, NULL);
Затем можно сделать так:
Code
1
2
3
COLORREF Color_myColor = RGB(200,255,200);
    
    SetBkColor((HDC) hLabelFrom,  Color_myColor);
но через HDC это уже какой-то велосипед будет. Можно сделать так, чтобы все свойства окна автоматически наседовались на метку?
P.S. как изменить размер шрифта в элементе?

Добавлено через 5 часов 39 минут
А можно в третьем аргументе через побитовое И присвоить константу, позволяющую унаследовать цвет от главного окна или как-то так?
что-то типа этого, но только чтоб именно цвет главного окна унаследовать можно было

C++
1
2
3
HWND hLabelFrom = CreateWindow("STATIC", "Исходное число",
        WS_CHILD | WS_VISIBLE | COLOR_WINDOW , 
        20, 40, 100, 50, window1._hMainWnd, (HMENU)-1, hInstance, NULL);
Цвет главного окна:
C++
1
HBRUSH myColor = CreateSolidBrush(RGB(200,255,200));
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.06.2011, 21:14
Ответы с готовыми решениями:

Отсортировать массив таким образом, чтобы наибольший элемент был в середине
Дан массив из 9 случайных чисел. Отсортировать его таким образом, чтобы наибольший элемент был в середине, следующий – слева от...

Создание потока таким образом, чтобы файл был доступен другим программам
Здравствуйте Я создаю поток для записи в бинарный файл: using (FileStream stream = new FileStream("file.bin",...

Сформировать матрицу М таким образом, чтобы элемент с индексами (I, J) был равен двузначному числу
Сформировать матрицу М таким образом, чтобы элемент с индексами (I, J) был равен двузначному числу, старшая цифра которого – I , а младшая...

8
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
19.06.2011, 22:33
Цитата Сообщение от Dimarik__ Посмотреть сообщение
А можно в третьем аргументе через побитовое И присвоить константу
Конечно же нет, что это будет?

Цитата Сообщение от Dimarik__ Посмотреть сообщение
Можно сделать так, чтобы все свойства окна автоматически наследовались на метку?
Похоже на SetSysColors.
0
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 209
26.06.2011, 20:19
Для того, чтобы цвет метки был таким же, как у его родительского окна, в процедуре-обработчике родительского окна метки нужно обрабатывать сообщение WM_CTLCOLORSTATIC.
Параметр wParam - описатель контекста устройства статического элемента управления;
параметр lParam - описатель статического элемента управления.

Если приложение обрабатывает сообщение WM_CTLCOLORSTATIC, возвращаемое значение используется как описатель кисти, для закрашивания фона метки.

Для твоего случая, это выглядит примерно так:

C
1
2
3
4
case WM_CTLCOLORSTATIC:
        if ((HWND) lParam == hLabel)
            return (LRESULT) GetClassLong(hwnd, GCL_HBRBACKGROUND);
        break;
0
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
26.06.2011, 21:50
У мну не пашет. ( Окно белое, фон статика серый. Откуда?
0
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 209
27.06.2011, 18:59
Из книги Петцольда,
я проверял - у меня работало.

C
1
2
3
4
5
6
7
8
9
10
11
case WM_CTLCOLORSTATIC:
                /* Если сообщение связано с меткой, описатель которой - hLabel,
                    то возвращаем кисть, которая используется для закрашивания
                    фона родительского окна, описателем которого является hwnd.
                    Естественно, значения описателей hLabel и hwnd должны быть
                    действующими и сообщение должно обрабатываться в обработчике
                    окна, являющегося родительским для метки.
                */
                if ((HWND) lParam == hLabel)
                        return (LRESULT) GetClassLong(hwnd, GCL_HBRBACKGROUND);
                break;
За подробностями можешь обратиться к описанию сообщения WM_CTLCOLOTSTATIC в MSDN.
0
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
27.06.2011, 23:23
В Петзольде '95 этого кода нет, MSDN не подходит, выложи весь код.
0
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 209
27.06.2011, 23:36
Как это нет?
глава "Дочерние окна управления", страница 278, "Окрашивание полос прокрутки и статического текста".
0
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
27.06.2011, 23:56
C++
1
2
3
4
5
6
7
8
9
10
case WM_CTLCOLORSTATIC:
    
    i = GetWindowLong((HWND) lParam, GWL_ID);
    if(i >= 3 && i <= 8) // static text controls
    {
        SetTextColor((HDC) wParam, crPrim[i % 3]);
        SetBkColor((HDC) wParam, GetSysColor(COLOR_BTNHIGHLIGHT));
        return(LRESULT) hBrushStatic;
    }
    break;
И... Возвращает кисть. Какой-то неправильный у тебя Петзольд.
0
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 209
28.06.2011, 08:53
В смысле
Какой-то неправильный у тебя Петзольд.
??
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.06.2011, 08:53
Помогаю со студенческими работами здесь

Переставить строки матрицы таким образом, чтобы первый столбец был упорядочен по возрастанию
При помощи случайных чисел ввести матрицу размером 8x10. Переставить строки матрицы таким образом, чтобы первый столбец был упорядочен по...

Сколькими способами 7 человек могут сесть в 3 вагона таким образом, чтобы ровно 1 вагон был пустым
На мой взгляд, по идее должно быть P_{7}\cdot A^{2}_{3}=7!\cdot 3! Это верно или нет?

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

Вывести на экран монитора квадрат таким образом, чтобы он изменял свой цвет с голубого на фиолетовый
Задание: Вывести на экран монитора квадрат таким образом, чтобы он изменял свой цвет с голубого(Cyan) на фиолетовый(Magenta) и...

Дан массив. Преобразовать его таким образом, чтобы все его элементы принадлежали отрезку
Дан массив. Преобразовать его таким образом, чтобы все его элементы принадлежали отрезку . Параметр преобразования – наибольший по модулю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru