看看这几行代码有什么问题?

killermat 2004-09-16 11:16:58
程序功能是在运行中手工改变控件背景色
private:
COLORREF m_bkcolor; //控件背景色
COLORREF inrgb[16];
COLORREF outrgb[16];

HBRUSH m_bkbrush; //用于OnCtlColor中返回的刷子
HBRUSH m_inbrush[16];
HBRUSH m_outbrush[16];

void CGraphic::OnInitialUpdate()
{
CFormView::OnInitialUpdate();

// TODO: Add your specialized code here and/or call the base class //创建刷子
m_bkbrush=CreateSolidBrush(m_bkcolor);
for(int i=0;i<16;i++)
{
m_inbrush[i]=CreateSolidBrush(inrgb[i]);
m_outbrush[i]=CreateSolidBrush(outrgb[i]);
}
}

//在手工改变颜色后,重新创建刷子
void CGraphic::createshowbrush()
{

delete[] m_bkbrush;
m_bkbrush=NULL;
m_bkbrush=CreateSolidBrush(m_bkcolor);
for(int i=0;i<16;i++)
{
delete[] m_inbrush[i]; //请问从这里开始是不有问题?
m_inbrush[i]=NULL; // 我在多拖动几次窗口后,程序就出错了
delete[] m_outbrush[i]; // 能否这样用 delete[] m_inbrush[i];
m_outbrush[i]=NULL; //
m_inbrush[i]=CreateSolidBrush(inrgb[i]); //
m_outbrush[i]=CreateSolidBrush(outrgb[i]); //
}
}
void CGraphic::OnDraw(CDC* pDC)
{
createshowbrush();
}
HBRUSH CGraphic::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
........
}
...全文
77 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyelf 2004-09-16
  • 打赏
  • 举报
回复
使用DeleteObject来销毁刷子资源,而不是delete [];

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧