常见小问题,但你知道是为什么吗?

zaodt 2008-09-03 01:14:15


void CTestDlg::OnButton1() 
{
// dynamically create an edit control on the view

CEdit myEdit;

myEdit.Create( WS_CHILD | WS_VISIBLE , CRect(10,10,100,100), this, 1);
}



问题是:

为什么当点击按钮后,看不到创建的 Edit 控件窗口?





大家都来说说是为什么!
...全文
101 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yhwxxx 2008-09-03
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wangyaosuper 的回复:]
good!

楼主很严谨 , 学习了!
[/Quote]

er,长见识了,向前辈学习
wangyaosuper 2008-09-03
  • 打赏
  • 举报
回复
good!

楼主很严谨 , 学习了!



zaodt 2008-09-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 greatws 的回复:]
再详细一点吧

执行完,开始清理栈,于是需要调用CEdit的析构函数
CEdit::~CEdit()
{
DestroyWindow();
}

里边有
DestroyWindow();
[/Quote]


说到点子上了!

两个对象,一个是 MFC 对象,一个是 Windows 窗口对象;

如果不处理,结果是 MFC 对象 CEdit 结束,而 窗口对象 还在;

这样,就可以看到编辑框窗口了。
greatws 2008-09-03
  • 打赏
  • 举报
回复
再详细一点吧

执行完,开始清理栈,于是需要调用CEdit的析构函数
CEdit::~CEdit()
{
DestroyWindow();
}

里边有
DestroyWindow();

greatws 2008-09-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zaodt 的回复:]
引用 1 楼 greatws 的回复:
CEdit myEdit;
一个局部变量

这个函数执行完,就被销毁,所以看不到。。。



呵呵,没说到点子上啊!


上次刷点,你提供的程序帮刷了个第一,奖励3888元的钻戒还有免费拍婚纱照。
[/Quote]

还是真的?太假了,我去杭州要请我吃饭哦
zhkza99c 2008-09-03
  • 打赏
  • 举报
回复
局部数据是在栈上存储了,函数结束的时候栈上存储的数据统统挂掉。
只有建立在堆上的数据才是可以保留下来的,因此要建立堆上数据,使用动态分配。
new出来.
saintbird 2008-09-03
  • 打赏
  • 举报
回复
CEdit * myEdit=new CEdit();

myEdit->Create( WS_CHILD | WS_VISIBLE , CRect(10,10,100,100), this, 1);
zaodt 2008-09-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 greatws 的回复:]
CEdit myEdit;
一个局部变量

这个函数执行完,就被销毁,所以看不到。。。
[/Quote]


呵呵,没说到点子上啊!




上次刷点,你提供的程序帮刷了个第一,奖励3888元的钻戒还有免费拍婚纱照。
phisherr 2008-09-03
  • 打赏
  • 举报
回复
局部变量创建,有问题吧,很快就销毁了
greatws 2008-09-03
  • 打赏
  • 举报
回复
CEdit myEdit;
一个局部变量

这个函数执行完,就被销毁,所以看不到。。。

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧