使用C++的托管扩展针对Windows窗体编程
e, int nCmdShow) { MessageBox::Show("Hello, Windows Forms"); } 因此,虽然这个简单的示例很有效地演示了最基本的 .NET 框架和 C++ 的托管扩展的概念,但它并不能很好地演示典型的 Windows 窗体程序。对于真实的应用程序,将需要一个 Form 类(或从 Form 派生的类)的实例,如下所示:
form 变量引用了托管类型的一个实例。托管对象是由 .NET 框架的公共语言运行库 (CLR) 处理的,它们的生存周期由垃圾回收器控制的,该回收器在一定的时间取消分配内存。因此,C++ 程序员无需显式地删除托管类型,但是同样不能指望在任何特定时刻(如关闭范围时)破坏对象。 创建窗体后,就需要显示它。如果您曾经看过 Windows 窗体的文档,可能已经注意到了 Form 方法 Show,这意味着:
虽然上面的代码可以显示窗体,但是必须眼疾手快才可以看到该窗体,这是因为 Show 以无模式的方式显示窗体。这意味着在 Show 将新的窗体显示到屏幕上之后,会立即将控制权返回给 Main 函数,该函数在返回时将退出进程,同时关闭刚刚显示不久的窗体。要以有模式的方式显示窗体,文档建议使用 ShowDialog 函数:
虽然这些代码事实上可以显示一个空窗体,并且在用户关闭它之后才会将控制权返回给 Main 函数,但通常您并不会编写这样的代码。相反,您将把一个窗体指定为主窗体,使得应用程序的其他部分可以把它当作主窗体来进行访问。为此,可以将主窗体作为一个参数传递给 Windows 窗体的 Application 对象的 Run 方法:
Application 类的静态 Run 方法将显示主窗体并开始发送 Windows 消息,直到主窗体关闭为止。主窗体关闭后,Run 将返回,让我们的 Main 函数退出,以便结束进程。要实际查看这一过程,可以使用下面的命令行编译这个小小的 Windows 窗体应用程序: C:MSDNMYFIRS~1>cl /clr MyFirstApp.cpp 现在,编译器已经生成了 MyFirstApp.exe,可以执行它了。关闭窗体时,MyFirstApp.exe 将退出,结束您的第一个 Windows 窗体应用程序。 要想增添一些趣味,可以在新窗体上设置一个属性。像 .NET 框架类库中的大多数对象一样,Form 对象有一些可以访问的属性、可以调用的方法和可以处理的事件。可以直接在 Form 类的实例上设置属性,但通常我们不会这么做。相反,每个自定义窗体都是一个派生自 Form 的类,并且会初始化自己的属性,如下所示:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |