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

由于是使用一个简单的tab控件,所以内容很简略;

在实际使用中,更多的处理则是交给其父窗口进行处理的,从而根据实际的项目特性进行制作。

在项目中,发现希望能够在父窗口中也能对切换标签的消息进行处理时,就需要对以下的命令进行改写;

   afx_msg void OnTcnSelchanging(NMHDR *pNMHDR, LRESULT *pResult);  
    afx_msg void OnTcnSelchange(NMHDR *pNMHDR, LRESULT *pResult);  
  
  
将其改为
	afx_msg BOOL OnTcnSelchanging(NMHDR *pNMHDR, LRESULT *pResult);
	afx_msg BOOL OnTcnSelchange(NMHDR *pNMHDR, LRESULT *pResult);
同时其反射消息定义也由原先的
    ON_NOTIFY_REFLECT(TCN_SELCHANGING, &CTabPage::OnTcnSelchanging)  
ON_NOTIFY_REFLECT(TCN_SELCHANGE, &CTabPage::OnTcnSelchange)


改为

	ON_NOTIFY_REFLECT_EX(TCN_SELCHANGING, &CTabPage::OnTcnSelchanging)
	ON_NOTIFY_REFLECT_EX(TCN_SELCHANGE, &CTabPage::OnTcnSelchange)

其实主要就是

ON_NOTIFY_REFLECT与ON_NOTIFY_REFLECT_EX
这两个宏的处理了,根据MSDN说明,同样是拦截消息,前者是拦截后自己使用,不在反馈给父窗口;而后者,则是可以在自己处理的情况下,

继续转交给父窗口进行处理的,不过,在其函数中,唯有return false时才可让父窗口接收到该消息,若是为true时,则无法令其接收到消息,所以,最终其函数改为

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

	*pResult	= 0;
	return FALSE;
}
然后在父窗口中,可以通过
	ON_NOTIFY(TCN_SELCHANGE,IDC_TAB,OnSelectChanging)
处理该tab控件消息
void	CMTSWDlg::OnSelectChanging(NMHDR* pNMHDR,LRESULT* pResult)
{
	int a = m_TabCtrl.GetCurSel();
	*pResult = 0;
}

特此记录下,方便以后使用。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值