![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
NUCLEuS |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 12.7.2005 Репутация: нет Всего: нет |
Привет всем!
Такой вопрос - как с помощью Win32API поменять цвет окна, которое не создаётся с помощью CreateWindow (тогда бы можно было заполнить структуру класса и указать цвет) а вызывается из ресурсов с помощью DialogBoxParamA. Подозреваю что нужно обрабатывать сообщение WM_CTLCOLORDLG, но у меня чёт ничего не получается ![]() |
|||
|
||||
Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
Обрабатывать WM_ERASEBKGND
|
|||
|
||||
NUCLEuS |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 12.7.2005 Репутация: нет Всего: нет |
![]() ![]() ![]() |
|||
|
||||
NUCLEuS |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 12.7.2005 Репутация: нет Всего: нет |
Если Вам не трудно, дайте пожалуйста код обработки... Допустим чтобы сделать окно с идентификатором MainWnd чёрным.
![]() |
|||
|
||||
Rouse_ |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
Ну к примеру вот так:
Тут фон диалога отрисовывается в стиле ХР (если конечно подключен манифест). ЗЫ: В самом начале нужен вызов InitThemeLibrary; Добавлено @ 16:27 ЗЫ: В твоем случае это можно сделать вот так:
|
||||
|
|||||
NUCLEuS |
|
||||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 12.7.2005 Репутация: нет Всего: нет |
Rouse_, Не, UxTheme у меня нет, а со вторым способом вообще болт.
Пришлось брать SDK и разбирать самому ![]() Как я и предполагал, нужно было обрабатывать сообщение WM_CTLCOLORDLG, вот что про него написано в SDK "Это сообщение посылается диалоговому окну ПЕРЕД тем как Винда рисует это окно...". Короч, вот как я сделал: это обработчик:
а это в начале тела программы, ДО вызова диалога
Вот и всё ![]() |
||||
|
|||||
Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
Если тоит семерка - этот модуль у тебя есть, а если не получился второй пример, ну тут даже не знаю как он мог не получиться |
|||
|
||||
NUCLEuS |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 12.7.2005 Репутация: нет Всего: нет |
Rouse_, стоит D6
![]() А насчёт второго способа - попробуй сам - окно не перерисовывается. А потом попробуй мой способ - у меня например всё ок ![]() ![]() |
|||
|
||||
Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
Как ты думаешь, я код сюда из головы рисую или всеже проверяю его на работоспособность? ![]() Если у тебя не перерисовывается, то это еще ни о чем не говорит ![]() Это сообщение отредактировал(а) Rouse_ - 27.4.2006, 09:34 |
|||
|
||||
NUCLEuS |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 12.7.2005 Репутация: нет Всего: нет |
Rouse_,
Думаю ты его проверяешь. Да, ты прав, наверное это что то у меня. Но мой код тоже рабочий, и к тому же гораздо меньше. |
|||
|
||||
Gnom3 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 21.7.2011 Репутация: нет Всего: нет |
Rouse_, использовал твой вариант - отлично отработало из оконной процедуры. В общем у меня засада такая: Я закрашиваю окно программы снаружи, подавая его хендл внутрь длл-ки, в которой и создана процедура обработки нескольких параметров окна, в том числе и цвета. Засада в том, что окно многослойное, закрашивается только задний фон. Вопрос - можно-ли это както обойти?
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |