拋棄MFC, 轉向.Net

來源:互聯網
上載者:User

 現在我們的工具全是MFC的, 維護起來那叫一個鬱悶

一直在找一個C++中好用的UI庫, 看過Qt(看起來到不錯, 懶得學), wxWidgets(跟MFC一個樣), 剩下的就不說了......

前段時間發現了Xtreme ToolkitPro, 裡面那些Samples很強大, 也有過用它來做介面的衝動

但是想想, 這東西還是基於MFC, 一樣還是要手動寫........

很懷念大學時在C#裡整得那些東西, 做介面超級方便

但是, 要在C#裡用C++的東西, 還要中間再加一層, 隔著衣服摸起來怎麼會爽~~~

後來跟朋友討論一番, 發現C++/CLI可以一用

文法已經比託管C++看起來爽多了, 至少那一堆底線已經消失了

出去溜冰回來就直接寫了個小程式試了試, 嗯嗯, 終於找到當年寫Java和C#的感覺了!

 

 

看起來還不錯吧? 第一次用CLR, 花了幾個小時就弄出來了, .Net的庫還是很好用的, 基本上你需要什麼功能一查就能找到, MSDN裡也都有樣本. 只是為了體驗一下新的編程習慣, 所以還沒有嵌入NativeC++的代碼.

總結一下新的東西:

 

1. CLR裡的指標不叫指標, 叫"控制代碼", 使用gcnew而不是new建立. 如:

  1. DirectoryInfo^ disk = gcnew DirectoryInfo(drive->Name);

2. 控制代碼相當於一個智能指標, 所以我們不用太關心它們什麼時候釋放(.Net的公有特徵)

3. 對象的"屬性"不是通過get/set方法來讀寫的, 而是通過訪問器來的(跟C#一樣)

4. for each很好用.....

  1.                  for each(FileInfo^ file in curDir->GetFiles())
  2.                  {
  3.                      ListViewItem^ item = gcnew ListViewItem(file->Name, 3);
  4.                      item->SubItems->Add(Convert::ToString(file->Length));
  5.                      this->listViewFile->Items->Add(item);
  6.                  }

5. 多了個委託(還是跟C#一個樣)

6. class在定義的時候多了個ref關鍵字

7. 發現static_cast用來做類型轉換沒啥用, 因為所有的對象都是Object的子類(囧)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.