首页
社区
课程
招聘
[求助]关于非模态对话框的问题
发表于: 2009-4-3 13:18 5592

[求助]关于非模态对话框的问题

2009-4-3 13:18
5592
第二章中非模态对话框的MFC实现,按钮响应的模块代码书上给的是这样:

void CFirstSoftwareDlg::OnBnClickedNomodalDialog()
{
	CMyNoModalDialog* pDlg=new CMyNoModalDialog();
	pDlg->Create(IDD_NOMODAL_DIALOG,this);
	pDlg->ShowWindow(SW_SHOW);
	
}


我想问一下,为什么不能这样写:

void CFirstSoftwareDlg::OnBnClickedNomodalDialog()
{
	CMyNoModalDialog dlg;
	dlg.Create(IDD_NOMODAL_DIALOG,this);
	dlg.ShowWindow(SW_SHOW);
	
}


我试了一下第二种写法,结果是对话框一闪即逝,请教达人,这是什么原因。

如果可能的话,也请指点下:

class A {
  function C() {
     ......
 }
};

//No. 1
A myA;
myA.C();

//No. 2
A* pA=new A();
pA->C();

两者之间有什么本质和应用上的区别。

谢谢!

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 7992
活跃值: (2566)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
我猜想或许和内存分配有关。。

CMyNoModalDialog* pDlg=new CMyNoModalDialog();

NEW了一块内存。这个内存除非用DELETE删除。否则一直存在。

CMyNoModalDialog dlg;

只是定义的局部对象。一旦离开这个函数。。里面所声明的变量、对象等将

不再有效。。
2009-4-5 18:33
0
雪    币: 240
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢,已经明了了~~
2009-4-6 14:59
0
雪    币: 148
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
请问如果没有MFC,对话框这种Windows窗口还分模态非模态吗?

creating a modal or modeless dialog from the template.

what's the template && what's the modal & modeless?

wha..wha..wa...what?
2009-4-6 15:12
0
雪    币: 350
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
分, 创建时调用不同的API函数. MFC只是封装了.
2009-4-7 14:25
0
雪    币: 7992
活跃值: (2566)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
Yes. Still differentiate;

But in different ways。。

The difference is use the functions Parameters is different..

you can see the most at in MSDN with "DiagBoxEx,CreateDiag…………"..

////////////////////////////////////////////

是的。仍然区分。

只不过是方式不同。。

不同的地方就是如果使用SDK或者API访问的时候参数不一样。

比如说DiagBoxParam函数。第三个参数。为NULL则是非模态的。否则为模态的。
2009-4-7 14:30
0
雪    币: 148
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
试着封装了一下.封装方法真的7花8门.

非模态对话窗口
模态对话窗口

感觉就是焦点有区别.没其他鉴别方法
2009-4-8 00:47
0
游客
登录 | 注册 方可回帖
返回
//