关于VC数字图像处理编程讲座问题

xianzi123 2008-05-10 10:01:07
在网上搜索VC 图像处理,就出现好多关于该讲座的问题,我按照该文档中所讲的内容编写程序来显示位图,编译成功,可以运行不了,总是出现对话框说Debug Assertion Failed!
File:viewscrl.cpp
line:220
我也不知道是怎么回事!!
请问有没有根据这个讲座成功编写过该程序的,希望给点意见!
...全文
377 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaojianzhong001 2012-10-09
  • 打赏
  • 举报
回复
看样子已经搞定了,估计现在也是高手了
rindar 2011-11-25
  • 打赏
  • 举报
回复
你这个问题搞定了没,我也是
xianzi123 2008-05-11
  • 打赏
  • 举报
回复
等下这个问题弄完了,我就结贴,呵呵!不要着急哦!
xianzi123 2008-05-11
  • 打赏
  • 举报
回复
是不是在把hDIB赋值给m_hDIB之后,就可以把它释放掉了呢?
我在::GlobalUnlock((HGLOBAL)hDIB);这句之后又调用::GlobalFree((HGLOBAL)hDIB);应该可以了吧?
xianzi123 2008-05-11
  • 打赏
  • 举报
回复
to biao_zi :
好像是这样的,我去改掉!呵呵!人多力量大呀!
biao_zi 2008-05-11
  • 打赏
  • 举报
回复
发现有GlobalAlloc(),却没有对应的GlobalFree()
快乐鹦鹉 2008-05-11
  • 打赏
  • 举报
回复
嗯。先揭帖吧。哈哈
xianzi123 2008-05-11
  • 打赏
  • 举报
回复
嘿嘿,我的基础是比较差了!都还没有自己编写过程序,接触VC也没有很久,哎!不知啥时候才能学好它呀!
看来我的基础太差,我现在先自己调试调试,等实在不会的时候,我再找你,好不好?呵呵!今天真是谢了!
快乐鹦鹉 2008-05-11
  • 打赏
  • 举报
回复
不要用OnOpenDucument了,这是你在系统启动后,点击菜单“文件”下的“新建”子菜单后调用的
快乐鹦鹉 2008-05-11
  • 打赏
  • 举报
回复
if (!file.Open("E:\3.bmp", CFile::modeRead ¦ CFile::shareDenyWrite, &fe)),可是图像还是打不开呀?怎么回事呢?
该为if (!file.Open("E:\\3.bmp", CFile::modeRead ¦ CFile::shareDenyWrite, &fe))
看来你的基础还比较差哦
biao_zi 2008-05-11
  • 打赏
  • 举报
回复
你代码中似乎在
::GlobalUnlock((HGLOBAL)hDIB);
之后又有调用了hDIB,这时是无效的了,把这句适当后移试下
xianzi123 2008-05-11
  • 打赏
  • 举报
回复
我还想问一下函数执行的先后顺序,我加了断点之后,发现它先执行的是OnDraw函数,然后就弹出那个“图像数据不能为空,请先读取图像数据”这个对话框,我发现它就没有去执行OnOpenDucument这个函数呀?这又是咋回事呢?
我的问题也有点太多了,嘿嘿!今天是遇到好心人了!
xianzi123 2008-05-11
  • 打赏
  • 举报
回复
哦,那我先在这个程序,就是刚开始固定打开一张图片的,是吧?那现在我应该把lpszPathName改成图片的地址,我把
if (!file.Open(lpszPathName, CFile::modeRead ¦ CFile::shareDenyWrite, &fe)) 这句里的lpszPathName改成了:
if (!file.Open("E:\3.bmp", CFile::modeRead | CFile::shareDenyWrite, &fe)),可是图像还是打不开呀?怎么回事呢?
快乐鹦鹉 2008-05-11
  • 打赏
  • 举报
回复
如果是系统启动后再打开,你就不要在这个函数中加代码了。增加一个菜单项来处理就可以了。先调用CFileDialog选择图片文件,然后再进行图片处理后显示到视图就OK
xianzi123 2008-05-11
  • 打赏
  • 举报
回复
再请问一下哦,实在不好意思!
这个lpszPathName这个,我应该具体制定路径的名字吗?我愿意并不是一运行就打开某个固定的图片,而是在运行后,点击打开,才选择文件来进行读取,所以就没有设这个lpszPathName的值!是不是不设置就不可以呀?如果要设置的话,所有的lpszPathName都要改成路径名?
快乐鹦鹉 2008-05-11
  • 打赏
  • 举报
回复
调试也是很简单的事。你这个只需进行很基本的调试就可以判断了。加上断点后,看一下各个变量的值是否是你预想的值就行了。
xianzi123 2008-05-11
  • 打赏
  • 举报
回复
谢谢 happyparrot ,确实调试很重要,我只是在编译的时候有错误的话,我还能修改修改,可是在编译成功之后,它要是在错,我就有点不知所措了,今天还是有收获的,谢谢你哦!以后我会多调试,多锻炼锻炼!呵呵
xianzi123 2008-05-11
  • 打赏
  • 举报
回复
请问biao_zi,调色板应该怎么初始化呀?就把m_palDIB 设为NULL就可以吗?
快乐鹦鹉 2008-05-11
  • 打赏
  • 举报
回复
你要仔细调试,m_hDIB = hDIB语句可能根本就没有执行到。调试代码是编程人员的基本功阿,你一定要掌握。
快乐鹦鹉 2008-05-11
  • 打赏
  • 举报
回复
lpszPathName这个路径是你图片所在路径和名称吗?你要多调试一下。看看各个变量的值是否是你所需的。
加载更多回复(16)

19,468

社区成员

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

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