怪事,从Cview转换到CScrollView,问题就出了一大堆。

蝈蝈俊 2000-08-17 10:55:00
我参照visual c++ 6 入门到精通的第13章把MiniDrawView.h 和MiniDrawView.doc中的
CView 类名转换成了CSrollView ,结果就出现:
--------------------Configuration: MiniDraw - Win32 Debug--------------------
Compiling...
VIEWSCRL.CPP
C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\VIEWSCRL.CPP(81) : error C2065: 'afxData' : undeclared identifier
C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\VIEWSCRL.CPP(81) : error C2228: left of '.bWin4' must have class/struct/union type
C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\VIEWSCRL.CPP(89) : error C2065: '_countof' : undeclared identifier
C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\VIEWSCRL.CPP(99) : error C2228: left of '.bWin95' must have class/struct/union type
C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\VIEWSCRL.CPP(510) : error C2228: left of '.cxVScroll' must have class/struct/union type
C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\VIEWSCRL.CPP(512) : error C2065: 'CX_BORDER' : undeclared identifier
C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\VIEWSCRL.CPP(517) : error C2228: left of '.cyHScroll' must have class/struct/union type
C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\VIEWSCRL.CPP(519) : error C2065: 'CY_BORDER' : undeclared identifier
C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\VIEWSCRL.CPP(623) : error C2065: 'WM_RECALCPARENT' : undeclared identifier
Error executing cl.exe.

MiniDraw.exe - 9 error(s), 0 warning(s)
的错误,怪事,CSrollView 类的定义竟出错,我该如何???
...全文
609 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
U皮特U 2000-08-17
  • 打赏
  • 举报
回复
是不是替换错了?我看你写成了CSrollView,少了一个c。
Tiangz 2000-08-17
  • 打赏
  • 举报
回复
你不会是利用Find/Replace将所有CMyView:: public CView中的CView转换成CScrollView类吧,那样通常都会有很多难以预知的问题。
我手头没有这个例子,所以也无法验证,但相信CScrollView不会有这么多Errors的.
你要作CScrollView也可以,可以利用ClassWizard生成一个新类,从CScrollView类中派生.
然后在CMyApp的InitiaInstance里替换掉原来的View即可。当然,一般是不会直接从
CScrollView类中派生的,而是从其子类如CFromView等中派生.
hand 2000-08-17
  • 打赏
  • 举报
回复
O.K.
蝈蝈俊 2000-08-17
  • 打赏
  • 举报
回复
最初我也不记得是为何自动就创建了viewscrl.cpp文件。真怪。
蝈蝈俊 2000-08-17
  • 打赏
  • 举报
回复
谢谢,真是的,当初不知是如何的,现在竟然好了。
hand 2000-08-17
  • 打赏
  • 举报
回复
代码收到,
从stdafx.h中删除#include "afximpl.h"
从工程中删除viewscrl.cpp后编译成功
(这两个是你刚加的吧)
看样子你的工程本身没有问题,应该是你的
VC设置有问题,好好检查一下吧。
我正在拿自己的VC作实验,看看有无可能重现你的问题。
蝈蝈俊 2000-08-17
  • 打赏
  • 举报
回复
增加afximpl.h 后结果出现了:
Deleting intermediate files and output files for project 'MiniDraw - Win32 Debug'.
--------------------Configuration: MiniDraw - Win32 Debug--------------------
Compiling resources...
Compiling...
StdAfx.cpp
c:\program files\microsoft visual studio\vc98\mfc\src\afximpl.h(115) : error C2143: syntax error : missing ';' before '*'
c:\program files\microsoft visual studio\vc98\mfc\src\afximpl.h(115) : error C2501: 'CFindReplaceDialog' : missing storage-class or type specifiers
c:\program files\microsoft visual studio\vc98\mfc\src\afximpl.h(115) : error C2501: 'pFindReplaceDlg' : missing storage-class or type specifiers
c:\program files\microsoft visual studio\vc98\mfc\src\afximpl.h(434) : error C2061: syntax error : identifier 'REFIID'
c:\program files\microsoft visual studio\vc98\mfc\src\afximpl.h(435) : error C2061: syntax error : identifier 'REFIID'
Error executing cl.exe.
Creating browse info file...
BSCMAKE: error BK1506 : cannot open file '.\Debug\MainFrm.sbr': No such file or directory
Error executing bscmake.exe.

MiniDraw.exe - 6 error(s), 0 warning(s)

我把代码寄给你罗,非常谢谢。
hand 2000-08-17
  • 打赏
  • 举报
回复
方便的话能否将代码打包,邮给我看看?
Holly 2000-08-17
  • 打赏
  • 举报
回复
CView 转换为CScrollView通常只需要在???View::OnInitialUpdate()中增加对的SetScrollSizes(?, ?)调用.
你出现的错误显然没有将afximpl.h文件include 到使用afxData的源文件中,afximpl.h通常在VC98\MFC\SRC目录中,我的做法通常将该目录添加到Directories的环境设置中!
蝈蝈俊 2000-08-17
  • 打赏
  • 举报
回复
Rebuild all 仍有这个问题。
Deleting intermediate files and output files for project 'MiniDraw - Win32 Debug'.
--------------------Configuration: MiniDraw - Win32 Debug--------------------
Compiling resources...
Compiling...
StdAfx.cpp
Compiling...
MainFrm.cpp
MiniDraw.cpp
MiniDrawDoc.cpp
MiniDrawView.cpp
VIEWSCRL.CPP
C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\VIEWSCRL.CPP(81) : error C2065: 'afxData' : undeclared identifier
C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\VIEWSCRL.CPP(81) : error C2228: left of '.bWin4' must have class/struct/union type
C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\VIEWSCRL.CPP(89) : error C2065: '_countof' : undeclared identifier
C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\VIEWSCRL.CPP(99) : error C2228: left of '.bWin95' must have class/struct/union type
C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\VIEWSCRL.CPP(510) : error C2228: left of '.cxVScroll' must have class/struct/union type
C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\VIEWSCRL.CPP(512) : error C2065: 'CX_BORDER' : undeclared identifier
C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\VIEWSCRL.CPP(517) : error C2228: left of '.cyHScroll' must have class/struct/union type
C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\VIEWSCRL.CPP(519) : error C2065: 'CY_BORDER' : undeclared identifier
C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\VIEWSCRL.CPP(623) : error C2065: 'WM_RECALCPARENT' : undeclared identifier
Generating Code...
Error executing cl.exe.
Creating browse info file...

MiniDraw.exe - 9 error(s), 0 warning(s)
hand 2000-08-17
  • 打赏
  • 举报
回复
afxData 是MFC中定义的一个全局变量,在
AFXIMPL.H中声明,
而MFC的STDAFX.H中已经引用了该头文件,因此它会被
编入预编译头文件中,因此不应该出这个问题。

Rebuild all应该能解决问题。
蝈蝈俊 2000-08-17
  • 打赏
  • 举报
回复
用APPWIRZD是没有问题的,我就是想知道如果我做了很多东西,但是需要改变基类,那如何是好???
onion 2000-08-17
  • 打赏
  • 举报
回复
最可靠的做法是:在用APPWIRZD生成框架时,在最后第二步将你的VIEW类的基类该为CScrollView类,应该是可靠的。
蝈蝈俊 2000-08-17
  • 打赏
  • 举报
回复
TO zzh 全换了呀,
TO softsprite 呵呵,笔误,但程序中没有笔误。
TO Tiangz 是用的Find/Replace将所有CView转换成CScrollView类
zzh 2000-08-17
  • 打赏
  • 举报
回复
从CView转换为CScrollView一定没有问题,我曾经用过,你仔细检查你是不是完全把CView用CScrollView替换了。包括工程中所有文件。

16,471

社区成员

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

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

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