在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库,都希望楼主能明白,编程是基于一定的基础(积木)去解决问题。一个简单语句是一块积木,一个函数也是一块积木,打包简单语句就成了函数,打包函数就成了程序,程序就不可以再打包了吗?或者说函数就一定要打包成程序,不能打包成其他吗?编程是一件很实际的事,不管黑猫白猫,能抓住老鼠的就是好猫!
- 在C++新手区回答一个问题
- 回答一个投资问题
- 回答一个投资问题
- 为了回答一个小学生问题
- C++——回答问题
- 新手请教一个问题!
- 我在百度上回答的一个关于类的问题
- 我在百度上回答的一个关于类的问题
- 我在百度上回答的一个关于类的问题
- 我在百度上回答的一个关于类的问题
- 我在百度上回答的一个关于类的问题
- 我在百度上回答的一个关于类的问题
- 我在百度上回答的一个关于类的问题
- 我在百度上回答的一个关于类的问题
- 在百度上回答的一个问题,修改之后 JS倒计时
- 在拥有一个“首席AI执行官”之前,企业领导者该回答的四个问题
- C/C++ - 新手问题
- 使用logminer回答一个网友的问题
- NET v2.0 下的高精度计数器
- 在CSDN上看到一个贴子,觉得写得很对,放这里,常看看!
- Linux Fedora13,Windows 7 and Windows XP的多系统安装
- EJB3.0---Stateless session bean
- exis2客户端调用问题
- 在C++新手区回答一个问题
- JAVA Excel API 实现对Excel表格的读写更新
- linux-next 开发树及 Git 获取方式
- arm开发板的boa服务器的移植
- 迷上ubuntu
- 面试题 做做试试
- 深浅复制产生的根本原因
- 猴子背香蕉问题
- WPF新手之将如何将一个成员变量或自定义类绑定到控件