包含tab控件时,,如何让子控件跟随对话框大小变化(上)

这篇文章的生成,是在另一篇的基础上生成的,同时也是这篇博客的说明,令我修改为自己需要的类型。

该博客地址:控件随着窗口大小变化

然后说明下我的实际应用,在项目中,添加了一个tabctrl,通过其切换功能实现页面的变换,该tabctrl当然是派生类啦,但其功能却挺简单的,就是将dlg添加到tabctrl中,

class CTabPage : public CTabCtrl
{
	DECLARE_DYNAMIC(CTabPage)

	int		m_nPageCount;	//页数

public:
	CTabPage();
	virtual ~CTabPage();

	void	AddPage(CWnd* pPageWnd, LPTSTR lpTitle);	//添加选项卡
	void	ShowCurPage(UINT nShowState);				//显示当前页面
	CWnd*	GetCurPage();
public:
	afx_msg void OnTcnSelchanging(NMHDR *pNMHDR, LRESULT *pResult);
	afx_msg void OnTcnSelchange(NMHDR *pNMHDR, LRESULT *pResult);

	DECLARE_MESSAGE_MAP()
};
当然,这个类也不是我写的,还是拿别人的来用,但应该简单,且初步实现了我最开始要的功能,我就开始使用了,并且还可以在此基础上进行扩展,逐步修改为自己需要的类型。
CTabPage::CTabPage()
{
	m_nPageCount	= 0;
}

CTabPage::~CTabPage()
{
}

void CTabPage::AddPage(CWnd *pPageWnd, LPTSTR lpTitle)
{
	TCITEM	itemPage;

	itemPage.mask		= TCIF_TEXT|TCIF_PARAM;
	itemPage.lParam		= LPARAM(pPageWnd);
	itemPage.pszText	= lpTitle;

	InsertItem(m_nPageCount, &itemPage);
	m_nPageCount==0?pPageWnd->ShowWindow(SW_SHOW):pPageWnd->ShowWindow(SW_HIDE);
	m_nPageCount++;
}

void CTabPage::ShowCurPage(UINT nShowState)
{
	int		nCurItem;
	TCITEM	itemCur;

	nCurItem		= GetCurSel();
	itemCur.mask	= TCIF_PARAM;

	GetItem(nCurItem, &itemCur);
	((CWnd*)itemCur.lParam)->ShowWindow(nShowState);
}
CWnd*	CTabPage::GetCurPage()
{
	int		nCurItem;
	TCITEM	itemCur;

	nCurItem		= GetCurSel();
	itemCur.mask	= TCIF_PARAM;

	GetItem(nCurItem, &itemCur);
	return	((CWnd*)itemCur.lParam);
}

BEGIN_MESSAGE_MAP(CTabPage, CTabCtrl)
	ON_NOTIFY_REFLECT(TCN_SELCHANGING, &CTabPage::OnTcnSelchanging)
	ON_NOTIFY_REFLECT(TCN_SELCHANGE, &CTabPage::OnTcnSelchange)
END_MESSAGE_MAP()

// CTabPage 消息处理程序

void CTabPage::OnTcnSelchanging(NMHDR *pNMHDR, LRESULT *pResult)
{
	ShowCurPage(SW_HIDE);

	*pResult	= 0;
}

void CTabPage::OnTcnSelchange(NMHDR *pNMHDR, LRESULT *pResult)
{
	ShowCurPage(SW_SHOW);

	*pResult	= 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值