编辑:
我所做的是将“主窗口”创建和消息处理程序移动到控制器中,现在只有控制器需要了解模型和视图。由于主窗口消息是在控制器自己处理的,所以可以很方便的调用view来改变,调用model来做逻辑,view永远不需要调用model,如果model需要和View对话,那么有3个选项:
它可以通过从 Model 向调用返回一个值,然后 Model 根据从 Model 返回的内容调用 View 来做到这一点。
Model 可以将 WM_APP 消息发布到主窗口,然后 Model 相应地调用 View。
如果更改非常小,例如更改静态控件的文本,控制器可以将这些控件的句柄传递给模型,模型可以自己进行更改。
有什么建议吗?
我试图了解 MVC 如何在 c++ 和纯 winapi 中工作,因此正在开发一个演示应用程序,并尝试实现我自己的 MVC 解释/版本。这个想法是让控制器处于完全控制状态,一切都通过控制器进行中继。
设计 :
每个类都在它自己的文件.h 和.cpp 我们的main.cpp,视图类和模型类都只能与控制器和控制器通信,它们之间不会直接进行任何通信。
- 视图类(将有超过 1 个 gui(子窗口),包括主窗口 gui)只会创建、显示、隐藏和销毁窗口(视图)主窗口的消息循环和任何子或超类子窗口将位于控制器文件夹或模型文件夹中。
- 控制器将进一步具有文件views.h,views.cpp用于与视图类通信和model.h,model.cpp用于与模型类通信的子文件夹,其结构与视图相似。
- 模型将在不同的文件中有与应用程序相关的不同逻辑的文件。
它看起来像:
问题:不同文件中有太多相互依赖的类。
你会建议什么样的方法,如果可能的话,我想保留“一切都通过控制器中继”的想法。