作者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/cn.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