CTestDlg::Test()
{
CClientDC dc(this);
CBrush brush;
brush.CreateSolidBrush(RGB(0,0,0));
dc.SetBkMode(TRANSPARENT);
dc.SelectObject(brush);
dc.Rectangle(50.50,100,100); brush.DeleteObject();
brush.CreateSolidBrush(RGB(128,128,255));
dc.SelectObject(brush);
dc.Rectangle(10,10,20,20);
brush.DeleteObject();
ReleaseDC(&dc);
}
上面这个函数根据实际需要通过SetTimer(1,1000,NULL)每秒钟执行一次,但是我发现在运行过程中内存资源在不断减少?是不是上面的代码造成了内存泄漏?请问如何才能解决这个问题?
谢谢!
{
CClientDC dc(this);
CBrush brush;
brush.CreateSolidBrush(RGB(0,0,0));
dc.SetBkMode(TRANSPARENT);
dc.SelectObject(brush);
dc.Rectangle(50.50,100,100); brush.DeleteObject();
brush.CreateSolidBrush(RGB(128,128,255));
dc.SelectObject(brush);
dc.Rectangle(10,10,20,20);
brush.DeleteObject();
ReleaseDC(&dc);
}
上面这个函数根据实际需要通过SetTimer(1,1000,NULL)每秒钟执行一次,但是我发现在运行过程中内存资源在不断减少?是不是上面的代码造成了内存泄漏?请问如何才能解决这个问题?
谢谢!
解决方案 »
- MFC客户端如何接收信息
- 不同环境下,同样SQL语句的不同执行结果,求救!
- [C++]问个关于混合编程的问题
- 200分讨论一个SQLServer的小问题:用C或者C++虚拟实现SQLServer的insert过程,并能正常工作!(呵呵)
- 谁能告诉我((CButton*)GetDlgItem(IDC_RADIO1))->SetCheck(FALSE);有错吗?
- 我看很多游戏界面,都是自己在客户区画的窗口,而不是windows提供的窗口
- VC中用bmp位图做背景的问题。
- 如何产生,使用dll文件???
- 哪种制作安装程序的软件做出来的是真正的绿色安装软件?
- 急!急!急!急!初学者求救:热键问题!!!
- 串口堵塞问题,请进!!!
- 怎样获得使用CRecordSet::ExecSQL()查询得到的数据?
在dc SelectObject的时候 它返回一个指针 比如选择brush的时候返回CBrush 指针
可以定义为pOldBrush 在使用结束的时候你可以SelectObject 选回那个old brush
{
CClientDC dc(this);
CBrush brush,brush1; //
brush.CreateSolidBrush(RGB(0,0,0));
dc.SetBkMode(TRANSPARENT);
CBrush *pOldBrush; //
//dc.SelectObject(brush);->
pOldBrush=dc.SelectObject(&brush);
dc.Rectangle(50.50,100,100); brush1.CreateSolidBrush(RGB(128,128,255)); //
dc.SelectObject(&brush1); //
brush.DeleteObject();
dc.Rectangle(10,10,20,20);
dc.SelectObject(pOldBrush); //
brush1.DeleteObject();
ReleaseDC(&dc);
}
即:
this->ReleaseDC(&dc);
brush.DeleteObject();
brush1.DeleteObject();