动态创建对象到底声明成指针还是普通对象...???弄不清

bigbbb 2005-10-13 04:30:31
我动态创建按钮时
声明到全局变量

可以成功创建按钮并显示
public
cbutton b;

void cdialog::onini()
{
b.create(参数省略)
}
可是我声明成局部变量就不行

void cdialog::onini()
{
cbutton b;
b.create(参数省略)
}

我也知道声明成指针对象肯定行
cbutton * b;
b = new cbutton ;
b->create(参数略);

这是为什么啊!!!!!!!!!!!!!!!!!!!!!! 大虾指点


还有为什么有的对象声明成局部普通对象也可以成功创建啊!!!!! 搞不懂
cpen p;
p.create(参数略)

CDC dcMem;
dcMem.CreateCompatibleDC(GetDC());

.....

为什么像 cpen, cdc 等等子类的很多对象只要声明到某个过程都可以成功创建阿!!!!!
弄不清!!!!
...全文
59 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
smatter 2005-10-19
局部和全局的问题!
回复
jx_lgq 2005-10-19
你的CButton要出了函数范围还用啊,而CPen 等也只在函数范围内起作用。
另外,Create函数对于控件来说一般用于为C++对象创建其窗口对象(两个对象是不一样的概念),并不表示是动态创建的意思。
动态创建是指类的定义中实现了class#MyClass的CRuntimeClass对象,实际操作中也就是是否使用了
DECLARE_DYNACREATE / IMPLEMENT_DYNACREATE(...) 宏。使用时通过宏RUNTIME_CLASS(MYclass)来创建MYClass 对象的,所以,动态创建开始肯定是声名一个指针,通过 RUNTIEME_CLASS(MyClass)->Create(...)函数给其实际值。才是所谓动态创建。
回复
DoItFreely 2005-10-19
CButton从CWnd派生来,在析构的时候调用DestroyWindow(),由于运行时很快,窗口还没来得及显示就被销毁了,看起来好象根本没创建
回复
相关推荐
发帖
界面
创建于2007-09-28

1.5w+

社区成员

VC/MFC 界面
申请成为版主
帖子事件
创建了帖子
2005-10-13 04:30
社区公告
暂无公告