为什么对话框类不能作为另一个类的引用变量成员?
一个基于对话框的MFC程序。
本来有一个对话框类CTESTDlg;
我新建了一个C++类,为这个C++类添加一个CTESTDlg*的指针成员。这样这个C++类就好向对话框发送消息了。
可是编译通不过,出现未声明错误
#pragma once
#include "TESTDlg.h"
class Foo
{
public:
Foo(void);
~Foo(void);
private:
CTESTDlg *m_dlg;//
};
//下面为vs自动生成的对话框的头文件
// TESTDlg.h : 头文件
//
#pragma once
// CTESTDlg 对话框
class CTESTDlg : public CDialogEx
{
// 构造
public:
CTESTDlg(CWnd* pParent = NULL);// 标准构造函数
// 对话框数据
enum { IDD = IDD_TEST_DIALOG };
protected:
virtual void DoDataExchange(CDataExchange* pDX);// DDX/DDV 支持
// 实现
protected:
HICON m_hIcon;
// 生成的消息映射函数
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
};
报错信息如下testdlg.h(16): error C2065: “IDD_TEST_DIALOG”: 未声明的标识符
难道对话框类不能作为另一个类的成员变量吗?
[解决办法]
在工程里找找 IDD_TEST_DIALOG 对应的资源,看看是否存在。
[解决办法]
强行把 Foo 的定义写在 TESTDlg.h 里面,看是否还报错,如果不报的话,那就是需要包含其他头文件。
[解决办法]
要包含Resource.h吧