代码之家  ›  专栏  ›  技术社区  ›  Fábio

不带文档/视图架构的MFC

  •  2
  • Fábio  · 技术社区  · 16 年前

    我想要一些关于在没有文档/视图架构的情况下使用MFC的帮助。

    我创建了一个没有doc/VIEW支持的项目,Visual C++创建了一个 主框架 以及继承自 CWND . 我替换了继承自 化学武器 具有继承自的新视图 窗体视图 .

    但是,当我运行我的程序时,在我关闭窗口后,会得到一个堆损坏错误。

    3 回复  |  直到 16 年前
        1
  •  3
  •   DavidK    16 年前

    如果在框架窗口处理wm_create的内部,您首先更改代码以创建“magic”id为afx_idw_pane_的cformview实例,您会发现它成为框架窗口的视图。这是由于cframewnd::initialUpdateFrame()的行为所致,将从MFC内部调用它。关于这个有用的小功能的msdn页面评论:

    http://msdn.microsoft.com/en-us/library/ch3t7308.aspx

        2
  •  1
  •   Nick Dandoulakis    16 年前

    由于您希望使用对话框编辑器,而不希望使用文档/视图体系结构,因此您可能需要“基于对话框”的应用程序。

        3
  •  1
  •   Fábio    16 年前

    问题在于MFC的生命周期管理。视图声明(由VisualC++向导创建)是:

    CChildView        m_wndView;
    

    我将上述代码替换为:

    CChildFormView    m_wndView;
    

    cchildview继承自 CWND ,cchildformView继承自 窗体视图 . 两个视图都是由向导创建的,但只有cchildformView使用 声明\dyncreate / 实现动态创建 宏。

    因为m_wndview是在堆栈中创建的,所以当mfc自动调用delete时,我会得到错误。