效果展示
操作
先创建Tab Control控件
这里略过
在资源视图里双击控件或者直接在对话框类里声明函数和控件
CDlgTest.h
class CDlgTest : public CDialogEx
{
CTabCtrl m_TabCtrl;// 声明控件变量
int m_iSel = 0;// Tab Control默认选择第0
//略略略
afx_msg void OnTcnSelchangeTab(NMHDR* pNMHDR, LRESULT* pResult);// 声明函数
//略略略
}
接着来到cpp里
CDlgTest.cpp
找到函数 void CDlgTest::DoDataExchange(CDataExchange* pDX)
关联我们的Tab Control控件和声明的变量m_TabCtrl
void CDlgTest::DoDataExchange(CDataExchange* pDX)
{
//略略
DDX_Control(pDX, IDC_TAB, m_TabCtrl);// 关联资源
}
找到函数 void CDlgTest::OnInitDialog()
在对话框初始化时添加Tab Control选项
void CDlgTest::OnInitDialog()
{
//略略略
m_tabCtrl.InsertItem(0, _T("图片1"));
m_tabCtrl.InsertItem(1, _T("图片2"));
//略略略
}
找到绘制图片的函数,这里我的函数是 void CDlgTest::OnPaint()
不会绘图的可以参考我的另一篇文章MFC(C++)对话框里显示图片
void CDlgTest::OnPaint()
{
CPaintDC dc(this);
CDC memDC;
memDC.CreateCompatibleDC(&dc);
CBitmap bmp;
switch (m_iSel)
{
case 0:
{
bmp.LoadBitmap(IDB_BITMAP1);
break;
}
case 1:
{
bmp.LoadBitmap(IDB_BITMAP2);
break;
}
default:
break;
}
BITMAP bm;
bmp.GetBitmap(&bm);
CBitmap* pOldBitmap = memDC.SelectObject(&bmp);
dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &memDC, 0, 0, SRCCOPY);
memDC.SelectObject(pOldBitmap);
CDialogEx::OnPaint();
}
定义刚刚声明的函数 OnTcnSelchangeTab
void CDlgTest::OnTcnSelchangeTab(NMHDR* pNMHDR, LRESULT* pResult)
{
m_iSel = m_tabCtrl.GetCurSel();// 获取当前所选择的项
Invalidate();// 重绘图片
}
ps: Invalidate() 这个函数非常重要,如果没有这个函数画过的图就不会消失。