|
|
| Посл.отвђт | Сообщен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. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.087 |