科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件用托管C++开发Win表单的一般方法

用托管C++开发Win表单的一般方法

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

.NET框架在用户界面上提供了三种方式:Windows Forms(Win表单)、Web Forms(Web表单)和控制台应用程序

作者:Adding 来源:YESKY 2007年11月16日

关键字: 托管C++ 开发 Win表单 方法

  • 评论
  • 分享微博
  • 分享邮件
 .NET框架在用户界面上提供了三种方式:Windows Forms(Win表单)、Web Forms(Web表单)和控制台应用程序。本篇主要讨论如何用托管C++开发Win表单的一般方法。

  Win表单是开发标准Win32屏幕的一种更为高级的方法。与Visual C++中的MFC应用桌面程序相比较,最主要区别在于底层的Windows程序系统框架的不同。传统的Windows程序需要一个WinMain主函数,在这个主函数中进行窗口的创建、注册以及通过一个开头语句进行消息循环。MFC对传统的Windows编程方法进行了大量封装,它将WinMain函数隐藏到应用程序框架内部,当用户运行应用程序时,系统首先自动查找该应用程序的全局theApp,然后自动调用虚函数InitInstance,该函数会进一步调用相应的函数来完成主窗口的构造和显示工作。而托管C++是通过Win表单中的Application(应用程序类)的方法Run在当前线程中启用一个消息循环,并根据所指定的Form类构造一个默认表单窗口,用于创建和设计窗口的所有用户源代码都添加在这个Form类中。例如下面的程序:



#using
using namespace System;

// 添加WinForms所需要的dlls
#using "System.dll"
#using "System.Windows.Forms.dll"
#using "System.Drawing.dll"

// 添加WinForms所需要的名称空间
using namespace System::ComponentModel;
using namespace System::Windows::Forms;
using namespace System::Drawing;

// 定义一个__gc托管类,包含创建表单的所有代码
__gc class WinForm: public Form
{
private:
String *caption; // WinForm的标题
int width; // WinForm的宽度
int height; // WinForm的高度
public:
WinForm()
{
caption = S"用托管C++开发Win表单应用程序";
width = 400;
height = 300;
InitForm(); // 调用自定义的表单初始化代码
}
void Dispose() // 表单释放,类似于析构函数
{
// 所有的删除代码添加在这里
Form::Dispose(); // 默认的释放操作
}
void InitForm() // 所有的表单代码都添加在该方法中
{
Text = caption; // 设置表单窗口标题
Size = Drawing::Size(width, height); // 设置表示窗口大小
MaximizeBox = 0; // 禁止使用窗口的最大化按钮
}
};
#ifdef _UNICODE
int wmain(void)
#else
int main(void)
#endif
{
Application::Run(new WinForm()); // 启用应用程序,运行该类
return 0;
}

  代码中,WinForm是我们定义的一个托管C++类,所有的表单程序代码都添加在这个类中,且该类的InitForm是一个主要的成员方法,所有的控件等代码都添加在这个方法中。我们来看看上述代码的运行过程:主函数main中调用Application类的方法Run在当前线程中启用一个消息循环,并根据所指定的Form类构造一个默认表单窗口,随后并调用WinForm类的构造函数,由于构造函数中有一个InitForm方法,因而也一并被调用。InitForm方法包含表单的所有代码,系统会根据其中的代码进行相关属性设置、事件处理和相关方法调用。

  上述代码中的Text、Size和MaximizeBox是表单窗口标题、大小和是否使用最大化按钮的属性。前面我们曾提到过,.NET框架的属性操作被简化成类似一个变量的操作,但在内部实际上仍然是调用set和get属性方法。表单窗口属性还有一些,例如ForeColor(窗口前景色)、Menu(系统菜单属性)、Icon(图标属性)、BackgroundImage(背景图像属性)等。
上述程序运行后,结果如图1所示。


  综上所述,用托管C++创建Win表单的一般过程如下:

  (1) 用Visual C++.NET应用程序向导创建一个托管C++应用程序。

  选择“文件”?“新建”?“项目”菜单,在弹出的“新建项目”对话框中选择“Visual C++项目”类型,这时在模板列表中显示出一系列的应用程序项目模板。选择“托管的C++应用程序”模板类型,将项目工作文件夹定位到自己的文件夹中,如“E:\Visual C++.NET程序”。并在“名称”框中输入项目名,单击“确定”按钮即可。

  (2) 在源文件中添加Win表单所需要的基本名称空间和相关DLLs,参看上述代码,需要说明的是,随着所使用的.NET类库的不同,相应的名称空间和相关DLLs也需要在此基础上进行添加。

  (3) 创建一个基于托管类Form的派生类,所有的Win表单相关的代码都添加在这个类中。

  (4) 在main或wmain中添加Application::Run等相关代码。

  在下一篇中,我们将着重讨论表单中控件的添加、事件处理以及相关编程技巧。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章