主窗口添加三个按钮与一个picturecontrol控件,切换的多个窗口嵌入到图片控件中

在资源视图中,右键rc资源文件,添加资源,选择Diaglog窗口资源,新建

建立的子窗口,设置窗口属性
Style:child
Border:none

建立3个这种窗口
在主窗口的类中,声明三个Dialog窗口变量
在窗口类的的OnInitDialog函数中,初始化这三个变量,与资源视图中建立的窗口进行关联
BOOL CTestMultiWindowDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
//获得图片控件区域
CRect rect;
GetDlgItem(IDC_PIC1)->GetClientRect(&rect);
//IDD_DIALOG1是子窗口1的ID,将变量与子窗口1建立关联,IDC_PIC1是图片控件的ID,它将作为父窗口
childWindow_1.Create(IDD_DIALOG1,GetDlgItem(IDC_PIC1));
//调整窗口位置
childWindow_1.SetWindowPos(NULL,rect.left,rect.top,rect.Width(),rect.Height(),SWP_SHOWWINDOW);
childWindow_2.Create(IDD_DIALOG2,GetDlgItem(IDC_PIC1));
childWindow_2.SetWindowPos(NULL,rect.left,rect.top,rect.Width(),rect.Height(),SWP_SHOWWINDOW);
childWindow_3.Create(IDD_DIALOG3,GetDlgItem(IDC_PIC1));
childWindow_3.SetWindowPos(NULL,rect.left,rect.top,rect.Width(),rect.Height(),SWP_SHOWWINDOW);
//默认显示第一个窗口
childWindow_1.ShowWindow(true);
childWindow_2.ShowWindow(false);
childWindow_3.ShowWindow(false);
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
如何实现点击不同按钮对窗口进行切换?对三个按钮添加点击响应函数
//切换到窗口1
void CTestMultiWindowDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
childWindow_1.ShowWindow(true);
childWindow_2.ShowWindow(false);
childWindow_3.ShowWindow(false);
}
//切换到窗口2
void CTestMultiWindowDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
childWindow_1.ShowWindow(false);
childWindow_2.ShowWindow(true);
childWindow_3.ShowWindow(false);
}
//切换到窗口3
void CTestMultiWindowDlg::OnBnClickedButton3()
{
// TODO: 在此添加控件通知处理程序代码
childWindow_1.ShowWindow(false);
childWindow_2.ShowWindow(false);
childWindow_3.ShowWindow(true);
}
效果:

对于自定义窗体类,需要将变量类型设置为对应的类才会表现出自定义类的特征