您现在的位置是: 软件 > 开发者网络 > 程序方舟 > 开发专栏 > Visual C++开发 > 正文


-FreeHand MX全新体验
-注册表知识群集
-Delphi经典编程100例
-PHP编程实录

托管C++程序开发—Win表单文档程序设计(下)
2002-05-30· ·Adding··YESKY

1 2 3  下一页



  MFC的“文档/视图”机制最大的好处是可以很容易实现“一档多视”。但其内部机制是非常复杂,我们没有必要也不可能自己用托管C++方法去设计这样的机制,不过对于常用的文档、视图和窗口的经典问题,我们仍有必要对此进行深入探讨。这些问题包括:切分窗口、视图切换以及一档多视。限于篇幅,这里仅就切分窗口以及窗格之间的数据传送作深入研究。

  一、创建切分窗口

  我们知道,MFC的切分窗口是一种“特殊”的文档窗口,它可以有许多窗格(pane),在窗格中又可包含若干个视图。并且它有静态切分和动态切分之分,而且静态切分允许的最大窗格数目为16 x 16。但在.NET中,切分窗口的概念已经发生了很大的变化,它将切分窗口中所用的切分条Splitter变成一个类,因此在.NET中,用托管C++创建切分需要另外方法,并且也不能像MFC那样可以随意静态切分256个窗格。事实上,在实际运用中,由于现在的编程工具提供丰富的Win32界面功能,因而我们大多数所使用的切分窗口通常只需2到3个窗格,而更复杂的界面则由其他方法来实现。
由于动态切分窗口在.NET中用托管C++很难实现,因此我们这里仅对静态切分作探讨。

  先看一个简单的示例代码:

#using
using namespace System;

#using "System.dll"
#using "System.Windows.Forms.dll"
#using "System.Drawing.dll"

using namespace System::ComponentModel;
using namespace System::Windows::Forms;
using namespace System::Drawing;

__gc class WinForm: public Form
{
private:
TreeView *m_pTreeDirs; // 定义树视图类对象
ListView *m_pListFiles; // 定义列表视图类对象
Splitter *m_pSplitter; // 定义切分条类对象

public:
WinForm()
{
InitForm();
}
void Dispose()
{
Form::Dispose();
}
void InitForm()
{

Text = S"切分窗口的应用示例";
ClientSize = Drawing::Size(600, 400); // 设置窗口客户区大小

m_pTreeDirs = new TreeView();
m_pSplitter = new Splitter();
m_pListFiles = new ListView();

m_pTreeDirs->Size = Drawing::Size(200,400);
m_pTreeDirs->Dock = DockStyle::Left;
m_pTreeDirs->TabIndex = 0;

m_pSplitter->TabStop = false;
m_pSplitter->BorderStyle = BorderStyle::Fixed3D;
m_pSplitter->Dock = DockStyle::Left;
m_pSplitter->TabIndex = 1;

m_pListFiles->Dock = DockStyle::Fill;

Controls->Add(m_pListFiles);
Controls->Add(m_pSplitter);
Controls->Add(m_pTreeDirs);
}
};
#ifdef _UNICODE
int wmain(void)
#else
int main(void)
#endif
{
Application::Run(new WinForm());
return 0;
}

         图1

1 2 3  下一页

【责任编辑:方舟】
【发表评论】【关闭窗口】
■ 相关内容
 Managed C++设计新邮件检查器
 控制台窗口界面控制设计(一)
 C++ 代码优化
 托管C++程序开发—Win表单文档程序设计(中)
 用托管C++开发Win表单的一般方法
 Visual C++ .NET编程:托管C++概述
 在VC++中获取Agent角色的动作列表
 控制VC++.NET中WEB对话框的HTML元素属性
 使用Visual C++.NET的WEB对话框
 初识Visual C++.NET开发环境
感谢 访问天极网,如果您觉得该文章涉及版权问题,请看这里!