|
#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. |