error C2065: 'CAboutDlg' : undeclared identifier

clare06 2007-10-29 09:17:31
程序工具栏上的“关于……”菜单项(ID号为IDD_ABOUTBOX)不能用(灰色),于是,我在CAppview里添加了成员函数以处理该菜单上的COMMAND消息:
void CAppView::OnAboutbox()
{
CAboutDlg about;
about.DoModal();
}
结果出现下面这样的问题,疑惑~~
error C2065: 'CAboutDlg' : undeclared identifier
error C2146: syntax error : missing ';' before identifier 'about'
error C2065: 'about' : undeclared identifier
error C2228: left of '.DoModal' must have class/struct/union type
初学VC,望多指教
...全文
408 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
good_xu_wei 2012-06-28
  • 打赏
  • 举报
回复
只需要把你那个菜单的ID号改成ID_APP_ABOUT,就好了,你也不用给出响应函数,你点击这个菜单,他会自动调用void CMySnakeApp::OnAppAbout()
{
CAboutDlg aboutDlg;
aboutDlg.DoModal();
}
clare06 2007-10-29
  • 打赏
  • 举报
回复
谢谢各位的支持,问题解决了
在MFC自动创建的程序中,“关于……”菜单的ID号为ID_APP_ABOUT,“关于”对话框资源ID则为IDD_ABOUTBOX
MFC将CAboutDlg的类定义放在App.cpp中,在该类的定义中建立了该类与“关于”对话框资源的关联:
enum { IDD = IDD_ABOUTBOX };
MFC在App.cpp中建立了消息映射:
ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
所以只要是将“关于……”菜单的ID号和“关于”对话框资源的ID改动了,就会产生以上错误,解决办法就是重新建立以上CAboutDlg类与“关于”对话框资源的关联 和 消息映射。注意是在App.cpp中,在CAppView中添加成员函数只会使问题更糟(就想我上面做的那样)。

若以上分析有任何问题,望不吝指正!
iyranly 2007-10-29
  • 打赏
  • 举报
回复
你在CAppView.cpp中看看能不能找到CAboutDlg的声明

或者在工作区搜索CAboutDlg,看看能不能找到。

找到CAboutDlg之后确定声明它的头文件被包含在CAppView.cpp中。

clare06 2007-10-29
  • 打赏
  • 举报
回复
CAboutDlg类的定义在App.cpp中,并不是在.h文件中,按照C++,同是源文件,应该不用包含才对啊
little_wolf 2007-10-29
  • 打赏
  • 举报
回复
在文件头上加入#include "XXXX.h"
XXXX.h包含CAboutDlg的声明

2,586

社区成员

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

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