关于VC中enum { IDD = IDD_ABOUTBOX }用法一点看法_lizhon...(转载)

* * 7位粉丝 * 1楼 VC++基于对话框的程序中,在基于CDialog类的类头文件中,在类的成员变量声明部分,总会有类似 enum { IDD = IDD_AAAAA }的声明, 作用: enum在这里的作用就是相当于类里面定义的常量,此常量用来唯一标识此对话框类对应的对话框,也就是此对话框的ID号. 疑问: 为什么要采用如此常量的定义方式,而不是其它关键字呢?比如const? 解惑: 首先我们应该对enum这种枚举型的优点,或其存在的意义有所了解才能真正弄清此问题, 枚举类型: C语言或C++的一种构造类型,它用于声明一组命名的常数。  (1)枚举的声明:枚举声明用于声明新的枚举类型。   访问修辞符 enum 枚举名:基础类型   {   枚举成员   }   基础类型必须能够表示该枚举中定义的所有枚举数值。枚举声明可以显式地声明 byte、sbyte、short、ushort、int、uint、long 或 ulong 类型作为对应的基础类型。没有显式地声明基础类型的枚举声明意味着所对应的基础类型是 int。   (2)枚举成员   枚举成员是该枚举类型的命名常数。任意两个枚举成员不能具有相同的名称。每个枚举成员均具有相关联的常数值。此值的类型就是枚举的基础类型。每个枚举成员的常数值必须在该枚举的基础类型的范围之内。   示例:   public enum TimeofDay:uint   {   Morning=-3,   Afternoon=-2,   Evening=-1   }   产生编译时错误,原因是常数值 -1、-2 和 –3 不在基础整型 uint 的范围内。 枚举类型的优点: 1.它将使程序更容易编写,阅读和维护 2.它是强类型的,不能将一个枚举做为另一个枚举值来使用 3枚举类型定义的符号是常量值,编译器一旦发现代码引用了一个枚举型的符号,在编译时就会用数值替换该符号 4.直观,易于理解,加强可读性 性别、月份、星期几、颜色、单位名、学历、职业等,都不是数值数据...如果用一个数值来代表某一状态,这种处理方法不直观,易读性差...如果能在程序中用自然语言中有相应含义的单词来代表某一状态,则程序就很容易阅读和理解...也就是说,事先考虑到某一变量可能取的值,尽量用自然语言中含义清楚的单词来表示它的每一个值,这种方法称为枚举方法,用这种方法定义的类型称枚举类型。 结论: 关于VC中使用 enum { IDD = IDD_ABOUTBOX }来声明对话框ID的用法(以本人理解)是基于程序更其易于理解,加强程序的可读性方面考虑的。

vc++利用ADOX创建数据库 // ADOXCreateDatabaseDlg.cpp : implementation file // #include "stdafx.h" #include "ADOXCreateDatabase.h" #include "ADOXCreateDatabaseDlg.h" #include "Shlwapi.h" #pragma comment(lib,"shlwapi.lib") // Download by http://www.codefans.net #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CADOXCreateDatabaseDlg dialog CADOXCreateDatabaseDlg::CADOXCreateDatabaseDlg(CWnd* pParent /*=NULL*/) : CDialog(CADOXCreateDatabaseDlg::IDD, pParent) { //{{AFX_DATA_INIT(CADOXCreateDatabaseDlg) m_dbName = _T(""); //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CADOXCreateDatabaseDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CADOXCreateDatabaseDlg) DDX_Text(pDX, IDC_DBNAME, m_dbName); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CADOXCreateDatabaseDlg, CDialog) //{{AFX_MSG_MAP(CADOXCreateDatabaseDlg) ON_WM_SYSCOMM
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值