我动态创建按钮时
声明到全局变量 可以成功创建按钮并显示
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 等等子类的很多对象只要声明到某个过程都可以成功创建阿!!!!!
弄不清!!!!
声明到全局变量 可以成功创建按钮并显示
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 等等子类的很多对象只要声明到某个过程都可以成功创建阿!!!!!
弄不清!!!!
解决方案 »
- 如何编程禁止使用计算机 U盘口?
- 谁有分析C++文件得到类VC的Class View中的信息的源代码
- 数值型转字符串型
- CStatic控件的字体大小的问题
- 线程问题
- 如何实现“点鼠标左键停止时钟,再点左键时钟又开始计时”
- 高手救命啊, 很奇怪的问题(在线等待!!!)-- 昨天的问题还是没解决……
- 请问如何在主线程里关掉另一个线程函数?
- 谁有孙鑫老师的VC++的视频教学(全部教程)
- 关于 VC 6.0 有没有什么补丁,升级文件之类的东西? 高分争解
- (急用,在线等待!!!)请问如何用Select语言将与adodc控件连接的datagrid控件column字段名改为中文?请各位高手帮忙啊
- 关于Imagelist控件,microsoft Imagelist Control,version 6.0的问题。。帮帮忙
{
cbutton b;
b.create(参数省略)
}这个局部变量是可以创建的,只不过刚刚创建,到退出函数的时候就自动析构,拜拜了
{
static cbutton b; // 加了static
b.create(参数省略)
}
========
正是,决定这些玩意的正是“变量生存期”
你可以做个试验:
把
“ cbutton * b;
b = new cbutton ;
b->create(参数略);”
在按钮事件中加一句:
delete b;
点一下窗体就没了…………为什么像 cpen, cdc 等等子类的很多对象只要声明到某个过程都可以成功创建阿!!!!!
弄不清!!!!
===
因为它们只是使用一下就好了
{
b.create(参数省略)
}
可是我声明成局部变量就不行
//局部变量的生存周期只在当前函数体内
//局部变量一般也在栈中分配
//函数调用结束在当前函数栈销毁对象就没了