![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сменить фон TreeView
Babay © (2006-04-04 13:43:00)Подскажите как средствами АПИ изменить фон элемента TreeView если я знаю его HWND
Делаю так:
Const GWL_STYLE = (-16);
Const TVS_HASLINES = 2;
Const TV_FIRST = $1100 ;
Const TVM_SETBKCOLOR = (TV_FIRST + 29) ;
....
SendMessage(HWND,TVM_SETBKCOLOR, 0, rgb(255,0,0));
lngStyle:= GetWindowLong(HWND, GWL_STYLE);
SetWindowLong(HWND, GWL_STYLE, lngStyle xor TVS_HASLINES);
SetWindowLong(HWND, GWL_STYLE, lngStyle);
но цвет фона меняется только под буквами, а мне надо чтоб весь элемент перекрасился.
DVM (2006-04-05 11:06:00) [1]
> Вся беда в том что этот элемент не в моем окне, у меня есть
> только HWND, и я немогу отработать это сообщение
С пом., например, хуков, внедряешься в адресное пространство другого процесса, там подменяешь оконную процедуру нужного TreeView на свою (SetWindowLong) и для всех сообщений кроме WM_ERASEBKGND вызываешь старую оконную процедуру, для WM_ERASEBKGND свою.
Babay (2006-04-04 17:51:00) [2]в кратце так (одна из маленьких подзадач).
есть прога написанная на Bilder-е (тока exe файл), в ней есть треевиев, надо из другой проги поменять у этого треевиева фон.
Вот цвет фона бод буквами и буквы менять удается, а так чтоб весь фон чета никак.
Ну примерно так.
Неспрашивайте меня почему такая задача, ну просто так вышло... долго объяснять.
Игорь Шевченко (2006-04-04 16:13:00) [3]Babay © (04.04.06 16:12) [2]
> Вся беда в том что этот элемент не в моем окне, у меня есть
> только HWND, и я немогу отработать это сообщение
А в чем суть задачи состоит ? Может, ее можно иначе решить ?
Babay (2006-04-04 16:12:00) [4]Вся беда в том что этот элемент не в моем окне, у меня есть только HWND, и я немогу отработать это сообщение
.... или я чего не понял?
Игорь Шевченко (2006-04-04 13:54:00) [5]
> а мне надо чтоб весь элемент перекрасился.
Попробуй обработать WM_ERASEBKGND у TreeView