问题如下:
1。当在一个视图类(CxxView)类中调用对话框类(Cxxdialog)的时候,书上一般会讲,要在CxxView.cpp文件的开头加入#include"xxdialog.h"语句,而且会告诉,要加在#include“xxdoc.h”后,但按理讲,头文件的包含语句可以打乱的。但我若把#include "xxdialog.h"语句,加在最开始,而不是放在#include"xxdoc.h"后,则会出现错误。这个问题我一直没想清楚。
2。在aaplication wizard生成的框架中,一般,头文件的包含语句都是写在.cpp文件中的。但,我似乎认为,写在.h文件中,还是.cpp文件中应该都是一样的吧?但在用到odbc的时候,我们都要用到#include"afxdb.h",我在用class wizard生成的cxxrecordset的头文件里,加入了#include“afxdb.h”可以运行,但恰恰若把这句话放在cxxrecordset.cpp文件中,反而不行了。没搞懂,请大家指点!

解决方案 »

  1.   

    2、因为你的Recordset是从CRecordset派生来得,也就是说在你的头文件中已经用到了CRecordset的定义,所以必须在头文件里包含afxdb.h
      

  2.   

    请问blackblue,书上一般习惯将#include<afxdb.h>加到afxwin.h里面,其他的都不变,这样程序可以是运行的。如果按你的说法,哪个文件里用了recordset,哪个文件就要包含#include<afxdb.h>,那书上只在afxwin.h里加入了这句包含语言。而且在cxxrecordset.h里也没有包含afxwin.h,只在cxxrecordset。cpp里有这句话,那程序为什么可以运行呢?因为书上也没有在cxxrecordset.h里加入#include<afxdb.h>啊,我没搞得太懂。
      

  3.   

    请问 Mackz。在哪里可以找到关于头文件的顺序的资料?我以前一直以为几个包含文件,应该可以打乱顺序的。你可不可以大致讲一下这两段包含文件有什么不同?假设我的工程名叫xx。
    1.
    #include<afxwin.h>
    #include<xx.h>  //这是工程的头文件#include<xxdoc.h>  //包含了文档类的头文件
    #include<xxview.h>  //视图类的头文件
    #include<afxdb.h>2.
    #include<afxdb.h>
    #include<afxwin.h>
    #include<xx.h>  //这是工程的头文件#include<xxdoc.h>  //包含了文档类的头文件
    #include<xxview.h>  //视图类的头文件请指教,谢谢!
      

  4.   

    请问blackblue,书上一般习惯将#include<afxdb.h>加到afxwin.h里面,其他的都不变,这样程序可以是运行的。《《《《不是加到afxwin.h里,而是加到stdafx.h里如果按你的说法,哪个文件里用了recordset,哪个文件就要包含#include<afxdb.h>,那书上只在afxwin.h里加入了这句包含语言。而且在cxxrecordset.h里也没有包含afxwin.h,只在cxxrecordset。cpp里有这句话,那程序为什么可以运行呢?因为书上也没有在cxxrecordset.h里加入#include<afxdb.h>啊,我没搞得太懂。《《《《《书上的头文件里不加是因为已经加在了stdafx.h文件中,这个预编译文件包含了所以需要用到的东西,相当于预先已经声明了要用到的类。你同样可以把#include <afxdb.h>加在stdafx.h中,这样就不需要在每个recordset的头文件中增加#include <afxdb.h>