下面的蓝色部分有什么意义?望大侠们指点一下!class CAboutDlg : public CDialog
{
public:
CAboutDlg();// Dialog Data
enum { IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support// Implementation
protected:
DECLARE_MESSAGE_MAP()
};CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()// App command to run the dialog
void Cmdi1App::OnAppAbout()
{
CAboutDlg aboutDlg;
aboutDlg.DoModal();
}

解决方案 »

  1.   

    IDD就是这个类的一个成员变量,并且它的值就是这个对话框的资源ID号,一般不能乱改,都是自动生成的.除非是你生成类后又改了其ID,这是候可以改变
      

  2.   

    这个我是知道的,我想知道的是这个enum有什么用,或者说它会在哪个地方被使用到?
      

  3.   

    这个我是知道的,我想知道的是这个enum有什么用,或者说它会在哪个地方被使用到?
    ========================
    一般来说,class的声明中是不允许出现赋值表达式的,因为它背离了面向对象思想。但某些情况下,用户觉得有必要给某些数据成员赋值,注意是在声明中赋值,你可以使用 enum。
    像这样enum { IDD = IDD_ABOUTBOX };
    IDD是有初始值的,即IDD_ABOUTBOX。
      

  4.   

    Enum是enumeration(列举)的简写形式,枚举,就知道这么点,坐等高人
      

  5.   

    其实:
    // const int IDD = IDD_TREECTRL_DIALOG;
    enum { IDD = IDD_TREECTRL_DIALOG };
    但const int IDD = IDD_TREECTRL_DIALOG;老标准不允许,所以只好用enum,这是一个hacker
    听说新标准可以支持
      

  6.   

    有两个原因:
    1。可读性。
    2。强调enum { IDD = IDD_XX_DIALOG };IDD已经赋值,不能赋值。如果重新赋值,便宜器给出错误,从而保证ID好的唯一性。
      

  7.   

    有两个原因:
    1。可读性。
    2。强调enum { IDD = IDD_XX_DIALOG };IDD已经赋值,不能赋值。如果重新赋值,便宜器给出错误,从而保证ID好的唯一性。
      

  8.   

    问得好,我也期待回答。CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
    {
    }
    IDD是否传给基类CDialog了?
      

  9.   

    在构造函数中有用啊,你上面代码中就有啊:
    CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
      

  10.   

    可读性啊
    本来 可用
    const int IDD = IDD_ABOUTBOX;//来代替的。。 但是 在类里不能这样直接初始化。。 所用enum代替
    enum { IDD = IDD_ABOUTBOX };
    记得 more effect c++ 上讲过的。。