mdi mainfarme backcolor
От: DELPHI_4  
Дата: 14.04.10 13:56
Оценка:
Всем здрасти...
Прошу помочь в одной довольно простой на первый взгляд вещи... Не знаю как это выполнить... если есть примерчики или ссылки буду очень благодарен...

Не получается, для начала, хотя бы закрасить в любой цвет фон mdi окна на WTL... акцент — не получается сделать именно на WTL... Соответственно прошу помочь закрасить серую область, которая закрашивается этим цветом по умолчанию.

Заранее благодарен.
Re: mdi mainfarme backcolor
От: rus blood Россия  
Дата: 15.04.10 06:53
Оценка:
Здравствуйте, DELPHI_4, Вы писали:

DEL>Не получается, для начала, хотя бы закрасить в любой цвет фон mdi окна на WTL... акцент — не получается сделать именно на WTL... Соответственно прошу помочь закрасить серую область, которая закрашивается этим цветом по умолчанию.


Именно на WTL?

А на чем другом у тебя получается?

Вообще, это прямое дочернее окно main frame, класса MDICLIENT.
Можно его просабклассить, и нарисовать что угодно.
Кажется, в main frame даже переменная есть для mdiclient (или это в MFC..., не помню).
Имею скафандр — готов путешествовать!
Re[2]: mdi mainfarme backcolor
От: DELPHI_4  
Дата: 15.04.10 11:42
Оценка:
Здравствуйте, rus blood, Вы писали:

RB>Здравствуйте, DELPHI_4, Вы писали:


DEL>>Не получается, для начала, хотя бы закрасить в любой цвет фон mdi окна на WTL... акцент — не получается сделать именно на WTL... Соответственно прошу помочь закрасить серую область, которая закрашивается этим цветом по умолчанию.


RB>Именно на WTL?



Да.. Имеено на WTL... Дело в том что Mainfarme по умолчанию наследуется от CMDIFrameWindowImpl... а тот уже в свою очередь как-то рисуется это самое окно (серую область)... пытался по OnPaint отрисовывать что-то... мелькает и сразу зарисовается серым... пытался запретить и незапрещать WM_ERASEBKGND
... ничего...
Re[3]: mdi mainfarme backcolor
От: rus blood Россия  
Дата: 15.04.10 13:35
Оценка: 1 (1)
Здравствуйте, DELPHI_4, Вы писали:

DEL>Да.. Имеено на WTL... Дело в том что Mainfarme по умолчанию наследуется от CMDIFrameWindowImpl... а тот уже в свою очередь как-то рисуется это самое окно (серую область)... пытался по OnPaint отрисовывать что-то... мелькает и сразу зарисовается серым... пытался запретить и незапрещать WM_ERASEBKGND

DEL>... ничего...

Потому что "серая область" — это дочернее окно main frame.
Это стандартное системное окно класса "MDICLIENT".
Т.е., иерархия окон такая:

Main Frame
— MDICLIENT
-- mdi child frames

Окно MDICLIENT специальным образом обрабатывает активацию, minimize, maximize и пр. действия дочерних mdi-фреймов.
В WTL main frame создает это окно в функции CreateMDIClient и его HWND хранится в переменной m_hWndClient.

Тебе надо взять это окно, присабкласситься к нему, и перекрывать wm-erasebkgnd у него.

PS
Это стандартное устройство MDI под windows.
Не понял, как ты раньше-то рисовал, не в WTL ???
Имею скафандр — готов путешествовать!
Re[4]: mdi mainfarme backcolor
От: DELPHI_4  
Дата: 16.04.10 12:16
Оценка:
Здравствуйте, rus blood, Вы писали:


RB>Тебе надо взять это окно, присабкласситься к нему, и перекрывать wm-erasebkgnd у него.


Спасибо за совет и обьяснения... попробую...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.