新手提问:为对话框绑定类失败,怎么处理?

fk620057147 2009-11-18 09:53:16
我用VC6.0新建了一个基于对话框的工程(AddDlgTest),此时编译器会自动为这个对话框创建一个默认的对话框类 CAddDlgTest ,当我向这个工程中添加一个新的对话框资源时,就需要手动添加一个对话框类(CAdd)来绑定这个新建的对话框。

在New Class对话框中填入类名 CAdd,其余选项默认。单击OK,编译器会弹出出错提示(如图所示)。它说不能打开 Add.h和Add.cpp这两个文件(但是在项目目录下确实存在Add.h和Add.cpp文件)。请问这是为什么呢?



我记得我当初装VC的时候出现了问题,然后卸了重装,可貌似VC怎么都卸不干净,重装也总是有问题。如果上述问题是因为VC安装不完整引起的,希望高手能指点一下怎样安装一个让人舒服的VC,太谢谢大家了!
...全文
297 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
knlnzhao 2010-11-11
  • 打赏
  • 举报
回复
有时候你可以改变一下相应对话框的ID就能解决这样的问题了,我也经常遇到这样的问题。
fk620057147 2009-11-18
  • 打赏
  • 举报
回复
结贴。
江川 2009-11-18
  • 打赏
  • 举报
回复
VC在对话框建类的时候是容易出这个问题的。
你试着打打VC的sp6补丁包,我记得装了后很少出这些问题的。
fk620057147 2009-11-18
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 successqigao 的回复:]
这样的话你可以不用去理会这个类是否创建成功还是失败了,类肯定是没问题的。
classwizard中没有出现类,你关闭工程,删除clw文件,然后打开类向导重建clw就可以了。
[/Quote]

感谢这位朋友,问题解决了一部分,类向导能够识别刚才建立的那个类了。另一个问题是,如果我再加一个新的对话框资源,同样的问题又出现了,总不至于我每次添加资源都删一次clw吧,这感觉很不爽的!
我现在心已死 打算重装VC,可是卸它不干净,不知道有没有什么干净利落且保证以后能少出点问题的方法!
江川 2009-11-18
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 fk620057147 的回复:]
崩溃中...
Add.h 和 Add.cpp 都存在,Add.h中也有资源绑定enum { IDD = IDD_ADD_DIALOG };,消息映射什么的都有,FileView中也能看到Add.h 和 Add.cpp,反正所有情况都正常,唯一的问题就是ClassWizard找不到CAdd这个类。每次对AddDlg进行ClassWizard操作的时候它都要求创建一个新类(结果总是失败)或者要求选择一个已有的类(已有的类里边也找不到CAdd类)。
[/Quote]

这样的话你可以不用去理会这个类是否创建成功还是失败了,类肯定是没问题的。
classwizard中没有出现类,你关闭工程,删除clw文件,然后打开类向导重建clw就可以了。
fk620057147 2009-11-18
  • 打赏
  • 举报
回复
崩溃中...
Add.h 和 Add.cpp 都存在,Add.h中也有资源绑定enum { IDD = IDD_ADD_DIALOG };,消息映射什么的都有,FileView中也能看到Add.h 和 Add.cpp,反正所有情况都正常,唯一的问题就是ClassWizard找不到CAdd这个类。每次对AddDlg进行ClassWizard操作的时候它都要求创建一个新类(结果总是失败)或者要求选择一个已有的类(已有的类里边也找不到CAdd类)。
ezhuyin 2009-11-18
  • 打赏
  • 举报
回复
删除Add.cpp, Add.h,重建项目,重新添加类。对话框资源一般通过ID绑定到类的。你看看你的Add.h里面有没有一句enum { IDD = IDD_ADD_DIALOG };或者类似的语句,然后Add.h里面还应该有DECLARE_MESSAGE_MAP()这句用来声明消息列表的,在Add.cpp里面应该有BEGIN_MESSAGE_MAP(CAddDlg, CDialog)和END_MESSAGE_MAP()之类的语句用来实现消息函数。一般有这几句就可以了。
江川 2009-11-18
  • 打赏
  • 举报
回复
首先确定目录下这两个文件已经删除了,然后在VC的fileview中删除这两个文件
然后打开类向导,类向导会提示你找不到这个类信息,你选择removel all就可以实现完全删除了。
这个和你VC安装没关系,是你操作的问题。
job82824 2009-11-18
  • 打赏
  • 举报
回复
干嘛一定要自动呢?如果有现成的.h/.cpp和对话框资源,那就直接在文件
.h中添加:
enum{IDD = IDD_ADD };就绑定了。多简单?
Q5914002 2009-11-18
  • 打赏
  • 举报
回复
应该不是vc问题,换台电脑试试,把代码发过去,如果 有相同问题。。那就是你的程序有问题了
fk620057147 2009-11-18
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 tttyd 的回复:]

只要生成了代码,将生成的文件加入项目文件中即可.(for vc6 project->add to project ->files)
[/Quote]
它说工程中已有这两个文件了,不能添加。即使我先移除这两个文件,然后再按您的方法添加,仍然会有错误产生。
我觉得我应该重装VC了,可是VC卸不干净,装也装不完整,希望哪位大虾能拯救一下小弟!
雪影 2009-11-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fk620057147 的回复:]
引用 3 楼 tttyd 的回复:
你不用管这个,你看看Add.h和Add.cpp文件是否以及有了相应的代码产生?


Add.h 和 Add.cpp 都有相应代码产生。但如果不管这个的话,ClassWizard会认为我没有成功添加CAdd类,以后在为这个新建的对话框添加控件、绑定成员变量,或者添加成员函数的时候,ClassWizard都会要求新建一个类。

很郁闷...
[/Quote]
只要生成了代码,将生成的文件加入项目文件中即可.(for vc6 project->add to project ->files)
lili0920 2009-11-18
  • 打赏
  • 举报
回复
在重新建一个操作一下 看看还有没有这样的问题 不知道你装VC的时候有什么问题
fk620057147 2009-11-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wwgddx 的回复:]


你还可以看看Add.cpp和Add.h文件是不是只读的,去掉, 或者把.CLW文件删掉
[/Quote]

Add.cpp和Add.h文件不是只读的。CAdd类没有CLW文件,因为这个类根本没有创建成功。
fk620057147 2009-11-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tttyd 的回复:]
你不用管这个,你看看Add.h和Add.cpp文件是否以及有了相应的代码产生?
[/Quote]

Add.h 和 Add.cpp 都有相应代码产生。但如果不管这个的话,ClassWizard会认为我没有成功添加CAdd类,以后在为这个新建的对话框添加控件、绑定成员变量,或者添加成员函数的时候,ClassWizard都会要求新建一个类。

很郁闷...
wwgddx 2009-11-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wangguang246 的回复:]
两种方法:1:删除Add.cpp和Add.h文件,然后从新添加
          2:从新建立工程
[/Quote]

你还可以看看Add.cpp和Add.h文件是不是只读的,去掉, 或者把.CLW文件删掉
oyljerry 2009-11-18
  • 打赏
  • 举报
回复
删除旧的文件,然后再用Wizard来帮你生成
wangguang246 2009-11-18
  • 打赏
  • 举报
回复
两种方法:1:删除Add.cpp和Add.h文件,然后从新添加
2:从新建立工程
Q5914002 2009-11-18
  • 打赏
  • 举报
回复
因为你之前用过这个名字了CAdd;而且没删干净,所以这里才会出现这种提示,换个名字试试
雪影 2009-11-18
  • 打赏
  • 举报
回复
你不用管这个,你看看Add.h和Add.cpp文件是否以及有了相应的代码产生?
加载更多回复(2)

16,551

社区成员

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

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

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