MFC中Tab控件各页面间“通信”问题
已完成Tab基本功能还想在Tab的第一个页面(子对话框)上放一个button在第二个页面(子对话框)上放一个编辑框点击button会在编辑框上显示Hello字符串即页面间...
已完成Tab基本功能 还想在Tab的第一个页面(子对话框)上放一个button 在第二个页面(子对话框)
上放一个编辑框 点击button会在编辑框上显示Hello字符串 即页面间通信问题
具体Tab完成步骤如下
1.基于对话框程序,在主对话框上拖放一Tab Control控件,为Tab控件创建成员变量m_tab。
2.添加两个子对话框,属性设“child,none”。继承自DIALOG类的对话框。分别为两个对话框添加两个新类“CPage1, CPage2”。
3.为主对话框类 添加两个成员变量,CPage1 page1; CPage2 page2。
4.主对话框类的OnInitDialog添加如下代码。
BOOL CTabSampleDlg::OnInitDialog()
{
……
TCITEM tc1,tc2;
tc1.mask = TCIF_TEXT;
tc1.pszText = "第一页";
tc2.mask = TCIF_TEXT;
tc2.pszText = "第二页";
m_tab.InsertItem(0, &tc1);
m_tab.InsertItem(1, &tc2);
CRect rec;
m_tab.GetClientRect(&rec);
rec.bottom -= 1;
rec.left += 1;
rec.top += 20;
rec.right -= 2;
m_page1.Create(IDD_DIALOG1, GetDlgItem(IDC_TAB));
m_page2.Create(IDD_DIALOG2, GetDlgItem(IDC_TAB));
m_page1.MoveWindow(&rec);
m_page2.MoveWindow(&rec);
m_page1.ShowWindow(SW_SHOW);
m_page2.ShowWindow(SW_HIDE);
}
5. 为主对话框上的TabControl 控件添加 OnSelchangeTab 事件, 添加代码如下。
void CTabSampleDlg::OnSelchangeTab(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
switch (m_tab.GetCurSel())
{
case 0:
m_page1.ShowWindow(SW_SHOW);
m_page2.ShowWindow(SW_HIDE);
break;
case 1:
m_page1.ShowWindow(SW_HIDE);
m_page2.ShowWindow(SW_SHOW);
break;
default:
break;
}
*pResult = 0;
}
以上代码无问题
请问如何完成剩下的Tab各页面间“通信”问题 谢谢! 展开
上放一个编辑框 点击button会在编辑框上显示Hello字符串 即页面间通信问题
具体Tab完成步骤如下
1.基于对话框程序,在主对话框上拖放一Tab Control控件,为Tab控件创建成员变量m_tab。
2.添加两个子对话框,属性设“child,none”。继承自DIALOG类的对话框。分别为两个对话框添加两个新类“CPage1, CPage2”。
3.为主对话框类 添加两个成员变量,CPage1 page1; CPage2 page2。
4.主对话框类的OnInitDialog添加如下代码。
BOOL CTabSampleDlg::OnInitDialog()
{
……
TCITEM tc1,tc2;
tc1.mask = TCIF_TEXT;
tc1.pszText = "第一页";
tc2.mask = TCIF_TEXT;
tc2.pszText = "第二页";
m_tab.InsertItem(0, &tc1);
m_tab.InsertItem(1, &tc2);
CRect rec;
m_tab.GetClientRect(&rec);
rec.bottom -= 1;
rec.left += 1;
rec.top += 20;
rec.right -= 2;
m_page1.Create(IDD_DIALOG1, GetDlgItem(IDC_TAB));
m_page2.Create(IDD_DIALOG2, GetDlgItem(IDC_TAB));
m_page1.MoveWindow(&rec);
m_page2.MoveWindow(&rec);
m_page1.ShowWindow(SW_SHOW);
m_page2.ShowWindow(SW_HIDE);
}
5. 为主对话框上的TabControl 控件添加 OnSelchangeTab 事件, 添加代码如下。
void CTabSampleDlg::OnSelchangeTab(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
switch (m_tab.GetCurSel())
{
case 0:
m_page1.ShowWindow(SW_SHOW);
m_page2.ShowWindow(SW_HIDE);
break;
case 1:
m_page1.ShowWindow(SW_HIDE);
m_page2.ShowWindow(SW_SHOW);
break;
default:
break;
}
*pResult = 0;
}
以上代码无问题
请问如何完成剩下的Tab各页面间“通信”问题 谢谢! 展开
2个回答
展开全部
为主对话框类添加一个公有成员CString变量m_strEdt标识文本框的值。
为按钮添加单击响应。加入语句:
CTabSampleDlg *pDlg = GetParent()->GetParent();
pDlg->m_strEdt = _T("HELLO");
OnSelchangeTab 事件代码如下
void CTabSampleDlg::OnSelchangeTab(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
switch (m_tab.GetCurSel())
{
case 0:
m_page1.ShowWindow(SW_SHOW);
m_page2.ShowWindow(SW_HIDE);
break;
case 1:
m_page1.ShowWindow(SW_HIDE);
m_page2.ShowWindow(SW_SHOW);
m_page2.SetDlgItemText(文本框控件ID,m_strEDt);
break;
default:
break;
}
*pResult = 0;
}
为按钮添加单击响应。加入语句:
CTabSampleDlg *pDlg = GetParent()->GetParent();
pDlg->m_strEdt = _T("HELLO");
OnSelchangeTab 事件代码如下
void CTabSampleDlg::OnSelchangeTab(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
switch (m_tab.GetCurSel())
{
case 0:
m_page1.ShowWindow(SW_SHOW);
m_page2.ShowWindow(SW_HIDE);
break;
case 1:
m_page1.ShowWindow(SW_HIDE);
m_page2.ShowWindow(SW_SHOW);
m_page2.SetDlgItemText(文本框控件ID,m_strEDt);
break;
default:
break;
}
*pResult = 0;
}
展开全部
请问你是怎样实现的呢,我是这样实现的
CTabSampleDlg *pDlg = GetParent()->GetParent();
pDlg->m_page2.SetDlgItemText(文本框控件ID,m_strEDt);
行不行,跟你的一样 不?
但是我遇到了一个 问题还请前辈指教,就是
CTabSampleDlg *pDlg = GetParent()->GetParent();
之后我获得的pDlg指针的值是0,这是怎么回事还请解答
CTabSampleDlg *pDlg = GetParent()->GetParent();
pDlg->m_page2.SetDlgItemText(文本框控件ID,m_strEDt);
行不行,跟你的一样 不?
但是我遇到了一个 问题还请前辈指教,就是
CTabSampleDlg *pDlg = GetParent()->GetParent();
之后我获得的pDlg指针的值是0,这是怎么回事还请解答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询