Что нового

[Элементы GUI] Определение цвета текста и фона элемента TreeView

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Привет всем!

В "чужом" окне есть контрол SysTreeView32. Некоторые дочерние элементы имеют собственный цвет фона и/или текста. Работаю с этим контролом при помощи GuiTreeView.au3. Не могу найти в этой UDF получение цвета текста и фона элемента - только для всего дерева. Приходится пользоваться поиском цвета пикселя, что не всегда удобно.

Какие ещё есть способы получения цвета текста и фона дочернего элемента TreeView, кроме поиска цвета пикселя?
Спасибо.
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Попробуй так :
Код:
#include <GuiTreeView.au3>
$Run=Run ('hh.exe "C:\Program Files\AutoIt3\AutoIt3.chm::/html/functions/GUISetHelp.htm"')
$hWnd=WinWaitActive("AutoIt Help")
ConsoleWrite ("$hWnd = " &$hWnd& @LF)
$H=ControlGetHandle ( $hWnd, "", "SysTreeView321")
ConsoleWrite ("$h = " & $H & @LF)
$BKColor=_GUICtrlTreeView_GetBkColor($H)
ConsoleWrite ("$BKColor= " & $BKColor & @LF)
;$Color=_GUICtrlTreeView_GetTextColor($H) ; неверно определяет
$Color=_GUICtrlTreeView_GetLineColor($H); костыль, но определяет верно
ConsoleWrite ("$Color= " & $Color & @LF)
 
Автор
I

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Спасибо за попытку помочь. Но эта функция определяет цвет линии, соединяющей узлы.
Попробуйте заменить
Код:
$Color=_GUICtrlTreeView_GetLineColor($H); костыль, но определяет верно

на
Код:
$Color=_GUICtrlTreeView_SetLineColor($H, 0xFF0000); костыль, но определяет верно

и сами увидите.
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
InnI [?]
Но эта функция определяет цвет линии, соединяющей узлы.

Конечно. Однако в большинстве случаев цвет линии совпадает с цветом текста, если не задано отдельно цвет линии
 
Автор
I

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Однако в большинстве случаев цвет линии совпадает с цветом текста
К сожалению, в моём случае это не так. И с цветом фона элемента она тоже не совпадает :(
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Попробуй :
Код:
#include <WinAPIEx.au3>
_WinAPI_GetBkColor
_WinAPI_GetTextColor
 
Автор
I

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Изучил работу данных функций. Обе работают с контекстом устройства. В конечном итоге всё сводится к определению цвета пикселя.
Склоняюсь к тому, что другого способа определения цвета фона и шрифта элемента TreeView не существует.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Вы никак не сможете определить цвет текста/фона элементов LV/TV, поскольку они не имеют такого свойства. Вся раскраска происходит динамически на уровне WM_NOTIFY.
 
Автор
I

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Спасибо за информацию.
Теперь всё понятно.
 
Верх