将一个对话框嵌入另一个对话框;
假设新建了一个对话框CIN类,当前主对话框CMyDlg类,将CIN对话框嵌入CMyDlg主对话框;
方法有两个:
1:
#include "IN.h"
CIN g_in;
void CMyDlg::OnButton1() //直接创建到主对话框中;
{
// TODO: Add your control notification handler code here
g_in.Create(CIN::IDD ,this/**/ ); // g_in.Create(CIN::IDD ,/*this*/ ); //在设置嵌入窗口Style前,先创建嵌入窗口,不要指定父窗口, ModifyStyle后载指定父窗口;
g_in.ModifyStyle(g_in.GetStyle(),WS_CHILD,0);//g_in.ModifyStyle(WS_POPUP,WS_CHILD,0);
g_in.SetParent(this);
g_in.ShowWindow(SW_SHOWNA);
g_in.MoveWindow(0,0,300,300);
}
2:
//方法一:
void CMyDlg::OnButton2() //创建一个非模态对话框显示了,可以通过修改类型重新嵌入到主对话框中;
{
// TODO: Add your control notification handler code here
//1:创建一个默认类型的窗口,可以正常显示;
g_in.Create(CIN::IDD ,this/**/ );
g_in.ShowWindow(SW_SHOWNA);
Sleep(500);//休眠是为了看清过程;
g_in.ShowWindow(SW_HIDE);//win7上在修改之前先隐藏窗口才可以正常刷新;
//2:修改窗口类型,指定父窗口,重新显示;
g_in.ModifyStyle(g_in.GetStyle(),WS_CHILD,0);//g_in.ModifyStyle(WS_POPUP,WS_CHILD,0);
g_in.SetParent(this);
g_in.ShowWindow(SW_SHOWNA);
g_in.MoveWindow(0,0,300,300);
//刷新窗口,
Sleep(500);
Invalidate();
UpdateWindow();
/**/
}
//方法2:
void CMyDlg::OnButton2() //创建一个非模态对话框显示了,可以通过修改类型重新嵌入到主对话框中;
{
// TODO: Add your control notification handler code here
//1:创建一个默认类型的窗口,可以正常显示;
g_in.Create(CIN::IDD ,this/**/ );
g_in.ShowWindow(SW_SHOWNA);
Sleep(500);//休眠是为了看清过程;
g_in.ShowWindow(SW_HIDE);//win7上在修改之前先隐藏窗口才可以正常刷新;
//2:修改窗口类型,指定父窗口,重新显示;
g_in.ModifyStyle(g_in.GetStyle(),WS_CHILD,SWP_DRAWFRAME);
g_in.SetParent(this);
}
3:
win7系统给对话框添加滚动条属性:
ModifyStyle( 0, WS_VSCROLL|WS_HSCROLL, 0);//或者 ModifyStyle( 0, WS_VSCROLL|WS_HSCROLL);
运行函数后不会立即出现对话框滚动条,但是 参数改为:
ModifyStyle( 0, WS_VSCROLL|WS_HSCROLL, SWP_DRAWFRAME);
会理解出现滚动条;
所以上面“2” 可以修改添加参数“SWP_DRAWFRAME”;