用VC++.net製作WinForm Application (轉)

gugu99發表於2008-08-07
用VC++.net製作WinForm Application (轉)[@more@]

  VC++製作WinFoApplication:namespace prefix = o ns = "urn:schemas--com::office" />

新的.NET 出世了,隨之而來的是新的開發方法,開發理念。這本無可厚非的,但似乎總是偏愛她的嫡傳(VB,V), 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和,冷不丁的轉向. NET Framework可能還有些不習慣,不過用時間長了,你會發現. NET Framework也不錯麼(^_^)。其實我們還是在用”MFC”,只不過這次是 “MFC……Microsoft .NET Framework Class Library, 微軟.NET 框架類庫”。(^_^)

下面我用一個例子來談談我的體會我將用MC++製作一個 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

#include

 

using namespace System;

 

// 這是此應用程式的入口點

int _tmain(void)

{

  // TODO: 請用您自己的程式碼替換下面的示例程式碼。

  Console::WriteLine(S"Hello World");

  return 0;

}

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

#using

using namespace System;

兩句我們以前未見過的語句,這裡簡單解釋一下, system 是.NET Framework的最基礎的名稱空間。

System 名稱空間包含基本類和基類,這些類定義常用的值和引用資料型別、事件和事件處理程式、介面、屬性和異常處理。

mscorlib.dll是專為MC++定製的dll檔案,她為.NET Framework接納C++鋪平了道路。

上面的程式僅僅是一個console程式而不是我們要做的WinForm Application,下面的程式碼會將她改寫成一個

WinForm Application。

預備知識:

The #using Directive-------用來將一些MC++使用的metadata(後設資料)匯入程式。如

#using

// 這是使用應用程式嚮導生成的 VC++

// 應用程式專案的主專案檔案。

 

// This is the main project file for VC++ application project

// generated using an Application Wizard.

 

#include "stdafx.h"

 

#using

#include

 

#using

#using

#using

#using

 

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 myspace

{

 

public __gc class Form1 : public System::Windows::Forms::Form

  {

  private:

  Button* button1;

  Label* label1;

   System::ComponentModel::Container* components;

 

  public:

  Form1()

  {

  //

  // Required for Windows Form Designer support

  //

  components = NULL;

  InitializeComponent();

 

  //

  // TODO: Add any constructor code after

  // InitializeComponent call

  //

  }

 

 

  protected:

  void Dispose( bool disposing )

  {

  if( disposing )

  {

  if (components != NULL)

  {

  components->Dispose();

  }

  }

  Form::Dispose( disposing );

  }

 

 

  private:

  void InitializeComponent()

  {

  button1 = new Button();

  label1 = new Label();

  SuspendLayout();

  //

  // button1

  //

  button1->Location = Point(23, 96);

   button1->Size=System::Drawing::Size(100,60);

  button1->Name = "button1";

  button1->TabIndex = 0;

  button1->Text = "Start my first C++ WinForm Application";

  button1->Click += new System::EventHandler(this,

   &Form1::button1_Click);

  //

  // label1

  //

  label1->Location = Point(150, 84);

  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(* sender, System::EventArgs* e)

  {

  label1->Text = "Hello World!";

  }

  };

}

 

// This is the entry point for this application

int __stdcall WinMain()

{

  Application::Run(new myspace::Form1());

  return 0;

}

ectratio="t" v:ext="edit">word" />

 

 

 

 

 

 

 

 

 

 

 

我相信上面的程式大多數C++程式設計師都應該能看懂的(尤其是熟悉MFC,ATL的程式設計師)所以我也不必多說。

  有關VC++製作.NET程式的資料可以到和去看看。

本文例子參考了” Building a .NET Windows Forms App in Visual C++ .NET “,

作者:Kate Gregory

  2002.10.4

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1008667/,如需轉載,請註明出處,否則將追究法律責任。

相關文章