Здравствуйте, muk.msk, Вы писали:
MM>Доброго времени суток!
MM>Я новичок в программировании как в WTL так и интерфейса windows программ. Искал пример использования CTabCtrl в WTL, поподались примеры использующие диалоговые ресурсы. Но мне бы не хотелось их использовать. Для этого я сделал свой CTabPage класс.
MM>class CTabPage :
MM> public CWindowImpl<CTabPage>
MM>{
MM>public:
MM> CTabPage();
MM> ~CTabPage();
MM> DECLARE_WND_CLASS(_T("CTabPage"))
MM> BEGIN_MSG_MAP(CTabPage)
MM> MESSAGE_HANDLER(WM_PAINT, OnPaint)
MM> END_MSG_MAP()
MM> // Handler prototypes:
MM> // LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
MM> // LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
MM> // LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
MM> BOOL PreTranslateMessage(MSG* pMsg);
MM> LRESULT OnPaint(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
MM>};
MM>В нем ничего нет. Он мне нужен для имитации диалоговой страницы. В CMainFrame::OnCreate делаю следующее:
MM>RECT rcTabCtrl;
this->>GetClientRect(&rcTabCtrl);
MM>m_TabCtrl.Create(m_hWnd, &rcTabCtrl, NULL, WS_CHILD | WS_VISIBLE); // CTabCtrl m_TabCtrl
MM>m_Page1.Create(m_cTabView, rcDefault, 0, WS_CHILD | WS_VISIBLE); // CTabPage m_Page1;
MM>RECT rcB = {5,5,100,100};
MM>m_TreeView.Create(m_Page1, &rcB, NULL, WS_CHILD | WS_VISIBLE | TVS_LINESATROOT | TVS_HASLINES | TVS_HASBUTTONS); // CTreeViewEx m_TreeView;
MM>m_TreeView.SetFont((HFONT)::GetStockObject(DEFAULT_GUI_FONT));
MM>HTREEITEM hRoot, hItem;
MM>hRoot = m_TreeView.InsertItem(_T("Root1"), 0, 0, TVI_ROOT, TVI_LAST);
MM>hItem = m_TreeView.InsertItem(_T("Item1"), 2, 2, hRoot, TVI_LAST);
MM>hItem = m_TreeView.InsertItem(_T("Item2"), 2, 2, hRoot, TVI_LAST);
MM>m_hWndClient = m_TabCtrl;
MM>m_Page1.ShowWindow(SW_SHOW);
MM>И как вы уже догадались — ничего не отрисовывается
Вот собственно вопрос: что я не правильно сделал или чего не доделал?
Да, пропустил строчку m_TabCtrl.InsertItem(0, _T("Page1"));