Функция 48, подфункция 3 - получить стандартные цвета окон.
Параметры:
eax = 48 - номер функции
ebx = 3 - номер подфункции
ecx = указатель на буфер размером edx байт,
куда будет записана таблица
edx = размер таблицы цветов
(должен быть 40 байт для будущей совместимости)
Возвращаемое значение:
функция не возвращает значения
Формат таблицы цветов: каждый элемент -
dword-значение цвета 0x00RRGGBB
+0: dword: frames - цвет рамки
+4: dword: grab - цвет заголовка
+8: dword: grab_button - цвет кнопки на полосе заголовка
+12 = +0xC: dword: grab_button_text - цвет текста на кнопке
на полосе заголовка
+16 = +0x10: dword: grab_text - цвет текста на заголовке
+20 = +0x14: dword: work - цвет рабочей области
+24 = +0x18: dword: work_button - цвет кнопки в рабочей области
+28 = +0x1C: dword: work_button_text - цвет текста на кнопке
в рабочей области
+32 = +0x20: dword: work_text - цвет текста в рабочей области
+36 = +0x24: dword: work_graph - цвет графики в рабочей области
Замечания:
Структура таблицы цветов описана в стандартном включаемом файле
macros.inc под названием system_colors; например, можно писать:
sc system_colors ; объявление переменной
... ; где-то надо вызвать
; описываемую функцию с ecx=sc
mov ecx, [sc.work_button_text] ; читаем цвет текста
; на кнопке в рабочей области
Использование/неиспользование этих цветов - дело исключительно
самой программы. Для использования нужно просто при вызове функций
рисования указывать цвет, взятый из этой таблицы.
При изменении таблицы стандартных цветов (подфункцией 2 с
последующим применением изменений подфункцией 0 или
при установке скина подфункцией 8) всем окнам посылается сообщение
о необходимости перерисовки (событие с кодом 1).
Стандартные цвета можно просматривать/изменять интерактивно
с помощью приложения desktop.