Re: Использование CTabCtrl
От: muk.msk  
Дата: 20.01.08 14:34
Оценка:
Здравствуйте, 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"));
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.