"这篇文档主要介绍了如何在VC++中将FORM视图与分割视图进行连接,涉及到的主要知识点包括视图分割、静态和动态视图的区别、类的成员函数如`CreateStatic`和`CreateView`,以及FORM类型对话框的创建和使用。"
在VC++编程中,视图(View)是MFC应用程序用户界面的核心部分,它们通常展示数据并处理用户交互。在本例中,我们关注的是如何将FORM视图(一种特殊的对话框)与分割视图(Splitter View)结合。
1. 分割视图允许用户动态或静态地分割窗口,以便显示多个视图。静态分割视图意味着视图可以是不同类的实例,用户只能调整窗口大小,而不能添加或删除视图。动态分割视图则允许视图的数量和大小变化,但所有视图必须是同一类的实例。
2. `CSplitterWnd`类是实现分割视图的关键,`CreateStatic`函数用于创建静态分割视图。该函数接收两个参数,`nRows`和`nCols`,分别表示行数和列数,定义了视图的网格布局。例如,`m_splitter.CreateStatic(this,1,2)`创建了一个1行2列的分割视图。
3. `CreateView`函数用于填充分割视图的各个单元格。它需要指定行、列索引、运行时类(RUNTIME_CLASS)、视图尺寸(CSize)和上下文指针(pContext)。例如,`m_splitter.CreateView(0,0,RUNTIME_CLASS(FormDlg),CSize(100,100),pContext)`在第一行第一列的位置创建了一个`FormDlg`类的视图,尺寸为100x100像素。
4. FORM类型对话框是具有视图特性的对话框,其资源ID通常为IDD_FORMVIEW,并且基类通常是`CFormView`。与标准对话框相比,创建过程略有不同,需要插入特定的资源并选择正确的基类。
5. 创建FORM类型对话框通常需要在主框架类中添加一个`CSplitterWnd`成员变量,然后在`OnCreateClient`函数中完成视图的创建和连接。代码示例展示了如何创建一个包含`FormDlg`和`CFENGEView`的静态分割视图。
6. 如果需要进一步分割已有的分割视图,可以调用`CreateStatic`函数来嵌套创建。例如,`m_splitter1.CreateStatic(&m_splitter,2,1,...)`会在已有的分割视图`m_splitter`内创建一个新的2行1列的分割视图。
7. 控件如列表控件(List Control)的使用也是界面设计的一部分。插入列表控件并设置为报告视图,可以显示和编辑数据。通过类向导添加控件事件处理,可以实现对列表控件的操作和数据交互。
连接FORM视图和分割视图涉及到了MFC中视图的概念、`CSplitterWnd`类的使用,以及FORM对话框的创建。理解和熟练掌握这些技术,有助于构建更复杂、灵活的用户界面。