Привет!
Понадобилось мне сделать окошко в стиле таб-контрола. Это примерно так:
- справа на главном окне программы есть вертикальный ряд
управляющих кнопок (типа "Start", "Report", "Setup", "Exit");
- пользователь нажимает кнопку "Setup";
- в основной зоне окна программы появляется этот самый таб-контрол;
- в нем есть два таба: "Info" и "Config";
- при выборе каждого из них появляются нужные поля ввода и кнопки;
С этим проблем нет. Однако, мне нужно, чтобы в верхней части клиентской области таб-контрола на выделенном месте (соответственно дочерние диалоги урезаны сверху) появилась маленькая картинка (логотип) и строка текста. Эти элементы должны присутствовать на таб-контроле всегда, при любом выбранном табе.
Сначала я подумал, что это фигня. Создал свой класс:
class CSetupTabCtrl : public CTabCtrl
{
...
};
и стал пытаться на этом своем таб-контроле рисовать.
И обломался...
Причем, судя по Интернету, очень далеко не я один. Единственно, чего мне удалось добиться, так это рисования или картинки (пока без текста), или кнопок табов. Но не одновременно обоих :-) И что интересно, когда кнопки табов не рисуются, они все равно "живые", переключаются нормально.
void CSetupTabCtrl::OnPaint()
{
//// CTabCtrl::OnPaint(); <--- Если эту строку раскомментировать,
то рисуются кнопки табов, но нет картинки.
А если оставить так, то есть картинка,
но нет табов.
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
// Do not call CTabCtrl::OnPaint() for painting messages
Print_logo(dc.m_hDC, 256, 0, 0);
}
Подскажите, друзья, как эту ерунду побороть? Ведь это не должно быть очень сложно!
P.S. Я уж было подумал рисовать эти общие элементы на каждом дочернем диалоге, но ведь это совсем не спортивно и абсолютно не кошерно! :-)
Помогите, пожалуйста!