⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tabdlg.cpp

📁 《Visual C++ MFC编程实例》配套代码,如果大家正在学习此教程
💻 CPP
字号:
// TabDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Styles.h"
#include "TabDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CTabDlg dialog


CTabDlg::CTabDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CTabDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTabDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CTabDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTabDlg)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CTabDlg, CDialog)
	//{{AFX_MSG_MAP(CTabDlg)
	ON_WM_CREATE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTabDlg message handlers

#define NSTYLES 8
#define XSPACING 7
#define YSPACING 20

int CTabDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CDialog::OnCreate(lpCreateStruct) == -1)
		return -1;

	UINT styles[NSTYLES]={ 
	0,
	TCS_BOTTOM           ,
	TCS_VERTICAL         ,
	TCS_RIGHT|TCS_VERTICAL ,
	TCS_BUTTONS          ,
	TCS_MULTILINE        ,
	TCS_FIXEDWIDTH       ,
	TCS_SCROLLOPPOSITE   
	};

	CString sStyles[NSTYLES]={ 
	"Default",
	"TCS_BOTTOM",
	"TCS_VERTICAL",
	"TCS_RIGHT | TCS_VERTICAL",
	"TCS_BUTTONS",
	"TCS_MULTILINE",
	"TCS_FIXEDWIDTH",
	"TCS_SCROLLOPPOSITE"
	};

// undrawn
//	TCS_OWNERDRAWFIXED   ,
//	TCS_TOOLTIPS         ,
//	TCS_FOCUSNEVER       
//	TCS_MULTISELECT      ,
//	"TCS_FORCEICONLEFT    ",
//	"TCS_FORCELABELLEFT   ",
//	"TCS_SINGLELINE       ",
//	"TCS_RIGHTJUSTIFY     ",
//	"TCS_RAGGEDRIGHT      ",
//	"TCS_FOCUSONBUTTONDOWN"

	CSize szStatic(160,40);
	CSize szTab(200,120);
	CRect rect(9999,-szTab.cy+YSPACING,0,0);

	char pszTab1[]="Tab1";
	char pszTab2[]="Tab2";
	char pszTab3[]="Tab3";
	char pszTab4[]="Tab4";
	char pszTab5[]="Tab5";
	char pszTab6[]="Tab6";

	m_imageList.Create(IDB_IMAGE_BITMAP, 15, 1, RGB(0,0,0));

	int i=0;
	while (i<NSTYLES)
	{
		rect.left=XSPACING;
		rect.top+=szTab.cy+YSPACING;

		for (int j=0;j<2&&i<NSTYLES;j++)
		{
			CStatic *pStatic=new CStatic;
			m_staticList.AddTail(pStatic);
			CTabCtrl *pTab=new CTabCtrl;
			m_TabList.AddTail(pTab);
			rect.right=rect.left+szStatic.cx;
			rect.bottom=rect.top+szStatic.cy;
			pStatic->Create(sStyles[i],SS_RIGHT|WS_VISIBLE|WS_CHILD,rect,this);
			rect.OffsetRect(szStatic.cx+XSPACING,0);
			rect.right=rect.left+szTab.cx;
			rect.bottom=rect.top+szTab.cy;
			pTab->Create(styles[i]|WS_VISIBLE|WS_CHILD, rect,this,1000+i );
			rect.OffsetRect(szTab.cx+XSPACING,0);

		// add some tabs
			pTab->SetImageList(&m_imageList);
			TC_ITEM tc;
			tc.mask=TCIF_TEXT|TCIF_IMAGE;
			tc.pszText=pszTab1;
			tc.iImage=0;
			pTab->InsertItem(0,&tc);
			tc.pszText=pszTab2;
			tc.iImage=1;
			pTab->InsertItem(1,&tc);
			tc.pszText=pszTab3;
			tc.iImage=2;
			pTab->InsertItem(2,&tc);
			tc.pszText=pszTab4;
			tc.iImage=3;
			pTab->InsertItem(3,&tc);
			tc.pszText=pszTab5;
			tc.iImage=4;
			pTab->InsertItem(4,&tc);
			tc.pszText=pszTab6;
			tc.iImage=5;
			pTab->InsertItem(5,&tc);



			i++;
		}
	}
	
	return 0;
}

void CTabDlg::PostNcDestroy() 
{
	while (m_TabList.GetCount())
	{
		delete m_TabList.RemoveHead();
	}
	while (m_staticList.GetCount())
	{
		delete m_staticList.RemoveHead();
	}
	
	CDialog::PostNcDestroy();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -