Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

За 2005-09-13

Re[4]: Tab

Здравствуйте, Victor.

Спасибо всем. Рисую...

   Виктор 2005-09-13 21:33:43 (#436695)

Re[3]: Tab

Здравствуйте !

> > 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.

Все заработает.

   2005-09-13 20:55:44 (#436682)