在对话框中绘图的问题

yibuyisheng 2010-05-14 03:50:35


为什么我用这段代码在对话框内部绘图总是运行的时候出错?!
CBrush brush,*oldBrush = NULL;
CBitmap bm[4];
bm[1].LoadBitmap(IDB_BITMAP1);
bm[2].LoadBitmap(IDB_BITMAP2);
bm[3].LoadBitmap(IDB_BITMAP3);
bm[4].LoadBitmap(IDB_BITMAP4);
CClientDC dc(this);

m_nCount++;
CRect rect;
rect.left = 0;
rect.top = 0;
rect.bottom = ::GetSystemMetrics(SM_CXSCREEN);
rect.right = ::GetSystemMetrics(SM_CYSCREEN);

CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
BITMAP bitmap;
CBitmap *pbmpOld;

switch(m_nCount)
{
case 1:
bm[1].GetBitmap(&bitmap);
pbmpOld = dcMem.SelectObject(&bm[1]);
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);

case 2:
bm[2].GetBitmap(&bitmap);
pbmpOld = dcMem.SelectObject(&bm[2]);
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);

case 3:
bm[3].GetBitmap(&bitmap);
pbmpOld = dcMem.SelectObject(&bm[3]);
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);

case 4:
bm[4].GetBitmap(&bitmap);
pbmpOld = dcMem.SelectObject(&bm[4]);
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);

case 5:
m_nCount = 0;
...全文
61 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2010-05-14
  • 打赏
  • 举报
回复
CBitmap bm[4];
bm[1].LoadBitmap(IDB_BITMAP1);
bm[2].LoadBitmap(IDB_BITMAP2);
bm[3].LoadBitmap(IDB_BITMAP3);
bm[4].LoadBitmap(IDB_BITMAP4);

其它没看,这里数组溢出了,大兄弟。。。
huziwu 2010-05-14
  • 打赏
  • 举报
回复
出什么错误?
还有你的case没有跟break;所以所有case条件都执行了

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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