用VC++.net开发
在资源中添加一个对话框IDD_ANNOTATION_DIALOG后,利用.net的向导生成一个类CAnnotationDlg,没有经过任何修改,这个类的.h文件和.cpp文件如附件所示。
我在使用这个对话框的文件中。使用#include "AnnotationDlg.h"引用这个类,在编译的时候出错,出错消息是"AnnotationDlg.h中的IDD_ANNOTATION_DIALOG没有定义",IDD_ANNOTATION_DIALOG是对话框的ID。
为什么会出现这个错误呢?
我后来在AnnotationDlg.h文件中加入#include "resource.h",编译不再出现问题,但是运行时候这个类还是不行,我这样使用对话框:
CAnnotationDlg dlg;
dlg.DoModal();
结果没有弹出对话框,调试时发现dlg.DoModal()返回值为-1。那位大侠碰到过这个问题?请多多执教,谢谢!下面是AnnotationDlg.h和AnnotationDlg.cpp文件
------------------------------------------------------
#pragma once
// CAnnotationDlg 
class CAnnotationDlg : public CDialog
{
DECLARE_DYNAMIC(CAnnotationDlg)public:
CAnnotationDlg(CWnd* pParent = NULL); 
virtual ~CAnnotationDlg();
enum { IDD = IDD_ANNOTATION_DIALOG };protected:
virtual void DoDataExchange(CDataExchange* pDX);  
DECLARE_MESSAGE_MAP()
};----------------------------------------------------
// AnnotationDlg.cpp : タ装ファイル
//#include "stdafx.h"
#include "IVP2.h"
#include "AnnotationDlg.h"
// CAnnotationDlgIMPLEMENT_DYNAMIC(CAnnotationDlg, CDialog)
CAnnotationDlg::CAnnotationDlg(CWnd* pParent /*=NULL*/)
: CDialog(CAnnotationDlg::IDD, pParent)
{
}CAnnotationDlg::~CAnnotationDlg()
{
}void CAnnotationDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAnnotationDlg, CDialog)
END_MESSAGE_MAP()
// CAnnotationDlg

解决方案 »

  1.   

    在resource.h中看看IDD_ANNOTATION_DIALOG有没有#define
      

  2.   

    有,IDD_ANNOTATION_DIALOG是自动生成的
    所以在AnnotationDlg.h文件中加入#include "resource.h",编译不再出现问题
      

  3.   

    如果是自动生成的,#include "stdafx.h"
    中就应该含有#include "resource.h",你的问题,看看resource.h中的IDD_ANNOTATION_DIALOG跟其它的ID有没有相同的。如果还不可以,你重新做个工程看看