C语言也能干大事第六节(如鹏基础)
1、C语言不是只能开发黑底白字的控制台界面程序。学习本课的基础:本课程不讲C语言基础知识,C语言考及格,学的过程中配合复习,有不懂的回去翻书。
2、学完本课程以后同学们做的一些作品赏析:计算器、俄罗斯方块、音乐播放器、学生管理系统(http://www.rupeng.com/forum/thread-2487-1-1.html ),邮件客户端(http://www.rupeng.com/forum/thread-3697-1-1-uid7.html ),Web论坛(http://www.rupeng.com/forum/thread-3991-1-1-uid7.html )可以开发游戏、网络程序、网站程序等。C语言什么都可以开发
3、准备工作,安装VC6(在网上搜“Visual C++ 6”,找合适的地址下载)。VC6在Vista、Windows下启动可能有兼容性提示。
3、开始做第一个C语言的程序
【文件】→【新建】,打开【工程】选项页,选择【Win32 Application】(不要选错了),在“位置”中修改工程保存的路径。(以前用Tubor C的同学会问“什么叫工程?”。在以前大家用TurboC写的程序一般也就是一个文件,但是用C语言写大程序的时候不可能把所有的代码都写在一个文件中,肯定要写很多文件。“工程(Project)”就是这些文件的一个集合。)在“工程名”中写入你为这个工程取的名字,最好有一定意义。下一步【一个简单的Windows程序】
4、向Windows的世界问好
MessageBox(NULL,TEXT("世界你好"),TEXT("问好"),MB_OK);
VC6在Vista、Windows下编译调试时可能有兼容性提示。
5、学本课程常见问题
1)为什么不用TurboC?
Turbo C(Win-TC)太老了,界面还是DOS界面,库也是DOS的库,没有网络开发包、没有Windows界面开发包。TC只能用来学C的基础,要进行实际开发必须使用先进一点的工具。还是让TurboC进博物馆吧。
(2)为什么不用更高版本的VC?
我们不使用高版本的VC主要是如下考虑:VC6和高版本的VC没有本质区别(VC6是1998年的东西,大部分人、公司还是用VC6,市面上的书也都是用VC6),只不过是升级了一下C++的版本、STL的版本而已,对咱们这次学习没有什么影响;VC6的操作方式和VC2008非常相似,用熟了VC6再学高版本的VC只用半小时而已;高版本的VC体积太大,要五六百兆,而上面给出的VC6只有100MB。VC2008下建立工程。
(3)学C语言还是学其他语言,用其他语言实现岂不是更好?
用最熟悉的语言深入编程的各个领域(网络、数据库、图形学、内核等),一通百通,一切语言都是纸老虎。参考资料如鹏网首页。
6、深入研究MessageBox
(1)MessageBox(NULL,TEXT("世界你好"),TEXT("问好"),MB_OK);
第一个参数暂时不讲;第二个是正文;第三个是标题(Caption);第四个是类型。MB_OK就是表示有一个OK按钮【确定】)TEXT是一个宏,当字符串中有中文的时候最好用TEXT来包围这个字符串,虽然不使用TEXT在VC6中没问题,但是在VC7中有问题,而且微软也建议使用TEXT宏,因此在涉及到中文的场合要使用它。他的作用就是把中文转化成不会乱码的格式。(暂时这么认为)。_T("问好"),其实_T只是TEXT的一个缩写而已。而且_T在有的低版本里不识别。TEXT()低版本也识别。暂时不用关心TEXT的细节。
换个样子:
MessageBox(NULL, TEXT("世界你好"), TEXT("你好"),MB_OKCANCEL);
可从设置希望在对话框中显示的按钮:
#define MB_OK
0x00000000L
#define MB_OKCANCEL
0x00000001L
#define MB_ABORTRETRYIGNORE(终止,重试,忽略)abort retry ignore
0x00000002L
#define MB_YESNOCANCEL
0x00000003L
#define MB_YESNO
0x00000004L
#define MB_RETRYCANCEL
0x00000005L
也可以设置对话框中显示的图标:
#define MB_ICONHAND (×)
0x00000010L
#define MB_ICONQUESTION (?)
0x00000020L
#define MB_ICONEXCLAMATION (!)
0x00000030L
#define MB_ICONASTERISK (i)星号
0x00000040L
比如:MessageBox(NULL, TEXT("世界你好") ,TEXT("你好"), MB_ICONQUESTION);(依旧有确定选项)
(2)可是如果我想显示“确定、取消”按钮的时候同时使用问号图标呢?
MessageBox(NULL, TEXT("世界你好"), TEXT("你好"),MB_OKCANCEL| MB_ICONQUESTION);
MessageBox(NULL, TEXT("世界你好"), TEXT("你好"),
MB_ABORTRETRYIGNORE | MB_ICONEXCLAMATION);
(3)思考:到这一步如果你只是在背诵“第一组和第二组中间放一个竖线就可以实现两种效果的组合形式”,那么你未来只会成为一个代码工人。我们要思考一下其背后的原理。
“|”是什么意思?“|”是位运算里的“或”运算,只有对应的两个二进位有一位为1时,结果位才为1 ,否则为0。MB_OK、MB_OKCANCEL等的低四位不同,但是高位永远为0;MB_ICONHAND、MB_ICONQUESTION等的低5至第8位不同,而其他位永远为0。这样“MB_OK、MB_OKCANCEL”组的数值与“MB_ICONHAND、MB_ICONQUESTION”组的数值进行或运算后能分别保留各自的部分,也就是在结果值中同时体现两组的取值。
这种风格叫“掩码”,在Windows编程中这种用法会经常用到。
(4)返回值
MessageBox是有返回值的,返回值为用户点击的按钮:
#define IDOK
#define IDCANCEL
#define IDABORT
#define IDRETRY
#define IDIGNORE
#define IDYES
#define IDNO
代码:
int ret = MessageBox(NULL, TEXT("你是人吗?"), TEXT("火星人"),
MB_YESNO | MB_ICONQUESTION);
if(ret==IDYES)
{
MessageBox(NULL, TEXT("火星人你好"), TEXT("问好"),MB_OK);
}
else
{
MessageBox(NULL, TEXT("欢迎回家来"), TEXT("问好"),MB_OK);
}
6、课后作业:自己动手写恶搞程序。
运行以后弹出询问对话框(有【是】、【否】两个按钮以及问号图标)“你是好人吗?”,如果点击【是】,则弹出对话框(只有一个【确定】按钮以及一个警告图标)“我看你就不像好人,点击【确定】开始格式化C盘!”;如果点击【否】,则弹出对话框(有【重试】、【取消】两个按钮)“尝试把你变成好人失败,是否重试?”
C语言也能干大事第六节(如鹏基础)相关推荐
- c语言开发网站教程,C语言也能干大事之C语言开发网站教程
教程名称:C语言也能干大事之C语言开发网站教程 课程简介: 本章主干知识点:现在做桌面窗口程序开发的工作已经不多了,目前企业需求量最大的技术是"网站开发".因此发布一套<C语 ...
- 如鹏网C语言也能干大事精华帖
如鹏网 http://www.rupeng.com/ 1.尘封 俄罗斯方块 hity 俄罗斯方块 小马_xiao 由写俄罗斯方块引发的种种 2.Diao_Cow 很funny的程序 ...
- 【C语言也能干大事】第五讲 组合框控件,下拉列表
获得组合框控件的句柄 HWND hwndCombo1 = GetDlgItem(hwnd, IDC_COMBO1); 确定目前选项的索引 int curSel = ComboBox_GetCurSel ...
- 啊哈c语言第四章第六节练习1
1.请尝试用while循环打印下面的图形,当输入的n值为3时,打印结果是: 1 22 333 当输入的n值为6时,打印结果是: 1 22 333 4444 55555 666666 #include ...
- ACM公选第六节下DP基础(当复习了)2020.4.16-5.10补
陈老师的ppt 在第一节有nefu oj的地址 文章目录 最早在数学里学 避免重复计算 有递推有递归 分解成相互重叠的子问题 斐波那契重复了很多次 斐波递推 nefu20 穿过街道 状态,与选择 两个 ...
- C 语言究竟能干什么
C语言究竟能干什么 序言 鉴于现在已经大三了,很多同学很迷茫,自己学的东西到底能做什么,将来自己到底能干什么?我不想看着同学迷茫的面孔, 特别是几个好兄弟,有几个想学习编程,但又苦苦找不到门路的兄弟, ...
- php能做的事,PHP也能干大事 随机函数
写在前面 PHP也能干大事是我总结的PHP语法特性及相关函数类库的经典用法,并不一定是真正能实现四两拨千斤的功效,但是掌握这些方法,可以在你的工作和学习上有一些帮助,希望大家能集思广益,将<PH ...
- 基于Java语言构建区块链(六)—— 交易(Merkle Tree)
基于Java语言构建区块链(六)-- 交易(Merkle Tree) 2018年04月16日 10:21:35 wangwei_hz 阅读数:480更多 个人分类: 区块链比特币bitcoin 最终内 ...
- 第六节:ES6为字符串String带来哪些好玩的特性?
工作日的推送尝试一下在晚上发,一个是考虑大家下班了放学了,心情轻松愉悦,适合阅读:另一个是上班时间情绪紧绷,没有心思也没有时间去完整地读完这种技术类的文章.(即便通俗易懂) 第六节,开讲啦...... ...
- 【计导非课系列】 第六节 算法 数据结构
[计导非课系列] 第六节 算法 数据结构 程序=算法+数据结构 众所周知,完美的程序是由优秀的算法和良好的数据结构组成的.什么是算法?什么是数据结构?这里,我们将一起探索算法和数据结构的奥秘,初步揭开 ...
最新文章
- Sql Server实用操作-无数据库日志文件恢复数据库两种方法
- IE9开始支持SVG格式(VML终结)
- java 代码效率_Java效率
- python globals().get,python – 为什么人们会使用globals()来定义变量
- 无人值守数据中心这一次真的能“大势所趋”吗?
- 使用delegate类型设计自定义事件
- 可口可乐开了家网店卖奶,价值62亿元
- 安卓电视硬件测试软件,据说这是2017 最好用的智能电视软件!
- java班级学生列表_java学生班级管理系统+源代码+截图.doc
- android app反解工具,安卓反编译逆向工具:Apktool + dex2jar 教程
- 如何编写投标项目实施方案
- 幅值与峰峰值的计算_交流电有效值与峰值计算公式的推导过程.
- 独立游戏开发(一)-- 安装Unity
- Springboot+netty实现Web聊天室
- vulnstack4渗透-内网篇
- ac数论之矩阵的平方和
- Vue3中Compositions API的使用(二)
- Xcode6的新特性、
- sql注入风险和案例分析
- 说一说用户思维!!!
热门文章
- 第二篇 在Win10系统上配置有限元框架FEniCS
- 集成运算放大器之积分电路搭建
- Windows下XMake编译imgui成功之DX11
- MTK平台 Android8.1 SD卡驱动能力修改
- “谷姐一下”、“寂寞全消除”
- 国内各类有用搜索网站汇总
- MS Office VBA(包括Excel VBA、Word VBA、Access VBA等)资料下载汇总
- 金蝶kis商贸采购单商品代码_金蝶KIS云商贸版(采购模块)常见问题汇总
- 《机器人动力学与控制》第九章——动力学 9.4 欧拉-拉格朗日方程法应用举例(上)
- 仓库管理软件中的账套是什么意思