显示的图片最小化后还原消失

GOOD_ONE 2011-05-01 03:28:48
不只是这样 把对话框移动到显示器外图片会被像被橡皮一样擦掉
void CLookYourselfDlg::OnBnClickedButton1()
{
CImage image;
image.Attach(SC());//SC()截屏程序绝对OK
HDC hDestDC;
hDestDC=::GetDC(::GetDlgItem(m_hWnd,IDC_STATIC_ID));
::SetStretchBltMode(hDestDC,HALFTONE);
::SetBrushOrgEx(hDestDC,0,0,NULL);
image.StretchBlt(hDestDC,0,0,1024,768,SRCCOPY);//显示也没问题
}

就是不知道为什么移到显示器外会被擦掉
貌似CStatic的 SetBitmap函数不会发生这样的情况 但是我需要这样写图片才会达到预期的大小 1024*768
...全文
189 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
susan19891010 2011-06-01
  • 打赏
  • 举报
回复
学习学习
Dreadnought 2011-05-01
  • 打赏
  • 举报
回复
在OnPaint里绘制
xiaopoy 2011-05-01
  • 打赏
  • 举报
回复
你没处理WM_PAINT消息,当窗口被擦掉,需要重绘制的时候,你应该再把图片绘制上去,要不然它当然不会出现按想象出现一个图片的。 /:^]
你应该在自己的窗口类里重载
CWnd::OnPaint
并且在实现里进行必须的图像绘制
afx_msg void OnPaint( )
{
CImage image;
HDC hDestDC;
hDestDC=::GetDC(::GetDlgItem(m_hWnd,IDC_STATIC_ID));
::SetStretchBltMode(hDestDC,HALFTONE);
::SetBrushOrgEx(hDestDC,0,0,NULL);
image.StretchBlt(hDestDC,0,0,1024,768,SRCCOPY);
http://www.osronline.com/article.cfm?id=469
CWnd::OnPaint ();
}

19,468

社区成员

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

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