导航
  • 主页
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

菜鸟提问MFC,关于位图

live_for_you 2009-08-19 04:39:37
创建一个MFC的单文档,在view.cpp的void CMyView::OnDraw函数中写入如下代码
ASSERT_VALID(pDoc);

CDC MemDC;
MemDC.CreateCompatibleDC(pDC);



BITMAP bm;
bm.bmBits=NULL;
bm.bmBitsPixel=16;
bm.bmHeight=200;
bm.bmPlanes=1;
bm.bmType=0;
bm.bmWidth=100;
bm.bmWidthBytes=200;

CBitmap Bitmap;
Bitmap.CreateBitmapIndirect(&bm);
CBitmap *pOldBitmap=MemDC.SelectObject(&Bitmap);


Bitmap.GetObject(sizeof(BITMAP),&bm);
unsigned char * pData=new unsigned char [bm.bmHeight*bm.bmWidthBytes];
for(int y=0;y<bm.bmHeight;y++)
{
for (int x=0;x<bm.bmWidth;x++)
{
pData[x*3+y*bm.bmWidthBytes]=0;
pData[x*3+1+y*bm.bmWidthBytes]=0;
pData[x*3+y*bm.bmWidthBytes]=255;
}
}
Bitmap.SetBitmapBits(bm.bmHeight*bm.bmWidthBytes,pData);
pDC->BitBlt(10,10,bm.bmWidth,bm.bmHeight,&MemDC,0,0,SRCCOPY);
MemDC.SelectObject(pOldBitmap);
delete [] pData;
目的是想练习一下位图的创建是使用,生成解决方案的时候提示成功,没有错误,但是调试执行的时候窗口刚现出来,就提示说“TODO:<文件说明>已停止工作”,把这段代码去掉是能运行的,我看不出来哪里错了,高手们指点一下~~~~
...全文
112 点赞 收藏 5
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
muarom 2009-08-19
我不知道你下面这段是什么目的,不过你已经越界访问了,
pData[x*3+y*bm.bmWidthBytes]=0;
pData[x*3+1+y*bm.bmWidthBytes]=0;
pData[x*3+y*bm.bmWidthBytes]=255;

可以多申请一点动态内存,unsigned char * pData=new unsigned char [bm.bmHeight*bm.bmWidthBytes *3]; 这样可避免运行出错
回复
live_for_you 2009-08-19
[Quote=引用 3 楼 skynfly 的回复:]
是不是unsigned char * pData=new unsigned char [bm.bmHeight*bm.bmWidthBytes]; 分配的内存不够了
[/Quote]
能不能给个解决的办法?
回复
skynfly 2009-08-19
是不是unsigned char * pData=new unsigned char [bm.bmHeight*bm.bmWidthBytes]; 分配的内存不够了
回复
live_for_you 2009-08-19
还有个错误提示
Windows 已在 333.exe 中触发一个断点。

其原因可能是堆被损坏,这说明 333.exe 中或它所加载的任何 DLL 中有 Bug。

原因也可能是用户在 333.exe 具有焦点时按下了 F12。

输出窗口可能提供了更多诊断信息。
回复
快乐鹦鹉 2009-08-19
加断点调试,看哪一句出现的错误。
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

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