MFC找不到对话框资源ID 出错 解决了我要 一定重谢!

建立工程GetAirReport对话框工程,外部引入文件FluxStatic.hFluxStatic.cpp文件。我想在新引入的类中调用我的主对话框类GetAirRepo... 建立工程GetAirReport 对话框 工程,外部引入文件 FluxStatic.h FluxStatic.cpp 文件。

我想在新引入的类中 调用我的主对话框类GetAirReportDlg, 在 FluxStatic.cpp 中#include GetAirReportDlg.h
文件 结果出现以下错误, 可能跟在生成对话框类后又去改动IDD的名称 所致 。请高手解决 来看看。
错误现象1 :
E:\vc6.0\MFC\GetAirReport\FluxStatic.cpp(9) : warning C4067: unexpected tokens following preprocessor directive - expected a newline
e:\vc6.0\mfc\getairreport\showdlg.h(21) : error C2065: 'IDD_SHOWDLG' : undeclared identifier
e:\vc6.0\mfc\getairreport\showdlg.h(21) : error C2057: expected constant expression
e:\vc6.0\mfc\getairreport\getairreportdlg.h(22) : error C2065: 'IDD_GETAIRREPORT_DIALOG' : undeclared identifier
e:\vc6.0\mfc\getairreport\getairreportdlg.h(22) : error C2057: expected constant expression
Error executing cl.exe.

在此文件中加入#include"resource.h" 文件 错误消失 ,但是 定义 GetAirReportDlg 对象就会出错。 CGetAirReportDlg dlg;

错误现象 2:
编译无错误 但是链接出错 弹出对话框
Debug Assertion Failed!
File:afxwin1.inl Line:
22
断点追踪到

_AFXWIN_INLINE HINSTANCE AFXAPI AfxGetResourceHandle()
{ ASSERT(afxCurrentResourceHandle != NULL);}

代码如下
#include <afx.h>
#include "FluxStatic.h"
#include "MemDC.h"a
#include <math.h>
//#include "resource.h" // 不加句就会出现 如上的 错误现象1
#include "ShowDlg.h" // 子对话框
#include "GetAirReportDlg.h" // 我的主对话框

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

CGetAirReportDlg dlg; // 在这里加一句话就会出错现象2
//ASSERT( *dlg==NULL);

/////////////////////////////////////////////////////////////////////////////
// CFluxStatic

CFluxStatic::CFluxStatic()
{
brushInitalized = false;
// interfaceCallBack = NULL;
useAdaptiveScale = false;
gridxstartpos = 0;
gridystartpos = 0;
gridx = 15; //在x方向的网格距离
gridy = 15; //在y方向的网格距离
gridxspeed = -1; //在x方向的网格滚动条的滚动速度
gridyspeed = 0; //在y方向的网格滚动条的滚动速度
plot = 3; //图中的曲线的宽度
netupdate = 1000; //数据定时器的更新速率
gridupdate = 50; //网格更新速率
}

CFluxStatic::~CFluxStatic()
{
}

BEGIN_MESSAGE_MAP(CFluxStatic, CStatic)
//{{AFX_MSG_MAP(CFluxStatic)
ON_WM_PAINT()
ON_WM_TIMER()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFluxStatic message handlers
以下省去 。。。。。。。。。。。。。。。。
还是不行啊 反复编译也不行啊, 不知道如何解决
错误1 问题先不管;就是included "resource.h"可以解决
错误2 我已经知道是 以下情况导致的
主对话框类为A,子对话框类B; 我在 子类的.Cpp 文件里 的开始定义对象A 就出错。debug 错误,请问如何解决? 这个问题转到我另一个提问中去
http://zhidao.baidu.com/question/218851853.html
展开
 我来答
nlswlc
2011-01-24 · TA获得超过2068个赞
知道小有建树答主
回答量:779
采纳率:100%
帮助的人:640万
展开全部
一般在编程序时,都是生成了调试版的程序,就是在那个Debug目录下的可执行文件。运行这调试版的exe文件,都会动态连接MFC42D.DLL和MSVCRTD.DLL这两个文件,所以你如果将这个文件在其它机器上运行而这台机器没有这两个文件或者缺少一个,系统则会出现:“找不到所需.dll文件-某某.dll”这样的提示。而一般系统都不带有这两个文件,除非是装了vc等--事实是,我装了vc++6.0还发生了这种错误,不知道是不是盗版软件的问题...解决方法很简单:1,选择菜单build->Set Active Configuration,然后选择Release,也即我的++6.0的组建--配置--选择release2,选择菜单project->settings,在General选项卡里第一项选择Use MFC in a static Library,静态连接,也即我的++6.0的工程--设置,左边选择release,右边选择使用MFC作为静态链接库。上述两个步骤不能颠倒...我开始搞颠倒了,就怎么都不行...这就生成了发布版程序,在Release目录下,可执行文件不会用到那两个讨厌的dll文件,一般到别的机器上都能用。OK,我照做了,写了另一个程序,然后做实验,结果是正确的。要做一个通用的程序,就必须用发布版。
孤高的木枯
2019-06-10
知道答主
回答量:12
采纳率:0%
帮助的人:9042
展开全部
CFluxStatic.h文件里
#ifdef AFX_DESIGN_TIME
enum { IDD = };//=后面是你的对话框名字,要跟资源视图里对话框已知
#endif
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
咋办啊啊啊啊
2011-01-23
知道答主
回答量:36
采纳率:0%
帮助的人:19.2万
展开全部
重编试试 如果重编不行 那么看看 有没有在代码里 用到这些ID如果用到并且这些ID已经没用了那就删掉吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式