· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› hbrBackground

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Июл 2, 2004 16:12:11

Добрый день, господа. Тут возник вопрос у меня по Win User Interface. Суть такова: в структуре WNDCLASSEX элемент hbrBackground принимает фиксированные значения как-то: COLOR_WINDOW, COLOR_BTNTEXT и т.п. Собственно вопрос: можно ли, не прибегая к отрисовке окна по каждому сообщению WM_ERASEBKGND, указать свой цвет окна при регистрации класса или создании окна или ещё каким способом?


Дата: Июл 2, 2004 16:48:52 · Поправил: rsrc

„HBRUSH hbrBackground;“ Почему фиксированные значения? Можно же задать кисть с помощью, например, CreateSolidBrush(), а потом менять ее через SetClassLong(,GCL_HBRBACKGROUND,)


Дата: Июл 2, 2004 19:38:37

Понял, а то я пытался hBrush пристегнуть к RegisterClassEx, забыв о SetClassLong. Спасибо.


Дата: Июл 3, 2004 02:04:14

cresta
принимает фиксированные значения

Читать надо внимательнее:

WNDCLASSEX.hbrBackground:
Handle to the class background brush. This member can be a handle to the physical brush to be used for painting the background, or it can be a color value. A color value must be one of the following standard system colors (the value 1 must be added to the chosen color).


Дата: Июл 3, 2004 03:16:39

cresta
„Понял, а то я пытался hBrush пристегнуть к RegisterClassEx, забыв о SetClassLong.“
Какой SetClassLong?! Это значение можно присваивать и начальной структуре WNDCLASSEX.


Дата: Июл 3, 2004 03:37:11

Quantum, а почему потом нельзя? :-) На то и нужна SetClassLong(), чтобы изменять WNDCLASSEX класса!


Дата: Июл 3, 2004 04:28:14

rsrc
чтобы изменять
Вот именно, что изменять. Зачем делать работу двумя функциями, если можно то же самое сделать с помощью одной? Усложнять себе жизнь?


Дата: Июл 3, 2004 05:42:32

Toxic
Зачем делать работу двумя функциями
Например, требуется менять фон, не регистрировать же каждый раз новый класс и не создавать новое окно вместо старого.
;-) Гибчее надо быть.


Дата: Июл 3, 2004 06:12:48

q_q
Опять непонятки! :(
Здесь имелся в виду вызов SetClassLong сразу после RegisterClassEx для установки кисти, вместо того, чтобы сделать это внутри WNDCLASSEX.
А про способы употребления SetClassLong мне известно. Мы гибчее, чем вы думаете. :)))


Дата: Июл 3, 2004 06:33:13

Toxic
RegisterClassEx тут не причем. Если окно создано, то его класс уже зарегистрирован. SetCalssLong/SetClassLongPtr можно вызывать пока существует окно.


1850569684__Demo4Toxic.rar


Дата: Июл 3, 2004 06:50:17

q_q
Как это не причем? Человек сказал, что ему надо при регистрации класса указать свою кисть, у него это не получилось и он для этого вызвал SetClassLong. А я и Quantum сказали ему, что данная операция проводится без использования SetClassLong.


Дата: Июл 3, 2004 07:06:33 · Поправил: q_q

Toxic
Мое "не причем" относится к твоему "способы употребления SetClassLong".
Мое "Гибчее надо быть" относится к тому, что при помощи SetClassLong + GCL_HBRBACKGROUND фон можно менять гибчее.

Человек сказал, что ему надо ...
А еще написал: "или ещё каким способом".


Дата: Июл 3, 2004 07:29:19

q_q
Я ответил на его первый вопрос, т.е. что SetClassLong в его случае не нужен. А ты стал мне говорить про способы его употребления(посты "не причем" и "гибчее"). Зачем? Просветить меня - так я это знаю, а если "или ещё каким способом" - так это не ко мне надо было обращаться, а к автору топика.


Дата: Июл 3, 2004 08:01:00 · Поправил: q_q

Toxic
Зачем?
В качестве ответа на _твою_ категоричную (на мой взгляд) попытку исключить вариант с SetClassLong я продемонстрировал код, который (на мой взгляд) ни сколько не "усложняя жизнь" выполняет замену фона.

Впредь буду внимательнее.


Дата: Июл 3, 2004 14:08:58

Toxic, я читал внимательно MSDN и пробовал в wc.hbrBackground указать кисть созданную CreateSolidBrush, совершенно аналогично тому, что привел q_q :
invoke CreateSolidBrush, iColor
mov wc.hbrBackground,eax
но при таком способе у меня даже при малейшем изменении значения, передаваемого в CreateSolidBrush, цвет бэкграунда резко менялся, в некоторых случая просто до чёрного, отсюда я и решил, что можно указывать только фиксированные цвета. Чем это вызвано, я пока не разобрался, но временным выходом из данной ситуации явилось SetClassLong.

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.043