現在我們的工具全是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建立. 如:
- DirectoryInfo^ disk = gcnew DirectoryInfo(drive->Name);
2. 控制代碼相當於一個智能指標, 所以我們不用太關心它們什麼時候釋放(.Net的公有特徵)
3. 對象的"屬性"不是通過get/set方法來讀寫的, 而是通過訪問器來的(跟C#一樣)
4. for each很好用.....
- for each(FileInfo^ file in curDir->GetFiles())
- {
- ListViewItem^ item = gcnew ListViewItem(file->Name, 3);
- item->SubItems->Add(Convert::ToString(file->Length));
- this->listViewFile->Items->Add(item);
- }
5. 多了個委託(還是跟C#一個樣)
6. class在定義的時候多了個ref關鍵字
7. 發現static_cast用來做類型轉換沒啥用, 因為所有的對象都是Object的子類(囧)