我在程序里自己加入OpenGLView来作为View的基类,在类的继承,IMPLEMENT_DYNCREATE和BEGIN_MESSAGE_MAP里都改好了,Wizzard里显示BaseClass也正确,可以使用。但在ClassWizzard的MessageMaps里始终无法显示OpenGLView,为什么呢?用手工修改类,比用Wizzard麻烦好多......

解决方案 »

  1.   

    OpenGLView是用ClassWizzard添加的吗?
      

  2.   

    我在程序里自己加入OpenGLView来作为View的基类这句话什么意思?
    是你生成workspace时,View类选择的基类是OpenGLView吗?
    我在我的vc里面没找到这个基类还是你生成workspace时,View类选择的基类是CView,你生成的View类的名字是OpenGLView?
      

  3.   

    你的这个类是MFC的标准类吗?如果不是,在ClassWizard中是看不到的!
    因为只有MFC类库才有消息映射机制,其他的语言是没有这种机制的!MFC
    的消息映射机制是以表驱动的(消息映射表),而标准C++,是以继承的方式
    来实现的!
    希望对你有所帮助!
      

  4.   

    惭愧......我还不懂用Wizzard加类呢!加这个OpenGLView是先生成一般的View,然后手动改变父类等。纯粹手工生成,可能因此Wizzard才找不到吧?这个类不是标准的类,是在View的基础上加上OpenGL函数的东西。但既然它是从View改出来的,应该和MFC标准类一样的吧?我这样问,主要是因为看到一个有一个程序可以在Wizzard里显示OpenGLView,所以想知道怎么做而已。这个类太长贴不出来,具体资料可以看看http://people.msoe.edu/~welch/courses/cs421/opengl_mfc.html
    它写得挺好玩,用来做学习MFC的文档/视结构的初级教材也不错~~呵呵
      

  5.   

    ClassWizard只能用于MFC派生类的.
    它是MFC辅助工具.
    MSDN里有一篇文档时讲到不用ClassWizard生成的类,怎么用的.
    文档编号为:KB99161,
    题目为: HOWTO: Derive From Classes not Listed in ClassWizard.
    查一下..
      

  6.   

    1. Delete the project .CLW file.
    2. Start App Studio, load you project .RC file, and active Class Wizard.
    3. Because the project does not have a .CLW file, ClassWizard prompts a .CLW file. Choose yes to generate the.
    NOTE:
    You must generate this file in App Studio. If you attempt to generate the file in Viaual Workbench, VWB instructs you to generate the file in App Studio.