То, что вы запрашиваете, будет обратным к GetStockObject
(хорошо, строго говоря, есть еще несколько функций, которые принимают индекс типа GetSysColor
, который также будет актуален). Однако, нет такой функции, которая устанавливает их для каждого процесса (если вы не хотите использовать SetSysColors для всей системы, что, по-видимому, исключает ваш вопрос). Лучше всего - и проще всего - было бы перехватить эти функции внутри вашего процесса (Windows выполняет за вас часть копирования при записи, так что перехватить ее внутри памяти, занятой gdi32.dll) и вернуть ваши собственные объекты (кисти, шрифты, ручки, цвета). Постарайтесь очистить объекты GDI после завершения работы приложения. Это будет именно то, что вы просите, но не обязательно самый простой способ добиться эффекта в Delphi. Редактировать: Дэвид Хеффернан отметил, что предложение о подключении не учитывает темы. Он прав. Так что, возможно, это не лучший способ.
Однако, учитывая, что вы используете Delphi, может быть проще всего получить классы VCL, которые вы хотите настроить (практично как для элементов управления, так и для форм). В качестве альтернативы вы можете использовать RTTI для перебора элементов вашей формы и изменения элементов по мере необходимости (единообразно и по типу элемента управления).
Если ваше приложение требует этого только для некоторых элементов управления в приложении, WM_CTLCOLOREDIT
и друзья могут быть более простым способом.
В любом случае: обратите внимание, что удобство использования и UX (пользовательский опыт) приложений обычно лучше, если приложение использует знакомые элементы управления, стили, цвета ...