VC菜鸟,正在学,写了一个读取bmp图像的MFC程序,但是编译一直出现下面这个提示错误,求高手指教啊,,,

25View.obj:errorLNK2001:unresolvedexternalsymbol"protected:virtualvoid__thiscallCMy25... 25View.obj : error LNK2001: unresolved external symbol "protected: virtual void __thiscall CMy25View::CalcWindowRect(struct tagRECT *,unsigned int)" (?CalcWindowRect@CMy25View@@MAEXPAUtagRECT@@I@Z)
琢磨了一下,运行时屏幕一闪就消失了问题应该在OnDraw函数中写了Invalidate(),不过,按照我下面这样写的程序,Invalidate()应该放在哪里才能调用OnDraw来进行重绘进而载入图片呢?
展开
 我来答
空雪梦见
2013-12-17 · TA获得超过5597个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1196万
展开全部
是不是代码里不小心把CalcWindowRect添加了虚函数。
你找找CMy25View所在的头文件里,类里面是不是有CalcWindowRect的声明
有的话把它删掉。这个函数是CWnd里的
更多追问追答
追问

嗯,找到这个文件把它删除了,编译可以进行,不过在运行的时候窗口闪一下就消失了,无法打开图片。。。下面是我在菜单“文件”中的“打开”和OnDraw中的代码。可以再请教下吗??

追答
既然是DoModal,那么应该至少要等你选完文件。CDib是啥……一个对话框?如果是的话,这个对话框肯定是一下子就没了因为OnFileOpen函数结束了,出了这个作用于,它就被析构掉了。

用CDib *dib = new CDib;
dib->LoadFile(filename);可以解决这个问题,但是你要注意这个CDib如果是窗口,这个窗口关闭的时候要delete掉new出来这个对象。如果不是窗口,我真的也猜不出来这CDib到底是啥 - -

这里不应该用InvalidateRect,因为Doc类里用不了。
Doc类里用的是UpdateAllViews(0);
春夏秋冬
2013-12-18 · 知道合伙人教育行家
春夏秋冬
知道合伙人教育行家
采纳数:490 获赞数:1419

向TA提问 私信TA
展开全部
1、是否将上述函数删掉,但定义仍存在,或在BeginmessageMap中仍然有其注册
2、更多交流参考我空间文章。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式