用VC++.net制作WinForm Application

** 用 ** ** VC++.net ** ** 制作 ** ** WinForm Application **

新的 .NET Framework 出世了,随之而来的是新的开发方法,开发理念。这本无可厚非的,但微软似乎总是偏爱她的嫡传( VB,VC# ) , .NET Framework 似乎也是为他们量身定做的。唯独大众化的 C++ 被冷落了(虽然 MFC 也进化到了 7.0, 对标准 C++ 支持也比以前强了),先进的 RAD 开发模式始终远离 VC++( 也许是 MFC 框架太成熟了,改起来不方便 ^_^), 不过微软为了让 VC++ 也沐浴点 .NET 的光泽,推出了 MC++(Managed Extensions for C++.),C++

程序员眼光一亮,这回我们也可以追随 .NET 了 ( 虽然依然不能像 VB,VC# 程序员那样用鼠标

指指点点就可以完成一个程序)。 Microsoft .NET Framework Class Library .NET 框架类库

用惯了 MFC 和 API 编程,冷不丁的转向 . NET Framework 可能还有些不习惯,不过用时间长了,你会发现 . NET Framework 也不错么( ^^ )。其实我们还是在用 ”MFC” ,只不过这次是 “ MFC …… ** M _ ** icrosoft .NET **_ F _ ** ramework **_ C _ ** lass Library , 微软 .NET 框架类库”。( ^_^ )

下面我用一个例子来谈谈我的体会我将用 MC++ 制作一个 WinForm Application , WinForm

是 .NET 的标准 GUI 界面 , 功能十分之强大。下面我们就来看看用 MC++ 如何制作一个简单的

Hello,World! 程序。

由于文章篇幅有限, MC++ 的特性我在这里就不详细介绍了,我将在制作过程中稍加解释。下面就开始了:

在 VS.NET 中,建立一个 VC++ 新项目,我们把她取名为 VCWinFormApp, 当然它是个

托管的 C++ 应用程序类型了。之后点击“确定”。等待吧!(我的赛扬 366 正在接受着 VS.NET 的考验)一袋烟的功夫,该创建的文件都已经创建好了。看看吧,有什么东西,哇,只有

VCWinFormApp.cpp 一个主要文件(我们经常认为是 .h,..cpp 比较重要), stdafx.h 和 stdafx.cpp

文件里什么也么有。(想一想原来 MFC 为我们在 stdafx.h 中添加了那么多东东)。不过不要怕, .NET Framework 就是这样,她会让你变懒的(需要你添加的代码很少)。在看看 VCWinFormApp.cpp 吧。

//////////////////////////////////////////////////////////////////////////////////////////////////

#include "stdafx.h"

#using

  1<mscorlib.dll>
  2
  3#include  <tchar.h>
  4
  5using  namespace  System; 
  6
  7// 这是此应用程序的入口点 
  8
  9int  _tmain(  void  ) 
 10
 11{ 
 12
 13// TODO: 请用您自己的代码替换下面的示例代码。 
 14
 15Console::WriteLine(S"Hello World"); 
 16
 17return  0; 
 18
 19} 
 20
 21////////////////////////////////////////////////////////////// 
 22
 23#using  <mscorlib.dll>
 24
 25using  namespace  System; 
 26
 27两句我们以前未见过的语句,这里简单解释一下,  ** system  ** 是  .NET Framework  的最基础的命名空间。 
 28
 29** System  ** 命名空间包含基本类和基类,这些类定义常用的值和引用数据类型、事件和事件处理程序、接口、属性和异常处理。 
 30
 31mscorlib.dll是专为MC++定制的dll文件,她为  .NET Framework  接纳  C++  铺平了道路。 
 32
 33上面的程序仅仅是一个  console  程序而不是我们要做的  WinForm Application  ,下面的代码会将她改写成一个 
 34
 35WinForm Application  。 
 36
 37预备知识  : 
 38
 39The #using Directive-------  用来将一些  MC++  使用的  metadata(  元数据  )  导入程序。如 
 40
 41#using  <mscorlib.dll>
 42
 43// 这是使用应用程序向导生成的 VC++ 
 44
 45// 应用程序项目的主项目文件。 
 46
 47// This is the main project file for VC++ application project 
 48
 49// generated using an Application Wizard. 
 50
 51#include  "stdafx.h" 
 52
 53#using  <mscorlib.dll>
 54
 55#include  <tchar.h>
 56
 57#using  <system.dll>
 58
 59#using  <system.drawing.dll>
 60
 61#using  <system.windows.forms.dll>
 62
 63#using  <system.data.dll>
 64
 65using  namespace  System; 
 66
 67using  namespace  System::Drawing; 
 68
 69using  namespace  System::Collections; 
 70
 71using  namespace  System::ComponentModel; 
 72
 73using  namespace  System::Windows::Forms; 
 74
 75using  namespace  System::Data; 
 76
 77namespace  myspace 
 78
 79{ 
 80
 81public  __gc  class  Form1 :  public  System::Windows::Forms::Form 
 82
 83{ 
 84
 85private  : 
 86
 87Button* button1; 
 88
 89Label* label1; 
 90
 91System::ComponentModel::Container* components; 
 92
 93public  : 
 94
 95Form1() 
 96
 97{ 
 98
 99// 
100
101// Required for Windows Form Designer support 
102
103// 
104
105components = NULL; 
106
107InitializeComponent(); 
108
109// 
110
111// TODO: Add any constructor code after 
112
113// InitializeComponent call 
114
115// 
116
117} 
118
119protected  : 
120
121void  Dispose(  bool  disposing ) 
122
123{ 
124
125if  ( disposing ) 
126
127{ 
128
129if  (components != NULL) 
130
131{ 
132
133components-&gt;Dispose(); 
134
135} 
136
137} 
138
139Form::Dispose( disposing ); 
140
141} 
142
143private  : 
144
145void  InitializeComponent() 
146
147{ 
148
149button1 =  new  Button(); 
150
151label1 =  new  Label(); 
152
153SuspendLayout(); 
154
155// 
156
157// button1 
158
159// 
160
161button1-&gt;Location = Point(23, 96); 
162
163button1-&gt;Size=System::Drawing::Size(100,60); 
164
165button1-&gt;Name = "button1"; 
166
167button1-&gt;TabIndex = 0; 
168
169button1-&gt;Text = "Start my first C++ WinForm Application"; 
170
171button1-&gt;Click +=  new  System::EventHandler(  this  , 
172
173&amp;Form1::button1_Click); 
174
175// 
176
177// label1 
178
179// 
180
181label1-&gt;Location = Point(150, 84); 
182
183label1-&gt;Name = "label1"; 
184
185label1-&gt;TabIndex = 1; 
186
187// 
188
189// Form1 
190
191// 
192
193AutoScaleBaseSize =  System::Drawing::Size(5, 13); 
194
195ClientSize =  System::Drawing::Size(292, 273); 
196
197Controls-&gt;Add(label1); 
198
199Controls-&gt;Add(button1); 
200
201Name = "Form1"; 
202
203Text = "Form1"; 
204
205ResumeLayout(  false  ); 
206
207} 
208
209private  : 
210
211void  button1_Click(Object* sender, System::EventArgs* e) 
212
213{ 
214
215label1-&gt;Text = "Hello World!"; 
216
217} 
218
219}; 
220
221} 
222
223// This is the entry point for this application 
224
225int  __stdcall  WinMain() 
226
227{ 
228
229&lt;P</system.data.dll></system.windows.forms.dll></system.drawing.dll></system.dll></tchar.h></mscorlib.dll></mscorlib.dll></mscorlib.dll></tchar.h></mscorlib.dll>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus