代码之家  ›  专栏  ›  技术社区  ›  dotminic

Win32 MVC模式实现

  •  4
  • dotminic  · 技术社区  · 15 年前

    但在Win32中,这是否意味着我的windowProc应该在控制器中?我觉得有点奇怪,我会创建一个窗口和所有的UI内容,然后在控制器中对wndProc进行子类化。

    如果有人能给我指出正确的方向,那就太好了!

    谢谢。

    3 回复  |  直到 15 年前
        1
  •  3
  •   Karel Petranek    15 年前

    处理用户交互的代码是view。控制器将模型与视图“粘合”(简单地说)。窗口过程绝对属于GUI,即视图部分。从这个GUI中,您将生成控制器将捕获的事件、调用模型并响应它们。

        2
  •  1
  •   dajames    15 年前

    MFC的文档/视图模型是对MVC的一次不成熟的尝试。如果您想使用MFC,那么可以使用CView派生类来表示视图(duh!)以及一个CDocument派生类来表示模型。不幸的是,MFC并没有真正尝试将控制器功能与模型或视图分开。

    在SDI Doc/View应用程序中,Windows GUI的事件驱动特性使得将一些控制器功能放入视图变得非常容易——MFC中的许多向导生成的代码都是这样做的。

    在MDI应用程序中,每个模型都有多个视图,其中任何一个视图作为控制器显然都是错误的,因此将控制器逻辑放入document类或frame窗口的诱惑是。。。但是添加一个新类作为控制器并使用它包装域逻辑并不困难。不过,将这个类引入MFC有点困难,而且大多数人似乎并不介意。最简单的方法是将文档看作模型,并将控制器合并为一个模型。

    this article 例如,在Qt中支持MVC。

        3
  •  0
  •   Greg Domjan    15 年前

    问题可能在于你的抽象水平。

    假设您有相同的数据模型,以及如何修改它的控件,并且您希望将整个接口从win32更改为HTML。整个接口位就是视图。

    控制器通常需要存在于视图的特定部分的生命周期之外。