MFC中的CPtrArray 好像不是那么好用,进来看看
答案:2 悬赏:80 手机版
解决时间 2021-03-16 16:06
- 提问者网友:寂寞撕碎了回忆
- 2021-03-15 17:41
定义了一个类:--定义了一个函数:--这个函数中,对象test不能置空或者delete掉,想我这样delete,传出去的ptrTest就是空的。如果是这样我就感觉CPtrArray用处不大了。有办法解决吗?
最佳答案
- 五星知识达人网友:污到你湿
- 2021-03-15 17:46
方法1:定义对象集合而不是指针集合;2:使用智能指针,比如boost::shared_ptr3:不用delete,但记得清空指针集合的时候需要delete掉每一个对象
全部回答
- 1楼网友:不如潦草
- 2021-03-15 19:21
双缓冲图形刷新的实现步骤 1、创建与窗口设备描述表(前端缓冲区)兼容的内存设备描述表(后端缓冲区) 2、创建与内存设备描述表相兼容的位图并将该位图选入内存设备描述表中(没有位图的设备描述表是不能绘图的) 3、将图形绘制在内存设备描述表中 4、将内存设备描述表中的内容拷贝到窗口设备描述表 5、释放设备描述表句柄、位图等资源 示例: 01.void ondraw(cdc *pdc) 02.{ 03.//定义一个内存设备描述表对象(即后备缓冲区) 04.cdc memdc; 05.//定义一个位图对象 06.cbitmap membitmap; 07.//建立与屏幕设备描述表(前端缓冲区)兼容的内存设备描述表句柄(后备缓冲区) 08.memdc.createcompatibledc(null); 09.//这时还不能绘图,因为没有位图的设备描述表是不能绘图的 10.//下面建立一个与屏幕设备描述表(或者内存设备描述表)兼容的位图 11.membitmap.createcompatiblebitmap(pdc,nwidth,nheight); 12.//将位图选入到内存设备描述表 13.//只有选入了位图的设备描述表才有地方绘图,画到指定的位图上 14.cbitmap *poldbit=memdc.selectobject(&membitmap); 15.//先用背景色将位图清除干净,这里我用的是白色作为背景 16.//你也可以用自己应该用的颜色 17.memdc.fillsolidrect(0,0,nwidth,nheight,rgb(255,255,255)); 18.//绘图 19.memdc.moveto(……); 20.memdc.lineto(……); 21.//将后备缓冲区中的图形拷贝到前端缓冲区 22.pdc->bitblt(0,0,nwidth,nheight,&memdc,0,0,srccopy); 23.//绘图完成后的清理 24.membitmap.deleteobject(); 25.memdc.deletedc(); 26.}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯