![]() |
|
#1
|
|||
|
|||
![]() Всем доброго времени) пытаюсь получать цвет фона окна по хэндлу или по DC, но все функции, которые мне посоветовали не помогают( вероятно не правильно использую или нет вовсе таких функций О_О. Пытался через GetBkColor()
GetSysColor() GetDCBrushColor() но что то не выходит( дайте плиз рабочий примерчик, ато уже все волосы из головы выпали) ну и если возможно, так же присвоение цвета) заранее благодарен) p.s. то ж самое с цветом шрифта окна, сам шрифт получаю функцией font.Handle:=SendMessage(h, WM_GETFONT, 0, 0);, но цвет она всегда возвращает чёрный //добавленно Мне подсказали, что есть способ: "послать сообщение окну о перерисовке и в этот момент отловить цвет фона" кто нибудь подскажет с реализацией? Последний раз редактировалось reqyz, 16.02.2012 в 18:34. |
#2
|
||||
|
||||
![]() Код:
type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure TForm1.FormCreate(Sender: TObject); begin ShowMessage(IntToHex(GetBkColor(Canvas.Handle), 8)); end; Пишу программы за еду. __________________ |
#3
|
|||
|
|||
![]() ну, цвет своего окна я и так получить могу, без извращений, мне чужого надо)
|
#4
|
||||
|
||||
![]() Есть ещё и такое:
Код:
GetClassLong(Wnd, GCL_HBRBACKGROUND) Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#5
|
|||
|
|||
![]() спасибо) мне для них и надо) сейчас тестить пойду)
что то не робит( проверил на форм даже( всегда ноль возвращает... Последний раз редактировалось reqyz, 16.02.2012 в 22:09. |
#6
|
||||
|
||||
![]() Почему же, это рабочая функция. Скорее всего Wnd неверный. Попробуй сначала установить цвет, а потом запросить:
Код:
var aBrush, bBrush : HBRUSH; ... aBrush := CreateSolidBrush($DD2020); SetClassLong(Wnd, GCL_HBRBACKGROUND, aBrush); ... bBrush := GetClassLong(Wnd, GCL_HBRBACKGROUND); Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#7
|
|||
|
|||
![]() Код:
bBrush := GetClassLong(WindowFromPoint(Mouse.CursorPos), GCL_HBRBACKGROUND); brush.Handle:=bBrush; Shape1.Brush.Color:=Brush.Color; |
#8
|
|||
|
|||
![]() спасибо всем за помощь, задачу решил сам)))
Код:
Shape1.Brush.Color:=FindControl(WindowFromPoint(Mouse.CursorPos)).Brush.Color; работает для всех окон, у которых есть это свойство) для остальных находить и не надо, вопрос: "как проверить теперь что у окна этого свойства нет?" ато ошибку выдаёт( блин косяк( таким образом только почемуто у самой себя нормально получает цвет.. Последний раз редактировалось reqyz, 17.02.2012 в 07:21. |