2010.6.18
一、动态生成菜单
CMenu menu;
menu.CreatePopupMenu();
menu.AppendMenu(MF_SEPARATOR,33001,_T(""));
menu.AppendMenu(MF_STRING,ID_POPMENU_Rename,_T("重命名"));
menu.AppendMenu(MF_STRING,ID_POPMENU_Delete,_T("删除"));
如果使用一个menu,重复生成菜单,那么使用之后,需要menu.detach();
二、C++类名构建对象和new创建对象的区别
要理解对象内存分配,栈内存分配和堆内存分配的区别。
1、
用类名定义对象的时候,当该对象的生命周期到了以后,
如果是new定义的,在函数执行完毕以后,
2、不管以何种方式创建,都调用构造函数。
比如如下类:
class CPersion
{
public:
CPersion(void);
public:
~CPersion(void);
public:
int i;
};
在下面的main中定义
int _tmain(int argc, _TCHAR* argv[])
{
CPersion persion; //第一种声明方法:在栈中声明。首先调用构造函数。当main退出时,调用析构函数。
persion.i=2;
CPersion* per2=new CPersion(); //第二种声明方法:在堆上声明。首先调用构造函数。当main退出时,没有调用构造函数,必须手动释放内存。
per2->i=3; //所以这段儿代码存在内存泄漏
return 0;
}