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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Системные цвета 
V
    Опции темы
lorents
Дата 16.6.2010, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Добрый день!
У меня есть некоторые константы, и я бы хотел понять какой цвет куда относится.
Я понимаю, что у меня есть расшифровка на нгл, но для меня это не достаточно, где можно прочитать поподробнее?
В частности меня интересует (на картинке обозначены интересующие цвета):
1. Цвет фона объекта Input в включенном состоянии;
2. Цвет фона объекта Input в выключено состоянии;
3. цвет текста;
4. Окантовка объекта Input.

и еще можно узнать какие цвета, используются в статусбаре?

Код
-- Константы
COLOR_SCROLLBAR = 0; --The Scrollbar colour
COLOR_BACKGROUND = 1; --Colour of the background with no wallpaper
COLOR_ACTIVECAPTION = 2; --Caption of Active Window
COLOR_INACTIVECAPTION = 3; --Caption of Inactive window
COLOR_MENU = 4; --Menu
COLOR_WINDOW = 5; --Windows background
COLOR_WINDOWFRAME = 6; --Window frame
COLOR_MENUTEXT = 7; --Window Text
COLOR_WINDOWTEXT = 8; --3D dark shadow (Win95)
COLOR_CAPTIONTEXT = 9; --Text in window caption
COLOR_ACTIVEBORDER = 10; --Border of active window
COLOR_INACTIVEBORDER = 11; --Border of inactive window
COLOR_APPWORKSPACE = 12; --Background of MDI desktop
COLOR_HIGHLIGHT = 13; --Selected item background
COLOR_HIGHLIGHTTEXT = 14; --Selected menu item
COLOR_BTNFACE = 15; --Button
COLOR_BTNSHADOW = 16; --3D shading of button
COLOR_GRAYTEXT = 17; --Grey text, of zero if dithering is used.
COLOR_BTNTEXT = 18; --Button text
COLOR_INACTIVECAPTIONTEXT = 19; --Text of inactive window
COLOR_BTNHIGHLIGHT = 20; --3D highlight of button
COLOR_2NDACTIVECAPTION = 27; --Uin98 only: 2nd active window color
COLOR_2NDINACTIVECAPTION = 28; --Win95 only: 2nd inactive window color


Это сообщение отредактировал(а) lorents - 16.6.2010, 20:55


--------------------
PM MAIL   Вверх
Cheloveck
Дата 16.6.2010, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



COLOR_WINDOW - текстовое поле
COLOR_BTNFACE - цвет окна (тот же и у неактивного поля)
COLOR_BTNTEXT - цвет текста на кнопке (чекбокс тоже кнопка)

на счёт бордюра не уверен, но наверное
COLOR_ACTIVEBORDER
COLOR_INACTIVEBORDER

Это сообщение отредактировал(а) Cheloveck - 16.6.2010, 20:29


--------------------
user posted image
PM Jabber   Вверх
lorents
Дата 16.6.2010, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Cheloveck, 
а можно по порядку, как у меня поставлены вопросы
а просто не соображаю

и можно узнать по статусбару
1. цвет текста
2. цвет окантовки
3. и сам цвет статус бара


--------------------
PM MAIL   Вверх
GremlinProg
Дата 17.6.2010, 07:56 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

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



сомнения можно разрешить так:
Код

TCHAR Buffer[80];
COLORREF Old, New    = RGB( 255, 0, 0 );
INT El    = COLOR_BTNFACE;
//
Old    = ::GetSysColor( El );
::SetSysColors( 1, &El, &New ); 
_stprintf_s( Buffer, TEXT("системный цвет #%i был заменен на #%.2x%.2x%.2x"), El, GetRValue( New ), GetGValue( New ), GetBValue( New ) );
::MessageBox( 0, Buffer, TEXT(""), MB_OK );
::SetSysColors( 1, &El, &Old ); 

в El можно поставить любой индекс из множества COLOR_xxx
этот цвет будет на время заменен красным, пока висит MessageBox, после чего вернется обратно

в это время открывай интересующее приложение и смотри,
если загорелся красный в нужном месте, значит это тот самый индекс,
нет - значит либо это не тот индекс, либо этот цвет вообще не привязан к системной палитре


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
lorents
Дата 17.6.2010, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



GremlinProg, хитро придумано smile 

эх только одна загвоздка у меня нету C/C++, я для другой программы интересовался

А Вы не могли бы сделать мне мини-приложение со всеми константами если не затруднит
буду очень признателен

или что надо чтобы запустить данный код?

Это сообщение отредактировал(а) lorents - 17.6.2010, 13:16


--------------------
PM MAIL   Вверх
GremlinProg
Дата 17.6.2010, 13:45 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

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



пожалуйста,
консолька принимает 2 параметра:
первый - индекс
второй - цвет

сделай ярлык, или несколько ярлыков типа такого: chsysclr.exe 15 0xff
15 - это COLOR_BTNFACE, 0xff - красный

и запускай их поочереди

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  chsysclr.rar 3,56 Kb


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
GremlinProg
Дата 17.6.2010, 13:46 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

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



исходник:
Код

#include <windows.h>
#include <tchar.h>

#pragma comment( lib, "user32" )

INT _tmain( INT argc, TCHAR*argv[], TCHAR*envp[] ){
    TCHAR Buffer[80];
    LPCTSTR pszUsage    = TEXT("chsysclr <i> <c>\r\n i - index\r\n c - color\r\n");
    COLORREF Old, New;
    INT Index;
    //
    if( argc < 3 ){
        _tprintf_s( pszUsage );
        return 0;
    }
    if( _stscanf_s( argv[1], TEXT("%i"), &Index ) != 1 ){
        _tprintf_s( pszUsage );
        return 0;
    }
    if( _stscanf_s( argv[2], TEXT("%i"), &New ) != 1 ){
        _tprintf_s( pszUsage );
        return 0;
    }
    Old    = ::GetSysColor( Index );
    ::SetSysColors( 1, &Index, &New ); 
    _stprintf_s( Buffer, TEXT("системный цвет #%i был заменен на #%.2x%.2x%.2x"), Index, GetRValue( New ), GetGValue( New ), GetBValue( New ) );
    ::MessageBox( 0, Buffer, TEXT(""), MB_OK );
    ::SetSysColors( 1, &Index, &Old );
    return 0;
}


Это сообщение отредактировал(а) GremlinProg - 17.6.2010, 13:48

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  chsysclr.rar 2,15 Kb


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
lorents
Дата 17.6.2010, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



GremlinProg, Мой спаситель, программа просто прелесть smile 
спасибо!!! smile 


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

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


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

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


 




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


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

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