作者deo2000 (800IM)
看板C_and_CPP
標題Re: [問題] 想問關於Borland C++跟一般C++的差別?
時間Wed Feb 10 23:59:51 2016
※ 引述《mick99988 (高雄人)》之銘言:
: 各位大家好
: 最近因為主管希望我學C++(Borland C++)
: 但我所認知道的C++在大學時期好像沒有像是C#可以拉物件來寫
: 我所記得的是要用什麼Cin阿 Cout之類的語法的阿,然後執行後就是一個
: 命令提示字元的黑窗,而非能說有按鈕讓我們按 有txtBox能輸入...
: 所以這兩個是不是本質上有不太相同?
: 因為在以前想到能拉物件來寫程式腦袋自動聯想到C#或是Ladview
: 有無Borland C++6 初學者向的書籍呢?
: 小弟只接觸過C語言跟Keil C
剛好你講的這些除Labview我都碰過,真應該請我去上班才對XD
真要從頭講起,得先談MFC,但是太可怕了不要詳談。
所謂能拉的這些GUI元件,本質就是windows API,就是windows提供的一些C++物件,
MFC只用了最少的包裝,幾乎直接操作,所以很恐怖。
Borland C++
就是把windows API包成比較簡單可愛的VCL,所以GUI拉起來和C#很像,
而且還不需要.net framework。
最早我用VB6寫視窗軟體,但是為了OO、為了快、而且不要依賴.Net,
Borland C++是除MFC之外唯一選擇,這選擇大概只持續了兩三年。
後來.net越來越強大,在win8中都已經是預設的環境了,
加上VS太好用、C#在MSDN的支援夠強大資源夠多,只好屈服,
目前C#/winForm/WPF 是我主要的是視窗軟體開發工具。
以上我說的這些GUI工具,包含我不會用的Labview,
在底層其實都呼叫windows API,因為最後寫入VRAM都要走這關,差別在包裝不同。
MFC只包薄薄一層所以很難用,
Borland C++用VCL,包簡單很多,但是目前資源越來越少,
.net系列的全都是都透過.net framework去包WinAPI;
不過WPF好像有比較特別,是把GUI當作多媒體用DirectX顯示??
Borland C++ 和 你大學學的那種C++ 本質上是相同的,Borland C++只是多很多class,
這些class最常用到和GUI有關的,還有一些就是socket等等之類的。
所謂"拉"GUI這個動作,其實就是物件的 new + member variable 設定,
只不過個這個物件看得到,
button的位置、大小、顏色、文字都是某個button object的member variable。
也可以用單純的C++呼叫這些WinAPI,這樣你就是GUI自幹王,不必依賴上面這些工具了
我上次就這樣和com port通訊,結果很不方便。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.167.213.18
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1455119994.A.3B5.html
※ 編輯: deo2000 (42.79.149.59), 02/11/2016 00:32:13
1F:→ testPtt: 這兩年真的很多人屈服了 bcb6應該快被遺棄了 02/11 01:12
2F:推 longlongint: 別當自幹王 被學長幹翻天的同時 學妹已經拉完GUI了 02/11 01:51
3F:→ longlongint: 效能跟演算法都是浮雲...... 02/11 01:52
4F:→ longlongint: 先寫好邏輯會被罵成狗 先寫好GUI可以說Bug再慢慢修 02/11 01:59
5F:→ longlongint: 所以我覺得快速拉個GUI 在某些情況是一個好用的招 02/11 02:01
6F:推 strangehead: MFC超噁心的... 02/11 03:05
7F:→ tinlans: user interactive 的部分需要的效能在 80/20 法則中是可 02/11 05:19
8F:→ tinlans: 忽略的,除非 user 可能用按鍵精靈什麼的去點 XD 02/11 05:19
9F:→ bdvstg: 偷偷推薦QT 他也可以用拉的 只不過事件那些要自己來XDD 02/11 07:51
10F:推 prismwu: 幾年前用過一次MFC...啊頭好痛 02/11 12:45
11F:推 mick99988: 偷偷問一下MFC是什麼的縮寫? 02/11 13:44
12F:→ overhead: Microsoft Foundation Classes 02/11 14:12
13F:→ freeunixer: 先想想 C# 是誰搞出來的,再想想 BCB6 還有沒有將來... 02/11 16:01
14F:→ hibiscus520: 偷偷問C++CLI 跟MFC哪個比較噁心?我只用過CLI 02/11 19:52
15F:→ james732: C++CL麻煩的是那個^,看起來很討厭XD 02/11 20:42
因為C++\CLI其實就是C++.net,但是.net原則上不使用pointer,以reference為主。
可是.net reference是會透過.net virtual machine重新映射到實體記憶體位址,
和C++原生reference差異太大,所以用一個有點噁心的^來區隔兩者。
我也曾經認為C++\CLI好棒棒,可以同時運用C++和C#,
不過比較冷門、資源比較少,兩者之間轉換麻煩不少,撐了一陣子。
壓垮我的最後一根稻草是multi-thread programming。
C++\CLI之下的multi-thread必須要用.net class,C++的不能用,
但是C++\CLI卻只能用不完整的.net multi-thread class,
造成thread synchronized和IPC可能要透過global或是根本找不到方法,
最後只好棄用C++\CLI,把半年來寫好的東西全改成C#\WPF。
※ 編輯: deo2000 (106.1.209.143), 02/12/2016 12:05:26
16F:推 TobyH4cker: VCL滿好玩會很有成就感,應該能讓新手不排斥程式語言 02/19 13:35
17F:→ TobyH4cker: 不過C#的話遇到問題會比較容易找到解答 02/19 13:36
18F:→ TobyH4cker: 我覺得兩個寫視窗手感差不多,就BC++編出來是native 02/19 13:37