散分了!简单的对话框显示图形问题,各位帮忙呀!

zhengyaxin_8bit 2008-03-12 11:46:56
程序的目的是通过点击按钮,在对话框中显示图形,代码如下
运行后,当移动对话框使窗口重绘时,出现异常错误,如何修改bug?
本程序不希望在OnPaint中编程

void CunicodeDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
//OnOK();
CDC *pDC=GetDC();
m_dcMemory.CreateCompatibleDC(pDC);
m_bitmap.LoadBitmap(IDB_BITMAP1);
m_dcMemory.SelectObject(&m_bitmap);
pDC->BitBlt(100,100,54,96,&m_dcMemory,0,0,SRCCOPY);

m_bitmap.DeleteObject();
m_dcMemory.DeleteDC();
pDC->DeleteDC();;
}
...全文
65 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
taitanyt 2008-03-12
  • 打赏
  • 举报
回复
用RealeaseDC();
你deletedc后移动刷新时没有dc当然错误
ahuisafe 2008-03-12
  • 打赏
  • 举报
回复
什么异常
是不是父窗体没有设置对
或者超出了父窗体的范围
appleboyecho 2008-03-12
  • 打赏
  • 举报
回复
当重新移动后,你的OnPaint()中有没有代码?你这实现的是点击按钮时,可以重绘图像, 而移动后,WINDOWS会调用OnPaint()进行绘图,所以再看一下吧。
datoucaicai 2008-03-12
  • 打赏
  • 举报
回复
本程序不希望在OnPaint中编程

//竟然没看见这个,晕倒
datoucaicai 2008-03-12
  • 打赏
  • 举报
回复
设一个bool成员变量判断是否要重画,bool m_bBtnBlick;

在按钮的响应函数中,m_bBtnBlick = true; Invalidate();

把贴图的代码放到OnPaint中
if(m_bBtnBlick)
... //贴图代码
  • 打赏
  • 举报
回复
pDC-> DeleteDC();这个不需要吧
woxinyongheng 2008-03-12
  • 打赏
  • 举报
回复
ReleaseDC(pDC);
就没有问题了
x_horse 2008-03-12
  • 打赏
  • 举报
回复
加上Invalidate(); updatat();试一下
zhengyaxin_8bit 2008-03-12
  • 打赏
  • 举报
回复
如果将pDC-> DeleteDC();这个删掉,程序运行好像没有什么问题,但我用debug跟踪pdc的值,
每次点击按钮进入都不一样,会不会有问题?何时才能安全释放pDC?
每次进入时都会调用getdc(),会不会有问题?

15,979

社区成员

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

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