MFC的主窗口里面的一个控件如何操作TAB控件两个子页里面的控件
在MFC主窗口中操作TAB控件的两个子页里面的控件可以通过以下步骤实现:
- 在MFC主窗口的类中添加成员变量,分别表示TAB控件和两个子页。
CTabCtrl m_TabCtrl;
CDialogEx m_Page1;
CDialogEx m_Page2;
- 在主窗口的OnInitDialog()函数中,分别创建TAB控件和两个子页。
m_TabCtrl.Create(TCS_TABS | WS_CHILD | WS_VISIBLE, CRect(0, 0, 300, 200), this, 1);
m_TabCtrl.InsertItem(0, _T("Page 1"));
m_TabCtrl.InsertItem(1, _T("Page 2"));
m_Page1.Create(IDD_DIALOG_PAGE1, &m_TabCtrl);
m_Page1.SetParent(&m_TabCtrl);
m_Page1.ShowWindow(SW_SHOW);
m_Page2.Create(IDD_DIALOG_PAGE2, &m_TabCtrl);
m_Page2.SetParent(&m_TabCtrl);
m_Page2.ShowWindow(SW_HIDE);
- 在TAB控件的OnSelChange()函数中,根据当前选择的子页,显示或隐藏对应的子页。
void CMyDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)
{
int nSel = m_TabCtrl.GetCurSel();
switch (nSel)
{
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;
}
*pResult = 0;
}
- 在子页类中添加控件的成员变量,并通过DoDataExchange()函数关联控件和变量。
class CPage1 : public CDialogEx
{
public:
CPage1(CWnd* pParent = nullptr);
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_DIALOG_PAGE1 };
#endif
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
DECLARE_MESSAGE_MAP()
public:
CEdit m_Edit;
};
void CPage1::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_EDIT, m_Edit);
}
- 在子页类中添加控件的消息处理函数,对控件进行操作。
void CPage1::OnBnClickedButton()
{
CString str;
m_Edit.GetWindowText(str);
str.MakeUpper();
m_Edit.SetWindowText(str);
}
通过以上步骤,就可以在MFC主窗口中操作TAB控件的两个子页里面的控件了。在TAB控件的OnSelChange()函数中,根据当前选择的子页,显示或隐藏对应的子页,在子页类中添加控件的成员变量,并通过DoDataExchange()函数关联控件和变量,在子页类中添加控件的消息处理函数,对控件进行操作
原文地址: https://www.cveoy.top/t/topic/gonP 著作权归作者所有。请勿转载和采集!