MFC 如何点击不同的按钮后在界面同一位置显示不同的对话框内容
MFC 怎么点击不同的按钮后在界面同一位置显示不同的对话框内容

如图类似Tab控件的功能 但Tab控件按钮是固定的上下左右 不方便 所以想自己重新做个这种 我MFC新手,求指点,具体要怎么弄,如果可以,给我发个这种例子研究下更好了,好人一生平安,谢谢。
------解决思路----------------------
【更正】
还有,PictureBox要改一下ID,改成IDC_PIC1,不能用IDC_STATIC,这是一个公用的无效ID。
然后这两个变量要在头文件(CMyApp1Dlg.h)里声明,不然生存期限制会导致内存崩溃:
class CMyApp1Dlg : public CDialog {
// 加入以下代码
public:
CDIALOG1 m_InnerDialog1; // 声明子对话框
CDIALOG2 m_InnerDialog2;
};
然后在OnInitDialog里加入以下代码:
CRect rect;
m_InnerDialog1.Create(IDD_BUTTON1,this); // 创建非模态对话框,父级是自己
m_InnerDialog2.Create(IDD_BUTTON2,this); // 创建非模态对话框,父级是自己
GetDlgItem(IDC_PIC1)->GetWindowRect(&rect); // 准确定位
ScreenToClient(&rect); // 千万注意别用成ClientToScreen
m_InnerDialog1.MoveWindow(rect); // 移动到
m_InnerDialog2.MoveWindow(rect); // 移动到
m_InnerDialog1.ShowWindow(SW_SHOW); // 显式子对话框
m_InnerDialog2.ShowWindow(SW_HIDE); // 隐藏子对话框
最后在各按钮里加入以下两句即可:
m_InnerDialog1.ShowWindow(SW_HIDE); // 更改目前显式的子对话框
m_InnerDialog2.ShowWindow(SW_SHOW);
--------------------------------------------------------------------------
如果出现了错误:没有适合的默认构造函数,那么就打开CDIALOG1.cpp和CDIALOG2.CPP把那个构造函数的参数pParent后边添加默认值=NULL
CDIALOG1::CDIALOG1(CDialog *pParent = NULL) : CDialog(CDIALOG1::IDD, pParent) {
// ...
}
--------------------------------------------------------------------------
你的问题是对C++的语法不太熟悉,建议楼主回去学习一下C++的语法。
如图类似Tab控件的功能 但Tab控件按钮是固定的上下左右 不方便 所以想自己重新做个这种 我MFC新手,求指点,具体要怎么弄,如果可以,给我发个这种例子研究下更好了,好人一生平安,谢谢。
------解决思路----------------------
【更正】
还有,PictureBox要改一下ID,改成IDC_PIC1,不能用IDC_STATIC,这是一个公用的无效ID。
然后这两个变量要在头文件(CMyApp1Dlg.h)里声明,不然生存期限制会导致内存崩溃:
class CMyApp1Dlg : public CDialog {
// 加入以下代码
public:
CDIALOG1 m_InnerDialog1; // 声明子对话框
CDIALOG2 m_InnerDialog2;
};
然后在OnInitDialog里加入以下代码:
CRect rect;
m_InnerDialog1.Create(IDD_BUTTON1,this); // 创建非模态对话框,父级是自己
m_InnerDialog2.Create(IDD_BUTTON2,this); // 创建非模态对话框,父级是自己
GetDlgItem(IDC_PIC1)->GetWindowRect(&rect); // 准确定位
ScreenToClient(&rect); // 千万注意别用成ClientToScreen
m_InnerDialog1.MoveWindow(rect); // 移动到
m_InnerDialog2.MoveWindow(rect); // 移动到
m_InnerDialog1.ShowWindow(SW_SHOW); // 显式子对话框
m_InnerDialog2.ShowWindow(SW_HIDE); // 隐藏子对话框
最后在各按钮里加入以下两句即可:
m_InnerDialog1.ShowWindow(SW_HIDE); // 更改目前显式的子对话框
m_InnerDialog2.ShowWindow(SW_SHOW);
--------------------------------------------------------------------------
如果出现了错误:没有适合的默认构造函数,那么就打开CDIALOG1.cpp和CDIALOG2.CPP把那个构造函数的参数pParent后边添加默认值=NULL
CDIALOG1::CDIALOG1(CDialog *pParent = NULL) : CDialog(CDIALOG1::IDD, pParent) {
// ...
}
--------------------------------------------------------------------------
你的问题是对C++的语法不太熟悉,建议楼主回去学习一下C++的语法。