Re[4]: Tab
Здравствуйте, Victor.
Спасибо всем. Рисую...
← Сентябрь 2005 → | ||||||
2
|
||||||
5
|
6
|
7
|
11
|
|||
14
|
||||||
24
|
||||||
28
|
За последние 60 дней ни разу не выходила
Сайт листа:
http://codeguru.ru
Открыт:
21-09-2003
Пре-модерация: Нет
Адрес для писем в лист: comp.soft.prog.prog-list@subscribe.ru
Адрес
модератора: comp.soft.prog.prog-owner@subscribe.ru
Здравствуйте !
> > CClientDC dc(&m_wndTab);
> > dc.MoveTo(0, 0);
> > dc.LineTo(100, 100);
> Этот кусок кода, будет работать если его поместить в OnInitDialog()?
Будет, но результата не увидите, т.к. WM_INITDIALOG приходит _перед_
тем, как диалог будет виден. И отработает этот код только 1 раз.
Для того, чтобы "картинка" была постоянной, необходимо обрабатывать
сообщение WM_PAINT (визард MFC создает обработчик OnPaint) и в этом
обработчике производить отрисовку. Т.к. Вм надо рисовать на дочернем
окне диалога - на Tab-е, то код, приведенный выше надо поместить в
обработчик WM_PAINT этой табы. В терминах MFC это обычно означает:
1. Создать свой класс, понаследованный от CTabCtrl.
2. Создать в этом классе обработчик - OnPaint (2 раза кликнуть
в визарде).
3. В OnPaint реализовать код для рисования (тот же кусок что и выше,
например).
4. Осуществить сабклассинг окна своего Tab. Самый простой способ
для диалога - просто заменить класс объекта с CTab на свой.
То есть на пальцах:
1. В редкторе ресурсов кидаем на диалог контрол Tab.
2. Делаем свой класс, Tab-а (например, CMyTabCtrl), реализуем OnPaint
(см. выше).
2. В классе диалога жмем Ctrl+W, добавляем объект для контрола,
но класс объекта выбираем CMyTabCtrl.
Все заработает.