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