C++.NET编程体验

C++.NET编程体验……

  (2010-04-24 13:35:57)
标签: 

it

 

c

 

托管

 
   作为一个.NET的程序员,至少要懂得里面三门语言中的一种。当然,最最好的是三门你都懂。

  虽然有人说,现在用的最好的.NET的原装语言不是C#吗?那我还学C++.NET这个累赘干什么?

  当然,C++.NET又分为For Win32的MFC和For  Win64的.NET,也就是所谓托管C++。

  这里专门针对托管C++。

  让想学托管C++的人有一个比较初步的认识。

  与C#的区别。

  1:C++.NET允许声明全局变量,C#不支持。

  2:C++.NET的静态方法需要用成员运算符来引用。C++.NET的成员运算符是::。而C#的是点号。

   例如Win64控制台应用程序。

  C#版:Console.WriteLine();

  C++版:Console::WriteLine();

  2:C++.NET所有动态创建的类一般被声明为指针类型。

  托管C++标准指针运算符是^。

  示例程序:

 System::Drawing::Graphics^  g=this->CreateGraphics();

  3:访问被声明为指针的成员变量的方法是:

  ->。

  示例:

  this->textBox1->Text="草泥马";

  4:C++.NET托管堆中构造函数使用gcnew运算符。

  而C#中用new运算符。

  示例:

  C++.NET程序:

  System::Drawing::Drawing2D::GraphicsPath^   MyPath=gcnew System::Drawing::Drawing2D::GraphicsPath();

  C#程序:

  System.Drawing.Drawing2D.GraphicsPath   MyPath=new  System.Drawing.Drawing2D.GraphicsPath();

  注:

  C++.NET继承了C++6.0的一些东西。所以上述程序最后的一个括号部分,C++是可以省略的,而C#是绝对不行的。

  5:C++.NET的数组一律使用新版规则,原先的C++6.0数组只用于非托管部分。

  以下代码在C++6.0和C#.NET中成立,而在C++.NET托管部分不成立。

  int[ ]  a=new  int[8];   Visual  C#;

  int   a[8];     Visual   C++6.0.

  对应于托管C++的形式为:

  array<int>a=gcnew   array<int>(8);

  声明一个二维字符串数组的托管C++形式应该为:

  array<array<String^>^>^   a=gcnew    array<array<String^>^>(8)(6);

  我也不知道微软为什么要在托管C++中搞这一套。

  但是这确实让人很烦。

  原先C++6.0的形式应该为:

  String   a[8][6];

  就算是用C#,也应该是:

  String[ ] [ ]   a=new   String[8][6];

  明显要舒服许多嘛!

  可能是为了和非托管的MFC相区别吧!

  但是微软这个弯子也绕的太大了点。

  让人颇为不习惯!

  剩下的就是事件和属性的一些区别了。

  6:事件委托:

 Visual   C#:

  this.button1.Click+=new  EventHandler(Button_Click);

  VC++.NET:

  this->button1->Click+=gcnew   System::EventHandler(this,&Form1::Button1_Click);

  7:属性设置:

  Visual  C#:

  public    String   wori

{

     get{

             return   wori.ToString;

          }

      set

     {

          wori=value;

    }

}

 

 

VC++.NET:

   property   String^    wori

{

       String^  get

     {

           return    wori->ToString();

   }

   void  set(String^   value)

   {

      wori=value;

   }

 

}

 

8:

   判空部分:

  Visual   C#:

   if   Components!=null;

   Visual  C++.NET.

  if    Componens!=nullptr;

 9:API函数调用

  Visual   C#:

   [DllImport ("User32.dll")]

  public   extern   int   FlashWindow(IntPtr   HWnd,bool   bInvert);

   Visual   C++.NET:

  [DllImport("User32.dll",CharSet=CharSet::Auto)]

  static  int  FlashWindow(IntPtr   HWnd,bool  bInvert);

   大概也就这些区别吧。

  感觉上做.NET还是C#要好一些。

  一方面代码提示功能较强。另一方面在引用其他窗体的时候也不必包含头文件。

  比如Include  "Form2.h"之类的。

  但是如果考虑代码兼容。要将Win32的程序升级为Win64的话,C++.NET会是最好的一个选择。

  因为你如果不信,可以吧C#的程序往C++的编译器里面贴一下,你会发现一个秘密。

  那就是根本行不通。

  可能在这点上VC++.NET会好一些吧!

  暂时就这些了!

包括该书中所有示例的源程序,所有示例均在Windows XP SP1 + Visual C++.NET环境下调试通过。<br>内容目录如下:<br>第2章 定制窗口<br>2.2 示例——设置窗口风格<br>2.3.1 示例——创建六边形窗口<br>2.3.2 示例——创建异形窗口<br>第3章 菜单和控制条高级应用<br>3.1.3 示例——菜单编程<br>3.2.3 示例——工具栏编程<br>3.3.3 示例——状态栏编程<br>3.5.2 示例——为工具栏添加皮肤<br>第5章 系统编程<br>5.1.4 示例——操作注册表<br>5.2.2 示例——系统托盘编程<br>5.3.3 示例——鼠标钩子程序<br>5.4.3 示例——文件分割器<br>第6章 多文档/多视图编程<br>6.2.4 示例1——单文档多视<br>6.2.5 示例2——单文档多视<br>第7章 对话框高级应用<br>7.2.2 示例——实现无模式对话框<br>7.4.5 示例——使用模式属性表及向导属性表<br>7.5.4 示例——鼠标敏感文字<br>第8章 GDI+图形编程<br>本章示例通常含有多段被注释的演示代码,请读者查看源文件时通过取消注释的方法尝试各段代码的功能。注意其中gra、TextDemo、DrawImageDemo和MetafileDemo文件夹中的源文件代码在本章中未作为独立的节出现。<br>8.4.6 示例——图像浏览器<br>第9章 多线程编程<br>9.6.1 示例——使用全局变量通信<br>9.6.2 示例——使用Windows消息通信<br>9.7.5 示例——使用CriticalSection对象<br>9.7.7 示例——使用Mutex对象<br>9.7.9 示例——使用Semaphore对象<br>第10章 DLL编程<br>10.4 示例——创建和使用Win32DLL<br>10.5 示例——创建和使用MFC DLL<br>第11章 ATL编程<br>11.2 示例——简单的非属性化ATL项目<br>11.3 示例——使用ATL开发COM组件<br>第12章 STL编程<br>12.6 示例——list编程<br>第13章 网络编程<br>13.1.4 示例——网上聊天应用程序<br>13.2.5 示例——简单的网页浏览器<br>13.3.3 示例——ISAPI服务器扩展编程<br>第14章 数据库编程<br>14.3.6 示例——ODBC数据库编程<br>14.5.5 示例——ADO编程<br>第15章 HTML帮助系统编程<br>15.3 示例——创建HTML帮助文件<br>15.5.2 示例——区分上下文帮助<br>第16章 安装和部署项目<br>16.4 示例——用安装程序向导创建安装项目<br>16.5 示例——部署应用程序<br>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值