Использование CTabCtrl
От: muk.msk  
Дата: 20.01.08 14:24
Оценка:
Доброго времени суток!
Я новичок в программировании как в WTL так и интерфейса windows программ. Искал пример использования CTabCtrl в WTL, поподались примеры использующие диалоговые ресурсы. Но мне бы не хотелось их использовать. Для этого я сделал свой CTabPage класс.

class CTabPage :
public CWindowImpl<CTabPage>
{
public:
CTabPage();
~CTabPage();

DECLARE_WND_CLASS(_T("CTabPage"))

BEGIN_MSG_MAP(CTabPage)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
END_MSG_MAP()

// Handler prototypes:
// LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
// LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
// LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
BOOL PreTranslateMessage(MSG* pMsg);
LRESULT OnPaint(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
};

В нем ничего нет. Он мне нужен для имитации диалоговой страницы. В CMainFrame::OnCreate делаю следующее:
RECT rcTabCtrl;
this->GetClientRect(&rcTabCtrl);
m_TabCtrl.Create(m_hWnd, &rcTabCtrl, NULL, WS_CHILD | WS_VISIBLE); // CTabCtrl m_TabCtrl

m_Page1.Create(m_cTabView, rcDefault, 0, WS_CHILD | WS_VISIBLE); // CTabPage m_Page1;

RECT rcB = {5,5,100,100};
m_TreeView.Create(m_Page1, &rcB, NULL, WS_CHILD | WS_VISIBLE | TVS_LINESATROOT | TVS_HASLINES | TVS_HASBUTTONS); // CTreeViewEx m_TreeView;
m_TreeView.SetFont((HFONT)::GetStockObject(DEFAULT_GUI_FONT));
HTREEITEM hRoot, hItem;
hRoot = m_TreeView.InsertItem(_T("Root1"), 0, 0, TVI_ROOT, TVI_LAST);
hItem = m_TreeView.InsertItem(_T("Item1"), 2, 2, hRoot, TVI_LAST);
hItem = m_TreeView.InsertItem(_T("Item2"), 2, 2, hRoot, TVI_LAST);

m_hWndClient = m_TabCtrl;
m_Page1.ShowWindow(SW_SHOW);

И как вы уже догадались — ничего не отрисовывается Вот собственно вопрос: что я не правильно сделал или чего не доделал?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.