![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: нет Всего: 6 |
Проблема в следующем.
Есть диалог, созданный функцией DialogBox. Хочу, чтобы он рисовался растровой кистью (то есть, которая получается из CreatePatternBrush). Пытаюсь это сделать так:
В этом меня беспокоит: 1) Всё это не работает! 2) Если я изменю класс, как это отразится на диалоговых окнах других программ? Они тоже будут крашены под хохлому? 3) Нужно, чтоб изменение класса сразу же сказывалось на окне. Экспериментировал с обычным окном - изменения проявляются только после того, как сверну и разверну окно. Даже с UpdateWindow(). Хотя если изменение происходит обработчике WM_INITDIALOG, то возможно оно будет видно сразу при появлении... Народ, у кого какие мысли?) |
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 8 Всего: 18 |
1) Старый браш нужно самому бать: GetClasslong(hwnd, GCW_HBRBACKGROUND);
2) Потом InvalidateRect(hwnd, NULL, TRUE); |
|||
|
||||
| Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: нет Всего: 6 |
До вообще-то старая кисть не очень-то и нужна... Важнее засандалить в класс окна новую.
Попробовал с InvalidateRect. Да, если окно обычное (не диалоговое), то всё рулит. Изменения возникают сразу же. Спасибо. Однако, диалоговое как было, так и осталось. Вот кусок процедуры диалогового окна:
Наличие или отсутствие UpdateWindow влияния не оказывает. Такое чувство, что в этом виде изменение кисти вообще не предсмотрено. Это, кажется, можно обойти, если создавать диалог через DLGTEMPLATEEX. Там задается класс окна. Но больно много возни потом с созданием кнопок и прочего... Похоже, придется окну быть некрашеным. Или можно элемент управления Picture на весь диалог... |
|||
|
||||
| Fixin |
|
||||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 8 Всего: 18 |
Блин! У тебя же диалог!
Добавлено @ 19:52 Тут старый браш тебя не волнует. Это сообщение отредактировал(а) Fixin - 15.1.2006, 19:51 |
||||
|
|||||
| Тутанхамец |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: нет Всего: 6 |
Yeeeaaah!!
Спасибо, друг! Закраска диалога через WM_CTLCOLORDLG работает в таком вот виде:
А по поводу возвращения браша - я с API работаю пару недель всего. Палюсь, вероятно, на туфте. Вот не знаю, например, почему браши и битмапы надо возвращать на их место, а не уничтожать по отдельности. Умные люди зачем-то возвращают:
Но почему нельзя сделать вот так:
Ну, или не с битмапом, а с брашью сделать так же. Что тогда? В памяти что-то останется? На глаз, вроде, работают оба варианта... Это сообщение отредактировал(а) Тутанхамец - 16.1.2006, 09:15 |
||||||
|
|||||||
| SergeCpp |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 955 Регистрация: 8.8.2005 Где: At Home Репутация: 10 Всего: 124 |
Вот так я делал, когда нужно было изменить в классе что-нибудь.
|
|||
|
||||
| Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: нет Всего: 6 |
Спасибо, учту.
|
|||
|
||||
| SergeCpp |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 955 Регистрация: 8.8.2005 Где: At Home Репутация: 10 Всего: 124 |
Да, прога для MFC.
Если нужно, могу выслать всю — пиши ПМ или на почту. |
|||
|
||||
| Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: нет Всего: 6 |
Да нет, спасибо. Суть я понял, но пока с азами классов и MFC не разберусь, мне с нее пользы не много будет.
|
|||
|
||||
| SergeCpp |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 955 Регистрация: 8.8.2005 Где: At Home Репутация: 10 Всего: 124 |
А ты её в отладчике погоняешь, и понимание быстрее придёт...
Удачи! |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |