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

传送门:

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库,都希望楼主能明白,编程是基于一定的基础(积木)去解决问题。一个简单语句是一块积木,一个函数也是一块积木,打包简单语句就成了函数,打包函数就成了程序,程序就不可以再打包了吗?或者说函数就一定要打包成程序,不能打包成其他吗?编程是一件很实际的事,不管黑猫白猫,能抓住老鼠的就是好猫!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值