19. 将Form1::Main()中唯一的代码行移入_tmain()中,稍做编译变为:Application::Run(new cs1::Form1()); (如果你将原来主名字空间的名字cs1做了改变,那么对该行代码进行调整即可)。
20. 因为Form1::Main()没有什么更深一步的工作要做,所以可以完全去掉它。
21. 为了展示你的应用程序,还要将对_tmain()的声明改为int_stdcall WinMain(),这样你在运行你的Windows视窗应用程序时在你程序的视窗背景中不会出现一个黑色的警告框。
以上就是我们所需要完成的工作,试着创建一个并运行看看。如果你的编译器报错,那可能是在修改语言时漏掉了某处,出现的提示信息会告诉什么地方需要修改。我为大家提供的程序代码大致如下:
// This is the main project file for VC++ application project
// generated using an Application Wizard.
#include "stdafx.h"
#using <mscorlib.dll>
#include <tchar.h>
#using <System.dll>
#using <System.Drawing.dll>
#using <System.Windows.Forms.dll>
#using <System.Data.dll>
using namespace System;
using namespace System::Drawing;
using namespace System::Collections;
using namespace System::ComponentModel;
using namespace System::Windows::Forms;
using namespace System::Data;
namespace cs1
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public __gc class Form1 : public System::Windows::Forms::Form
{
private:
Button* button1;
Label* label1;
/// <summary>
/// Required designer variable.
/// </summary>
System::ComponentModel::Container* components;
public:
Form1()
{
//
// Required for Windows Form Designer support
//
components = NULL;
InitializeComponent();
//
// TODO: Add any constructor code after
// InitializeComponent call
//
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected:
void Dispose( bool disposing )
{
if( disposing )
{
if (components != NULL)
{
components->Dispose();
}
}
Form::Dispose( disposing );
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private:
void InitializeComponent()
{
button1 = new Button();
label1 = new Label();
SuspendLayout();
//
// button1
//
button1->Location = Point(48, 96);
button1->Name = "button1";
button1->TabIndex = 0;
button1->Text = "Greet Me";
button1->Click += new System::EventHandler(this,
&Form1::button1_Click);
//
// label1
//
label1->Location = Point(184, 96);
label1->Name = "label1";
label1->TabIndex = 1;
//
// Form1
//
AutoScaleBaseSize = System::Drawing::Size(5, 13);
ClientSize = System::Drawing::Size(292, 273);
Controls->Add(label1);
Controls->Add(button1);
Name = "Form1";
Text = "Form1";
ResumeLayout(false);
}
private:
void button1_Click(Object* sender, System::EventArgs* e)
{
label1->Text = "Hello from C++!";
}
};
}
// This is the entry point for this application
int __stdcall WinMain()
{
Application::Run(new cs1::Form1());
return 0;
} |
你以后还想对你的用户界面做什么样的变换吗?是在用户界面上再添加一个按钮和处理器,还是想移动用户界面上已存在的某个控制键?那么,你有两个选择:对你已有的C++程序代码进行修改编译,或者你回到最初的C#应用程序中来编译改建你的用户界面,然后再对产生的新代码做一些细致的拷贝以及再编译工作使其C#代码转变成C++代码。
你会发现界面中每个控制键的位置、名称以及控制键上的文字内容都是在InitializeCompenent()这个函数中定义设置的,所以改变编译这个函数中的的程序代码即可随意的重新布置你的用户界面,或拷贝这些程序代码就可以添加更多的控制键和处理器。
小结
好了,这就是我这次讲解的全部内容。我希望能向你展示比你最初认识C++时更强的应用能力,而且也示范说明了C#和C++之间的一些语法上的差异。
关于作者
Kate Gregory是Gregory咨询公司()的创建者之一。2002年1月,被指派为MSDN的多伦多地区的主管。她在C++方面的经验可以追溯到Visual C++存在以前。她是一个在大学和微软中知名的演说家,涉及的内容包括NET, Visual Studio, XML, UML, C++, Java, 和Internet。Kate和她公司的同事们擅长于结合软件和网站的开发以创建活力十足的网站。她们创建针对WEB页面和其他程序的畅销软件。Kate还是很多有关Que的书的作者,包括Special Edition Using Visual C++ .NET。 |