在C++新手区回答一个问题

来源:互联网 发布:哪款网络机顶盒最好用 编辑:程序博客网 时间:2024/06/05 21:50

传送门:

http://topic.csdn.net/u/20100923/20/409b543e-f5a7-4c6e-8beb-7832f039da9c.html?seed=1209245986&r=68609010#r_68609010

 

楼主问题:我知道的语言 易语言 VB DELPHI 的界面 都直接画的 程序提供了足够多的组件/控件 供你使用  


后来发现C/C++才是王道 买了一本C程序设计第四版 看来看去 只知道说了C的用法 如:结构啊 数组啊 函数啊 指针啊 数据类型啊... 从头到尾没有提到界面 。我心中对程序的概念是有界面的 某个按钮实现某个功能

要是没有界面 我不真不知道 那些用法学了 怎么用 也不可能都是DOS界面操作吧?我也见过不少C程序MFC程序 都有界面的啊

下了一个Visual C++ 试来试去只有新建工程的时候选 MFC AppWizard(exe) 再点击窗体按钮 新建一个窗体 才会有几个不多的常用控件,新建的MFC AppWizard(exe) 直接编译出来是一个像记事本的程序 为什么不是一个空白的程序
如果在新建的MFC AppWizard(exe) 里新建窗体 编译出来 新建的窗体是显示在程序空白处的

我又下载了一个Microsoft Visual Studio 2008 新建项目时选的
项目类型--Visual C++ 模板选windows窗体应用程序 这个里面有不少的控件可以用 我就画了一个按钮到From上去 编译出来
一看 发现是一个.NET程序

我想知道是 怎么能让C、C++ 能像那些语言像可以画界面 要添加些什么 或使用第三方什么什么的东西,能这样我才可以先写点很简单的东西 编译后能看到界面 自己用用,再慢慢的写些复杂点的东西

就开始开车的要领 要注意的方面 油门 刹车 档位你都会了,最后总弄个车让你开吧   
要有界面才能把这些功能给组合起来使用 从而达到一完整的程序吧。

我不要网上COPY的答案 我要听你们自己所理解的 再整理出来的言语

 

 

 

阿海答:

 

曾经疑惑过,讲讲我的看法:

(1)从“程序”开始

什么是“程序”,忘了是哪本书说的“程序”是命令的集合!

我们对计算机发出命令是为了解决问题,但是有的时候一个问题并不是通过一个两个命令就能够解决的,另外,一些问题的存在是重复的,需要我们不断地发出同样的命令,基于这样的需要与情况,于是我们便想到了把命令“打包”起来,做成程序,这样,当问题再度出现时,我们只要简单的发出一个“执行”程序的命令就可以轻松地解决问题了。

不管是DOS下的经常出现命令行式程序,还是Windows下的主流的窗口程序,都是一样是为了解决问题,我们之所以更多的选择窗口程序,是因为窗口程序对于普通人来说更容易让他们理解程序的使用,能让他们更容易的解决问题——我们的目标是解决问题。

(2)“界面”之惑Or“窗口”之惑
有的程序是没有界面的,它可以存在于系统的后台默默地干自己的事情,从不现出身影,而我们经常用到的“看得见”的程序就总有界面。在这里必须区分两个概念:界面、窗体。像DOS那样黑乎乎的命令行难道不是界面,如果我们这么定义“界面”——以图形和文字的方式向用户提供信息——的话,我们会发现,DOS那可爱的身影同样也在向我们传递信息,不过在与“窗口”的比较之下,他显得有些难以理解罢了。而“窗口”当然属于界面中的一种,它同样在以图形和文字的方式向用户提供信息。

理解“窗口”是属于“界面”中的一种后,我们可以如此重述楼主的问题:C、C++下如何“弄”窗口?

(3)“微软”——不举的Windows
为什么我要在标题里强调微软“不举”呢,这绝不是对微软带有蔑视,而是微软在某些方面实在不举啊!楼主提到易语言,VB,Delphi的界面都是直接画,非常方便就可以写出一个程序来,那么楼主有没有想过,为什么这些工具会被制造出来使用呢?首先当然要有“容易编写程序”这样一个需求存在,这样一种需求在另外一个角度上说明了,微软的Windows下要写一个“窗口”不是那么容易。

编程就好像玩积木,都是要把厂家生产的积木做成各种样子。厂家提供的积木形状在很大程度上决定了我们的创造力。Windows下的编程其实就是使用微软提供的WindowsAPI(Windows应用程序接口)这些积木凑成一个个程序,但无奈的是微软提供的WindowsAPI实在是又多又杂,想凑成一个程序都十分麻烦。

于是便有人想:“为何不把微软提供的这些WindowsAPI想象成是一个个简单的命令呢,而我们可以把这些命令再打包成一个个“程序”,来解决那些总是重复出现的问题。”

基于这样的想法,一些程序员便把微软的WindowsAPI打包成一个个库类,楼主想想易语言里面的模块,VB里控件,Delphi里的组件……可以这么说,为了解决“编程”这个问题,我们把很多WindowsAPI“命令”打包成“程序”。

似乎离题了,不!

上面的话中我已经提到了编写“窗口”的方法(对任何语言而言,不仅仅是C、C++),最直接的方法是调用“不举”的WindowsAPI,比较方便的是用别人将WindowsAPI打包好后形成的“控件”——用控件这个词或许楼主比较好理解!

那么对C、C++而言,具体可以怎么做呢?
如果要直接用API的话,情参考这篇文章:http://www.vckbase.com/document/viewdoc/?id=1007 或者搜索关键字“Windows SDK”。
如果要使用写“控件”的话,可以搜索关于QT,或是Wxwidget。

个人推荐的一份比较好的教材是第二学堂的C++教程:http://www.d2school.com/
可惜那个老师写到后面基本停了。

(4)最后
不管楼主选择WindowsSDK还是用某一个GUI库,都希望楼主能明白,编程是基于一定的基础(积木)去解决问题。一个简单语句是一块积木,一个函数也是一块积木,打包简单语句就成了函数,打包函数就成了程序,程序就不可以再打包了吗?或者说函数就一定要打包成程序,不能打包成其他吗?编程是一件很实际的事,不管黑猫白猫,能抓住老鼠的就是好猫!

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 吃奶粉的婴儿便秘怎么办 一个多月小狗便便不成形怎么办 3个月宝宝不拉屎怎么办 好几天不拉大便怎么办 20个月宝宝大便干燥怎么办 两月宝宝三天没大便怎么办 六个月宝宝大便干燥怎么办 五个月宝宝拉肚子怎么办拉水样 2个月婴儿拉稀水怎么办 两个月的宝宝拉肚子怎么办 两天了不拉大便怎么办 25天的宝宝便秘怎么办 2个月宝宝便秘怎么办 猫拉绿色稀水怎么办 50天的宝宝便秘怎么办 人工喂养大便次数少怎么办 4个月宝宝肠炎怎么办? 三个月的宝宝拉肚子有奶瓣怎么办 吃米粉后不拉屎怎么办 宝宝拉绿色稀水怎么办 3个月宝宝肠胃炎怎么办 两个月婴儿拉水怎么办 3个月宝宝拉绿水怎么办 宝宝拉绿色的水怎么办 宝宝大便绿又水怎么办 8个月婴儿便秘怎么办 2个月婴儿便秘怎么办 四个月宝宝拉稀带有泡沫怎么办 六个月宝宝拉肚子怎么办拉水 婴儿拉的是沫怎么办 婴儿拉泡沫屎是怎么办 宝宝吃奶粉上火大便干燥怎么办 没满月的宝宝拉肚子怎么办 婴儿吃奶粉上火不大便怎么办 四个月宝宝拉沫怎么办 4个月小孩拉肚子怎么办 3个月的宝宝拉稀怎么办 宝宝没喝过奶粉怎么办 宝宝喝冰酸奶咳嗽了怎么办 7个月不爱喝奶怎么办 宝宝不认妈妈该怎么办