利用命令切换Tab控件 CTabCtrl


void CXXXDlg::SwitchToPage(int nSelect)
{
	NMHDR nm; 
	nm.hwndFrom = m_ctrlTab.m_hWnd; 
	nm.code=TCN_SELCHANGE;
	m_ctrlTab.SetCurSel(nSelect); 
	m_ctrlTab.SendMessage(WM_NOTIFY,IDC_TAB_ID,(LPARAM)&nm);

// !!然后tab控件自己在OnSelChange 中处理
/*
	if(m_nTabCurSel != GetCurFocus()){
	m_ctrlTab.Page[m_nTabCurSel].ShowWindow(SW_HIDE);
	m_nTabCurSel=GetCurFocus();
	m_ctrlTab.Page[m_nTabCurSel].ShowWindow(SW_SHOW);
	m_ctrlTab.Page[m_nTabCurSel].SetFocus();
*/

}
//再写一个
void CXXXDlg::SwitchToNextPage()
{
	NMHDR nm;
	nm.hwndFrom = m_ctrlTab.m_hWnd; 
	nm.code=TCN_SELCHANGE; 

	if(m_ctrlTab.m_nTabCurSel+1 < g_nTabNum)
	{
		m_ctrlTab.SetCurSel(m_ctrlTab.m_nTabCurSel+1);
		m_ctrlTab.SendMessage(WM_NOTIFY,IDC_TAB_ID,(LPARAM)&nm);
	}
	else
	{//循环处理
		m_ctrlTab.SetCurSel(0);
		m_ctrlTab.SendMessage(WM_NOTIFY,IDC_TAB_ID,(LPARAM)&nm);
	}
}




/* 使用方法: 添加对话框资源,并且各个子对话框资源的属性应设置为:Style为Child,Border为None。 为这些对话框建立类(直接从CDialog继承)如CPage1、CPage2…… 在主对话框的类中添加成员变量:CPage1 m_Page1;、CPage2 m_Page2;…… 在主对话框资源中,加入一个Tab Control,并且适当调整位置和大小。利用ClassWizard来为这个Tab Control创建 一个CTabSheet的控件变量m_TabSheet。 在主对话框的OnInitDialog()加入: m_TabSheet.AddPage("tab1", &m_page1, IDD_DIALOG1); m_TabSheet.AddPage("tab2", &m_page2, IDD_DIALOG2); …… 如果要给标签加上图标,在AddPage之前设置好ImageList: //为TabCtrl控件添加图标 m_imageList.Create(16, 16, ILC_COLOR32, 1, 1); CBitmap bitmap1,bitmap2; bitmap1.LoadBitmap(IDB_BITMAP1); bitmap2.LoadBitmap(IDB_BITMAP2); m_imageList.Add(&bitmap1, RGB(0,0,0)); m_imageList.Add(&bitmap2, RGB(0,0,0)); m_TabSheet.SetImageList(&m_imageList); //给TabCtrl添加页 m_TabSheet.AddPage(_T("Page1"), &m_Page1, m_Page1.IDD, 0); m_TabSheet.AddPage(_T("第二页"), &m_Page2, m_Page2.IDD, 1); 很不可思议的是,我在测试中,如果在工程中没有把TabCtrl的标签设置成左边或右边的话, 那么在运行时修改标签的位置为左边或右边时会出现问题,但是只要曾经设置过TabCtrl的标签为左边或右边后, 以后运行不管工程中的TabCtrl的标签是怎样设置的,在运行时都可以正确的修改其标签的位置。 */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值