最近学mfc,看了第六章之后,想自己用vc6.0重复一遍
然后问题出来了,按照书本的方法,我用vc6.0建立MFC程序,然后在CMainFrame那里添加一个Create()函数,填上参数之后,运行一遍,发现程序崩溃了,然后检查好久之后,发现书的版本里,诸如UpdateWindow()等的参数发生了变化,还多了个LoadFrame()。
而且,在我没加Create()之前,这个程序是可行的。
我的想法是这样的:
vc5.0和vc6.0的mfc版本存在差异,导致加入Create()之后有些变化。
但问题到底怎么解决呢?那有请大家帮忙了,谢谢。

解决方案 »

  1.   

    不知道你 的create是做什么的,cmainframe里面不是有个oncreate了吗?
      

  2.   

    那本书看过很久了,有点忘了,不过感觉你好像看错了。
    不是向CMainFrame类里面添加一个Create()函数,而是在它的构造函数中调用Create函数,向下面这样       CMainFrame(){
               Create(NULL,"Window Name");
           }Create函数是一个virtual函数,你要是再定义一个Create,那原先写得挺好的Create的函数就捞不着调用了,而你写的函数又是一造成系统崩溃的函数。
      

  3.   

    你手动加了一个Create函数,代码贴出来看看?MainFrm有OnCreate函数,用来做一些初始化的。
      

  4.   

    [Quote=引用 4 楼 zxdyu2009 的回复:]呃,不好意思,我表达错了,应该说,我在构造函数里调用了Create()函数,请楼下的朋友注意一下,谢谢
      

  5.   

    CMainFrame派生自CFrameWnd,当CMainFrame::Create虚函数时,实际是CFrameWnd::Create,然后是CWnd::Create在CWnd内最终调用API 函数::CreateEX,你改写了Create虚函数,使得MFC内部直接执行了你的Create虚函数改了路线了,我只能理解到这里,以后就不知了
      

  6.   

    这种情况我也遇到过,你可以去查不同版本VC相应的MSDN,MSDN会根据不同的版本做一些相应的调整!不过这些调整都很小,编程的时候遇到了上MSDN或百度查下就解决了,多练几次就记住了!主要的还是编程的思想的学习!