分享
 
 
 

用VC++.net制作WinForm Application

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

用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……Microsoft .NET Framework Class 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 <mscorlib.dll>

#include <tchar.h>

using namespace System;

// 这是此应用程序的入口点

int _tmain(void)

{

// TODO: 请用您自己的代码替换下面的示例代码。

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

return 0;

}

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

#using <mscorlib.dll>

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 <mscorlib.dll>

// 这是使用应用程序向导生成的 VC++

// 应用程序项目的主项目文件。

// 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 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(Object* 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;

}

我相信上面的程序大多数C++程序员都应该能看懂的(尤其是熟悉MFC,ATL的程序员)所以我也不必多说。

有关VC++制作.NET程序的资料可以到www.codoguru.comwww.codeproject.com去看看。

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

作者:Kate Gregory

2002.10.4

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有