xref: /MusicPlayer2/MusicPlayer2/CTabCtrlEx.cpp (revision 3fcb9caeba12b46eda7afc0ab89d14137545c487)
1 // CTabCtrlEx.cpp: 实现文件
2 //
3 
4 #include "stdafx.h"
5 #include "MusicPlayer2.h"
6 #include "CTabCtrlEx.h"
7 
8 
9 // CTabCtrlEx
10 
11 IMPLEMENT_DYNAMIC(CTabCtrlEx, CTabCtrl)
12 
13 CTabCtrlEx::CTabCtrlEx()
14 {
15 
16 }
17 
18 CTabCtrlEx::~CTabCtrlEx()
19 {
20 }
21 
22 void CTabCtrlEx::AddWindow(CWnd* pWnd, LPCTSTR lable_text)
23 {
24 	if (pWnd == nullptr || pWnd->GetSafeHwnd() == NULL)
25 		return;
26 
27 	InsertItem(m_tab_list.size(), lable_text);
28 
29 	pWnd->SetParent(this);
30 	pWnd->MoveWindow(m_tab_rect);
31 
32 	m_tab_list.push_back(pWnd);
33 }
34 
35 void CTabCtrlEx::SetCurTab(int index)
36 {
37 	SetCurSel(index);
38 
39 	int tab_size = m_tab_list.size();
40 	for (int i = 0; i < tab_size; i++)
41 	{
42 		if (i == index)
43 		{
44 			m_tab_list[i]->ShowWindow(SW_SHOW);
45 			m_tab_list[i]->SetFocus();
46 		}
47 		else
48 		{
49 			m_tab_list[i]->ShowWindow(SW_HIDE);
50 		}
51 	}
52 }
53 
54 
55 BEGIN_MESSAGE_MAP(CTabCtrlEx, CTabCtrl)
56 	ON_NOTIFY_REFLECT(TCN_SELCHANGE, &CTabCtrlEx::OnTcnSelchange)
57 END_MESSAGE_MAP()
58 
59 
60 
61 // CTabCtrlEx 消息处理程序
62 
63 
64 
65 
66 void CTabCtrlEx::OnTcnSelchange(NMHDR *pNMHDR, LRESULT *pResult)
67 {
68 	// TODO: 在此添加控件通知处理程序代码
69 	int tab_selected = GetCurSel();
70 	SetCurTab(tab_selected);
71 
72 	*pResult = 0;
73 }
74 
75 
76 void CTabCtrlEx::PreSubclassWindow()
77 {
78 	// TODO: 在此添加专用代码和/或调用基类
79 
80 	//计算子窗口的位置
81 	GetClientRect(m_tab_rect);
82 	CRect rcTabItem;
83 	GetItemRect(0, rcTabItem);
84 	m_tab_rect.top += rcTabItem.Height() + 4;
85 	m_tab_rect.left += 4;
86 	m_tab_rect.bottom -= 4;
87 	m_tab_rect.right -= 4;
88 
89 	CTabCtrl::PreSubclassWindow();
90 }
91