如何写自己的、不是从mfc派生的类呢?用“建立类向导”和“新建类”好象都是从mfgc派生的。
如果是自己新建header文件和Cpp文件的话,那么和使用“建立类向导”建立的header文件比较,用“建立类向导”中
有:

#if !defined(AFX_PROJECT_H__51C63925_20DB_45FC_B4CE_E20D4401F616__INCLUDED_)
#define AFX_PROJECT_H__51C63925_20DB_45FC_B4CE_E20D4401F616__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
”和结尾有:
“#endif // !defined(AFX_PROJECT_H__51C63925_20DB_45FC_B4CE_E20D4401F616__INCLUDED_)”
是什么意思呢,自己写类的话要怎么写?
类似的在cpp文件中使用“建立类向导”的在include后有
“#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif”又是什么意思呢?
知道其然,想知道其所以然

解决方案 »

  1.   

    generic class 可以不过,你完全可以手工建立class啊!
      

  2.   

    insert class的时候选 generic class 不要选 MFC class
      

  3.   

    自己写
    //myfile.h
    #if !defined __MYFILE_H_
    #define __MYFILE_H_
    //头文件内容#endif//myfile.cpp
    #include "myfile.h"
    //cpp文件内容
      

  4.   

    前面只是一些防止重复编译的预处理代码
    后面是判断在DEBUG版本中显示调试信息#if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000这个不是很懂,不敢妄言。
      

  5.   

    #if !defined(AFX_PROJECT_H__51C63925_20DB_45FC_B4CE_E20D4401F616__INCLUDED_)
    #define AFX_PROJECT_H__51C63925_20DB_45FC_B4CE_E20D4401F616__INCLUDED_
    以上是防止头文件被重复编译的,是比较老式的用法,以前写的程序头文件都是这样的。#if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
    这句话也是防止头文件被重复编译的,是VC5以后的新用法。#pragma once就是只编译一次的意思,_MSC_VER是VC的版本,1000表示是VC 5.0,意思是VC 5.0以后的版本只写这句话就可以了。这时再用#ifdef只是为了兼容以前的VC版本。在.NET里头文件就只有#pragma once一句话了。“#ifdef _DEBUG
    #undef THIS_FILE
    static char THIS_FILE[]=__FILE__;
    #define new DEBUG_NEW
    #endif”
    这是VC帮你检查内存泄漏的,如果在DEBUG版本下有内存泄漏DEBUG窗口会提示的。
      

  6.   

    用insert菜单中的new class
    在class type中选择generic class
    然后为新类命名