CDialog两种模式

CDialog两种模式

1模态对话框

2模态对话框

 

都可以创建多个指定ID的对象

 

模态对话框

 

定义一个IDD_DIALOG1; 没有对应的类

CDialog c;

CDialog *d;

c.Create(IDD_DIALOG1,this);

c.ShowWindow(SW_SHOWMAXIMIZED);

c.DestroyWindow();

 

d = new CDialog;

int i=d->Create(IDD_DIALOG1,this);

d->ShowWindow(SW_SHOW);

d->DestroyWindow();

 

两种方式都可以,对象是各自独立的,引用的资源相同

利用函数DestroyWindow()销毁Create的创建.但是对象还在!并没有销毁!

好比Create 之前 CDialog 对象只是个躯干,只有Create,加入资源,就好象躯干有了思想,详细的行为,根据IDD_DIALOG1的封装类而定,如果没有类封装,那么其行为,为默认行为函数!!

 

有类封装的IDD_DIALOG2  ==CMY

CMY  a,b,e;

 

if(!IsWindow(a.m_hWnd))

{

a.Create(CMY::IDD,this);

}

a.ShowWindow(SW_SHOW);

a.DestroyWindow();

 

if(!IsWindow(b.m_hWnd))

{

b.Create(IDD_DIALOG2,this);

}

b.ShowWindow(SW_SHOW);

b.DestroyWindow();

 

if(!IsWindow(e.m_hWnd))

{

e.Create(IDD_DIALOG1,this);

}

e.ShowWindow(SW_SHOW);

e.DestroyWindow();     

 

注意CMY::IDD 就等于IDD_DIALOG2,所以Create有两种方法.

还有e.Create(IDD_DIALOG1,this);这句 ,他的行为就只能执行与IDD_DIALOG2相对应(ID相同)的控件的CMY中的消息映射之行为.说白了这句话就是有解释价值没有使用价值.

 

模态对话框

 

其实就是封装的CreateDestroyWindow()的调用.而非模态对话框需要人工的创建与销毁

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值