Цветовая схема
От: Dimonka Верблюд  
Дата: 15.03.05 16:47
Оценка:
Доброго времени суток!

У меня время от времени появляется дикое желание подменить стандартные цвета clBtnFace, clBtnShadow и т.д. на собственные. Т.е. скопом задавать цветовую схему. На сколько я понял все эти цвета вяжутся на ColorToRGB, а дальше на GetSysColor. Можно ли где-нибудь малой кровью подвязаться и возвращать свои значения для стандартных цветов?

Может есть какие готовые решения?

Заранее спасибо за ответы!
Re: Цветовая схема
От: Аноним  
Дата: 15.03.05 23:59
Оценка:
Здравствуйте, Dimonka, Вы писали:


D>У меня время от времени появляется дикое желание подменить стандартные цвета clBtnFace, clBtnShadow и т.д. на собственные. Т.е. скопом задавать цветовую схему. На сколько я понял все эти цвета вяжутся на ColorToRGB, а дальше на GetSysColor. Можно ли где-нибудь малой кровью подвязаться и возвращать свои значения для стандартных цветов?



Может SetSysColors попробовать? Вот пример из MSDN:


// Window elements to change. 
int aiElements[3] = {COLOR_ACTIVEBORDER, 
                     COLOR_ACTIVECAPTION, 
                     COLOR_WINDOW}; 

// Array of RGB values. 
DWORD aColors[3]; 
 
// Define the new colors. 
 
aColors[0] = RGB(0x80, 0x00, 0x80);  // dark purple 
aColors[1] = RGB(0x00, 0x80, 0x80);  // dark cyan 
aColors[2] = RGB(0xC0, 0xC0, 0xC0);  // light gray 
 
// Set the window elements in aiElements to the colors 
// specified in aColors. 
 
SetSysColors(3, aiElements, aColors);
Re: Цветовая схема
От: Vodyamba Россия  
Дата: 16.03.05 01:03
Оценка:
Здравствуйте, Dimonka, Вы писали:

D>Доброго времени суток!


D>У меня время от времени появляется дикое желание подменить стандартные цвета clBtnFace, clBtnShadow и т.д. на собственные. Т.е. скопом задавать цветовую схему. На сколько я понял все эти цвета вяжутся на ColorToRGB, а дальше на GetSysColor. Можно ли где-нибудь малой кровью подвязаться и возвращать свои значения для стандартных цветов?


D>Может есть какие готовые решения?


D>Заранее спасибо за ответы!


Очень бы хотелось на это посмотреть, меня это тоже интересует, иногда охото поменять цвет clbtbFace на какой-нибудь другой... а своих сереньких веществ не хватает...
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re[2]: Цветовая схема
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 16.03.05 03:29
Оценка:
Здравствуйте, Vodyamba, Вы писали:

[]

V>Очень бы хотелось на это посмотреть, меня это тоже интересует, иногда охото поменять цвет clbtbFace на какой-нибудь другой... а своих сереньких веществ не хватает...


А чего там смотреть? Берется и пишется нечто подобное для автозамены свойства Color на нужное для всех компонентов переданного контейнера:

void __fastcall ChangeColorProperty(TControl* control, TColor color)
{
  if(!control)
        return;
        
        control->Color = color;
        
        TWinControl* wc = dynamic_cast<TWInControl*>(control);
        
        if(wc)
            for(int i=0;i<wc->ControlCount;i++)
                ChangeColorProperty(wc->Controls[i],color);
}


Всего делов-то, да и идея, я думаю, вполне ясна Подцепляем, где нужно (хоть на OnActiveFormChange у Screen) и радуемся жизни. При желании можно забабахать компонент с настраиваемыми свойствами, типа — у какого контрола менять цвет, а у какого нет.
... << RSDN@Home 1.1.3 stable >>
Re[3]: Цветовая схема
От: Vodyamba Россия  
Дата: 16.03.05 05:24
Оценка:
Здравствуйте, Flamer, Вы писали:

F>А чего там смотреть? Берется и пишется нечто подобное для автозамены свойства Color на нужное для всех компонентов переданного контейнера:


F>
F>void __fastcall ChangeColorProperty(TControl* control, TColor color)
F>{
F>  if(!control)
F>        return;
        
F>        control->Color = color;
        
F>        TWinControl* wc = dynamic_cast<TWInControl*>(control);
        
F>        if(wc)
F>            for(int i=0;i<wc->ControlCount;i++)
F>                ChangeColorProperty(wc->Controls[i],color);
F>}
F>


F>Всего делов-то, да и идея, я думаю, вполне ясна Подцепляем, где нужно (хоть на OnActiveFormChange у Screen) и радуемся жизни. При желании можно забабахать компонент с настраиваемыми свойствами, типа — у какого контрола менять цвет, а у какого нет.


Я не очень то силён в Си, больше делфи... но догадаться могу...

Это то всё понятно, но если быть конкретнее волновал вопрос как быть с компонентами у которых свойство Color не доступно... например Tbutton... Вот и хотелось переопределить clBtnFace чтобы стало clBtnFace = clRed, а значит все кнопочки красные и т.д.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re[4]: Цветовая схема
От: Sinclair Россия https://github.com/evilguest/
Дата: 16.03.05 06:38
Оценка: :))) :)
Здравствуйте, Vodyamba, Вы писали:

V>Это то всё понятно, но если быть конкретнее волновал вопрос как быть с компонентами у которых свойство Color не доступно... например Tbutton... Вот и хотелось переопределить clBtnFace чтобы стало clBtnFace = clRed, а значит все кнопочки красные и т.д.

1. Сверни все окна
2. Кликни правой кнопкой на десктопе
3. Выбери Properties... (или Свойства...)
4. Иди на вторую закладку
5. Выбери нужный элемент интерфейса
6. Смени ему цвет
7. Наслаждайся.
... << RSDN@Home 1.1.4 beta 4 rev. 347>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[5]: Цветовая схема
От: Dimonka Верблюд  
Дата: 16.03.05 10:55
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, Vodyamba, Вы писали:


V>>Это то всё понятно, но если быть конкретнее волновал вопрос как быть с компонентами у которых свойство Color не доступно... например Tbutton... Вот и хотелось переопределить clBtnFace чтобы стало clBtnFace = clRed, а значит все кнопочки красные и т.д.

S>1. Сверни все окна
S>2. Кликни правой кнопкой на десктопе
S>3. Выбери Properties... (или Свойства...)
S>4. Иди на вторую закладку
S>5. Выбери нужный элемент интерфейса
S>6. Смени ему цвет
S>7. Наслаждайся.

Ага
8. Перейти к следующему компьютеру.
9. начать с пункта 1


А если ч.. серьёзно?
Re[3]: Цветовая схема
От: Dimonka Верблюд  
Дата: 16.03.05 10:59
Оценка:
Здравствуйте, Flamer, Вы писали:


F>А чего там смотреть? Берется и пишется нечто подобное для автозамены свойства Color на нужное для всех компонентов переданного контейнера:

...
F>Всего делов-то, да и идея, я думаю, вполне ясна Подцепляем, где нужно (хоть на OnActiveFormChange у Screen) и радуемся жизни. При желании можно забабахать компонент с настраиваемыми свойствами, типа — у какого контрола менять цвет, а у какого нет.

Делов там чуть больше, потому что у контролов могут быть массы различных свойств, которые задаются косвенным путём (через стили, через подкомпоненты итд). Хотелось бы решить это дело в корне..
Re[6]: Цветовая схема
От: Dymok_SR Украина  
Дата: 16.03.05 11:48
Оценка:
Здравствуйте, Dimonka, Вы писали:
D>Ага
D>8. Перейти к следующему компьютеру.
D>9. начать с пункта 1

D>

D>А если ч.. серьёзно?

Аноним какой-то Вам про SetSysColor писал...
с его помощью программно, на любом (Windows) компе меняются такие цвета (типа clBtnFace для кнопочки)
Re[7]: Цветовая схема
От: Dimonka Верблюд  
Дата: 16.03.05 11:56
Оценка:
Здравствуйте, Dymok_SR, Вы писали:

D_S>Аноним какой-то Вам про SetSysColor писал...

D_S>с его помощью программно, на любом (Windows) компе меняются такие цвета (типа clBtnFace для кнопочки)

ну и? А если надо две программы запустить с разными цветовыми насторйками, то тогда какая последняя запустится — та и папа?
Re: Цветовая схема
От: Dimonka Верблюд  
Дата: 16.03.05 12:00
Оценка:
Такой вопрос, как линкуются DLL-ки к программе статически?
Можно ли написать что-нибудь вроде:
@GetSysColor := MyGetSysColor;

?
Они же должны быть обычными указателями на функцию?
Re[5]: Цветовая схема
От: Vodyamba Россия  
Дата: 16.03.05 12:47
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, Vodyamba, Вы писали:


V>>Это то всё понятно, но если быть конкретнее волновал вопрос как быть с компонентами у которых свойство Color не доступно... например Tbutton... Вот и хотелось переопределить clBtnFace чтобы стало clBtnFace = clRed, а значит все кнопочки красные и т.д.

S>1. Сверни все окна
S>2. Кликни правой кнопкой на десктопе
S>3. Выбери Properties... (или Свойства...)
S>4. Иди на вторую закладку
S>5. Выбери нужный элемент интерфейса
S>6. Смени ему цвет
S>7. Наслаждайся.

Остроумно, но не покатит... ято так смогу, а вот всех других заставить не получится...
Re[6]: Цветовая схема
От: Sinclair Россия https://github.com/evilguest/
Дата: 16.03.05 15:38
Оценка: +2
Здравствуйте, Vodyamba, Вы писали:

V>Остроумно, но не покатит... ято так смогу, а вот всех других заставить не получится...

И вот это как раз очень хорошо! Упаси меня байт от таких вот заставлятелей других. Не надо. Хочешь себе извратную схему — ставь. Хочешь поставить софт на мой компьютер — будь любезен уважать мои представления о прекрасном. У меня вот стоит модифицированная схема Rainy Day. И не надо мне никаких приложений, перекрашивающих clBtnFace в clRed.
... << RSDN@Home 1.1.4 beta 4 rev. 347>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[8]: Цветовая схема
От: Sergey__ Россия  
Дата: 16.03.05 15:44
Оценка:
Здравствуйте, Dimonka, Вы писали:

D>ну и? А если надо две программы запустить с разными цветовыми насторйками, то тогда какая последняя запустится — та и папа?

ага и каждая прога при активизации сразу должна менять все настройки на PC и прописываться в автозагрузку
Regards, Sergey << posted via RSDN@Home 1.1.4 beta 3 r303 >>
Sergey
Re[3]: Цветовая схема
От: Mamut Швеция http://dmitriid.com
Дата: 16.03.05 16:51
Оценка: :)
F>Всего делов-то, да и идея, я думаю, вполне ясна Подцепляем, где нужно (хоть на OnActiveFormChange у Screen) и радуемся жизни. При желании можно забабахать компонент с настраиваемыми свойствами, типа — у какого контрола менять цвет, а у какого нет.

Хм... Почему мне думается, что эта идея будет реализована в LiebeNotes, а потом выложена в Исходники?
... << RSDN@Home 1.1.4 beta 4 rev. 0>> ... <<Winamp is playing "Что играет? Где играет? Где ВинАмп, я вас спрашиваю?">> ...


dmitriid.comGitHubLinkedIn
Re[7]: Цветовая схема
От: Dimonka Верблюд  
Дата: 16.03.05 17:08
Оценка:
Здравствуйте, Sinclair, Вы писали:

V>>Остроумно, но не покатит... ято так смогу, а вот всех других заставить не получится...

S>И вот это как раз очень хорошо! Упаси меня байт от таких вот заставлятелей других. Не надо. Хочешь себе извратную схему — ставь. Хочешь поставить софт на мой компьютер — будь любезен уважать мои представления о прекрасном. У меня вот стоит модифицированная схема Rainy Day. И не надо мне никаких приложений, перекрашивающих clBtnFace в clRed.

Так вся фишка как раз в том, что ты со своим тонким вкусом останешься при своих чутко настроенных цветах, а другие пользователи смогут оценить целый набор других цветовых схем. Т.е. такая возможность позволит ненавязчиво предложить разнообразие.
Re[7]: Цветовая схема
От: Vodyamba Россия  
Дата: 16.03.05 23:52
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>И вот это как раз очень хорошо! Упаси меня байт от таких вот заставлятелей других. Не надо. Хочешь себе извратную схему — ставь. Хочешь поставить софт на мой компьютер — будь любезен уважать мои представления о прекрасном. У меня вот стоит модифицированная схема Rainy Day. И не надо мне никаких приложений, перекрашивающих clBtnFace в clRed.


Если быть юолее точным, то хотелось переопределить clBTNFace на какой нибудь другой цвет в пределах одного приложения...
Но понимается мне, что это не легко, да вобщемто и того оно не стоит...
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re[2]: Цветовая схема
От: Аноним  
Дата: 17.03.05 05:35
Оценка:
Здравствуйте, Dimonka, Вы писали:


почитай здесь
Автор(ы): Павел Блудов
В статье рассматриваются различные способы перехвата и подмены функций API.
Приводятся примеры простейшей подмены и подмены с вызовом оригинальной функции API.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.