快速业务通道

使用C++的托管扩展针对Windows窗体编程

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30
供,而是位于该框架中的其他部分中。例如,Windows 窗体本身并不提供任何对象序列化支持,但是 .NET 框架类库的其余部分提供了多种序列化对象图的方法。

这是 MFC 和 Windows 窗体之间的主要区别。MFC 旨在替代基础 Win32 API,但这并不能阻止 Win32 API 增长。事实上,就像 MFC 随时间的不断增长一样,基础 OS 的功能最少增加了十倍。但是,Windows 窗体只是 Win32 的窗口化部分的替代物。.NET 框架类的其余部分负责替代其余的 Win32。当然,框架永远不可能替代整个 Win32 API,不过,由于在可预期的未来,大多数要添加到 Windows 中的新功能都要被添加到框架中,替代整个 Win32 API 将是一个未来的目标。

因此,虽然 Windows 窗体不能具有 MFC 的全部功能,但它的确提供了一组很强的功能,可以极大地便利客户端应用程序开发人员,这其中包括一些 MFC 完全不具备的功能。下面,我们将介绍如何从头开始构建应用程序,然后讲解 Visual Studio .NET 2003 为 Windows 窗体 C++ 程序员提供的工作效率改进功能。

从头开始创建 Windows 窗体

典型的 Windows 窗体应用程序有至少一个窗体。窗体就是一个窗口,也就是从 Windows 1.0 开始我们所看到的 Microsoft 用户界面单元。通常,Windows 窗体应用程序中的一个窗体是主窗体,意思是它是应用程序的生存周期内可能显示的所有其他窗体的父级或所有者。该窗体是显示主菜单以及工具栏、任务栏等的位置。主窗体结束时,应用程序也退出。

应用程序的主窗体可以是一个简单的消息框、一个对话框、一个 SDI 窗口、一个 MDI 窗口,或者更为复杂的控件,如 Visual Studio .NET 这样的应用程序中具有多个子窗口、工具窗口和浮动工具栏的窗体。

如果您的应用程序极为简单,可以使用充斥在任何窗口化系统中的简朴的消息框来实现它:

#using <mscorlib.dll>
#using <System.dll>
#using <System.Windows.Forms.dll>
void __stdcall WinMain(HINSTANCE hInstance,
       HINSTANCE hPrevInstance,
     long lpCmdLine,
     int nCmdShow)
{
 System::Windows::Forms::MessageBox::Show("Hello, Windows Forms");
}

作为 C++ 程序员,您必定非常熟悉 WinMain 入口点,在托管应用程序中,仍需要该入口点。在我们的第一个 Windows 窗体应用程序中,唯一一行实际的代码调用了 Windows::System::Forms::MessageBox 类的静态 Show 方法,这其实只是调用包含在 Window::Systems::Forms 命名空间 内的 MessageBox 类的静态方法的长写形式。.NET 框架类库中广泛使用了命名空间来将类、结构、枚举等类型分隔为不同的逻辑组。由于有数以千计的 Microsoft 雇员要从事添加 .NET 框架类库的工作,而且有数以百计的第三方组织要扩展该类库,同时有数以百万计的程序员正在尝试学习它,因此这种分隔是非常必要的。没有命名空间,就需要采用各种复杂的约定来唯一地命名各种对象(像现有的 Win32 API 一样)。

命名空间中的类型的定义位于 .NET 程序集 中。程序集是打包为 DLL 或 EXE 的托管类型的容器。#using 指令用于将程序集中的类型应用到您的应用程序中。例如,mscorlib 和 System 程序集提供了基本的 .NET 框架类型,如 int 和 string。System.Windows.Forms 程序集包含了 Windows 窗体类型。

使用 #using 将程序集应用到应用程序中后,就可以以前面讲到的长写形式引用类型,或者,可以使用标准的 C++ using namespace 语句来省略键入代码的工作:

#using <mscorlib.dll>
#using <System.Windows.Forms.dll>
using namespace System::Windows::Forms;
void __stdcall WinMain(HINSTANCE hInstance,
       HINSTANCE hPrevInstance,
     long lpCmdLin

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号