15,979
社区成员
发帖
与我相关
我的任务
分享
BOOL CLhwyDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
//TODO: Add extra initialization here
m_Tab.AddPage("班级成绩", &m_bdlg, IDD_BADIALOG);
m_Tab.AddPage("年级成绩", &m_ndlg, IDD_NADIALOG);
m_Tab.AddPage("参数设置", &m_cdlg, IDD_CADIALOG);
m_Tab.Show();
return TRUE; // return TRUE unless you set the focus to a control
}
在tabsheet类中定义如下函数:
BOOL CTabSheet::Addpage(LPCTSTR title, CDialog *pDialog,UINT ID)
{
if( MAXPAGE == m_nNumOfPages )
return FALSE;
m_nNumOfPages++;
m_pPages[m_nNumOfPages-1] = pDialog;
m_IDD[m_nNumOfPages-1] = ID;
m_Title[m_nNumOfPages-1] = title;
return TRUE;
}
void CTabSheet::SetRect()
{
CRect tabRect, itemRect;
int nX, nY, nXc, nYc;
GetClientRect(&tabRect);
GetItemRect(0, &itemRect);
nX=itemRect.left;
nY=itemRect.bottom+1;
nXc=tabRect.right-itemRect.left-2;
nYc=tabRect.bottom-nY-2;
m_pPages[0]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_SHOWWINDOW);
for( int nCount=1; nCount < m_nNumOfPages; nCount++ )
m_pPages[nCount]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_HIDEWINDOW);
}
void CTabSheet::Show()
{
for( int i=0; i < m_nNumOfPages; i++ )
{
m_pPages[i]->Create( m_IDD[i], this );
InsertItem( i, m_Title[i] );
}
m_pPages[0]->ShowWindow(SW_SHOW);
for( i=1; i < m_nNumOfPages; i++)
m_pPages[i]->ShowWindow(SW_HIDE);
SetRect();
}
void CTabSheet::OnLButtonDown(UINT nFlags, CPoint point)
{
CTabCtrl::OnLButtonDown(nFlags, point);
if(m_nCurrentPage != GetCurFocus())
{
m_pPages[m_nCurrentPage]->ShowWindow(SW_HIDE);
m_nCurrentPage=GetCurFocus();
m_pPages[m_nCurrentPage]->ShowWindow(SW_SHOW);
// m_pPages[m_nCurrentPage]->SetFocus();
}
}
int CTabSheet::SetCurSel(int nItem)
{
if( nItem < 0 || nItem >= m_nNumOfPages)
return -1;
int ret = m_nCurrentPage;
if(m_nCurrentPage != nItem )
{
m_pPages[m_nCurrentPage]->ShowWindow(SW_HIDE);
m_nCurrentPage = nItem;
m_pPages[m_nCurrentPage]->ShowWindow(SW_SHOW);
// m_pPages[m_nCurrentPage]->SetFocus();
CTabCtrl::SetCurSel(nItem);
}
return ret;
}
int CTabSheet::GetCurSel()
{
return CTabCtrl::GetCurSel();
}
BOOL CTabSheet::AddPage(LPCTSTR title, CDialog *pDialog,UINT ID)
{
if( MAX_PAGE == m_nNumOfPages) return FALSE;
//
m_pPages[m_nNumOfPages] = pDialog;
//
pDialog->Create(ID, this);
InsertItem(m_nNumOfPages, title);
//
CRect tabRect;
GetClientRect(&tabRect);
tabRect.DeflateRect(2,2);
tabRect.top +=26;
m_pPages[m_nNumOfPages]->MoveWindow(&tabRect);
// default page 0
if(m_nNumOfPages==0)
{
m_pPages[0]->ShowWindow(SW_SHOW);
m_pPages[0]->SetFocus();
}
// 0,1,2.3
m_nNumOfPages++;
//
return TRUE;
}
void CTabSheet::OnSelchange(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
static lastSel=0;
// afxDump << lastSel << ";" << GetCurFocus() << "\n";
if(lastSel != GetCurFocus())
{
m_pPages[lastSel]->ShowWindow(SW_HIDE);
lastSel=GetCurFocus();//
m_pPages[lastSel]->ShowWindow(SW_SHOW);
m_pPages[lastSel]->SetFocus();
}
*pResult = 0;
}
初始化
// TODO: Add extra initialization here
if(!m_Tab.AddPage("班级成绩", &m_bdlg, IDD_BADIALOG))
return FALSE;
if(!m_Tab.AddPage("年级成绩", &m_ndlg, IDD_NADIALOG))
return FALSE;
if(!m_Tab.AddPage("参数设置", &m_cdlg, IDD_CADIALOG))
return FALSE;
// not : m_Tab.SetCurSel(2);
m_Tab.SetCurFocus(2);
// CTabSheet message handlers
BOOL CTabSheet::AddPage(LPCTSTR title, CDialog *pDialog,UINT ID)
{
if( 3 == m_nNumOfPages) return FALSE;
//
m_pPages[m_nNumOfPages] = pDialog;
m_IDD[m_nNumOfPages] = ID;
m_Title[m_nNumOfPages] = title;
m_pPages[m_nNumOfPages]->Create(m_IDD[m_nNumOfPages], this);
InsertItem(m_nNumOfPages, m_Title[m_nNumOfPages]);
//
CRect tabRect;
GetClientRect(&tabRect);
tabRect.DeflateRect(2,2);
tabRect.top +=26;
m_pPages[m_nNumOfPages]->SetParent(this);
m_pPages[m_nNumOfPages]->MoveWindow(&tabRect);
if(m_nNumOfPages==0)
{
m_pPages[m_nNumOfPages]->ShowWindow(SW_SHOW);
m_pPages[m_nNumOfPages]->SetFocus();
}
// 0,1,2.3
m_nNumOfPages++;
//
return TRUE;
}
// CTabSheet message handlers
BOOL CTabSheet::AddPage(LPCTSTR title, CDialog *pDialog,UINT ID)
{
if( 4 == m_nNumOfPages) return FALSE;
//
m_nNumOfPages++;
//
m_pPages[m_nNumOfPages-1] = pDialog;
m_IDD[m_nNumOfPages-1] = ID;
m_Title[m_nNumOfPages-1] = title;
return TRUE;
}
//
void CTabSheet::SetRect()
{
CRect tabRect;
GetClientRect(&tabRect);
tabRect.DeflateRect(2,2);
tabRect.top +=26;
for( int nCount=0; nCount < m_nNumOfPages; nCount++ )
{
m_pPages[nCount]->SetParent(this);
m_pPages[nCount]->MoveWindow(&tabRect);
}
}
//
void CTabSheet::Show()
{
for( int i=0; i < m_nNumOfPages; i++ )
{
m_pPages[i]->Create(m_IDD[i], this);
InsertItem( i, m_Title[i] );
}
for( i=0; i < m_nNumOfPages; i++)
{
m_pPages[i]->ShowWindow(SW_SHOW);
}
//
SetRect();
}
//
void CTabSheet::OnLButtonDown(UINT nFlags, CPoint point)
{
CTabCtrl::OnLButtonDown(nFlags, point);
if(m_nCurrentPage != GetCurFocus())
{
m_pPages[m_nCurrentPage]->ShowWindow(SW_HIDE);
m_nCurrentPage=GetCurFocus();
m_pPages[m_nCurrentPage]->ShowWindow(SW_SHOW);
m_pPages[m_nCurrentPage]->SetFocus();
}
}