C语言也能干大事第一节

一、      使用的编辑器和编译器

1.       编译器和编辑器

编译器:就是把源代码编译成目标代码的程序。MingW是一个C/C++的编译器。

编辑器:能在里边敲代码,高亮显示,自动提示。TC就是一个编辑器。

2.       关于C-Free

C-Free里边可以运行、也可以调试。设置断点,就是在要设置断点的代码行前边点击一下鼠标,有了一个红色小点就说明设置好了断点。

二、      编写Windows程序须知

1.       程序入口

控制台程序的入口是mainWin32程序的入口是WinMain

2.       所谓工程

以前用TuborC的同学会问“什么叫工程?”。以前大家用TurboC写的程序一般也就是一个文件,但是用C语言写大程序的时候不可能把所有的代码都写在一个文件中,肯定要写很多文件。“工程(Project)”就是这些问题的一个集合。在“工程名”中写入你为这个工程取的名字,最好有一定意义。

3.       Windows程序的骨干代码

#include <windows.h>

 

int WINAPI WinMain (HINSTANCE hInstance,

                                 HINSTANCE hPrevInstance,

                                 PSTR szCmdLine,

                                 int iCmdShow)

{

 

return 0;

}

三、      MessageBox

1.       Windows世界问好

MessageBox(NULL,TEXT("世界你好"),TEXT("问好"),MB_OK);

说明:

第一个参数暂时不讲;第二个是正文;第三个是标题(Caption);第四个是类型。

MB_OK表示有一个OK按钮【确定】

TEXT是一个宏,当字符串中有中文的时候最好用TEXT来包围这个字符串,虽然不使用TEXTVC6中没问题,但是在VC7中有问题,而且微软也建议使用TEXT宏,因此在涉及到中文的场合要使用它。他的作用就是把中文转化成不会乱码的格式。(暂时这么认为)。_T("问好"),其实_T只是TEXT的一个缩写而已。而且_T在有的低版本里不识别。TEXT()低版本也识别。

2.       第四个参数

可选参数

MessageBox(NULL, TEXT("世界你好"), TEXT("你好"),MB_OKCANCEL);

可设置希望在对话框中显示的按钮:

#define MB_OK                                      0x00000000L

#define MB_OKCANCEL                         0x00000001L

#define MB_ABORTRETRYIGNORE      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           0x00000040L

比如:MessageBox(NULL, TEXT("世界你好") ,TEXT("你好"), MB_ICONQUESTION);

 

(1)      可是如果我想显示“确定、取消”按钮的时候同时使用问号图标呢?

MessageBox(NULL, TEXT("世界你好"), TEXT("你好"),MB_OKCANCEL | MB_ICONQUESTION);

MessageBox(NULL, TEXT("世界你好"), TEXT("你好"), MB_ABORTRETRYIGNORE | define MB_ICONEXCLAMATION);

 

(2)      思考:

到这一步如果你只是在背诵“第一组和第二组中间放一个竖线就可以实现两种效果的组合形式”,那么你未来只会成为一个代码工人。我们要思考一下其背后的原理。

首先说“|”是什么意思?“|”是位运算里的“或”运算,只有对应的两个二进位有一位为1时,结果位才为,否则为0MB_OKMB_OKCANCEL等的低四位不同,但是高位永远为0MB_ICONHANDMB_ICONQUESTION等的低5至第8位不同,而其他位永远为0。这样

MB_OKMB_OKCANCEL”组的数值与“MB_ICONHANDMB_ICONQUESTION”组的数值进行或运算后能分别保留各自的部分,也就是在结果值中同时体现两组的取值。

拿到1000010以后怎么判断是不是和0000010或运算来的?

1000010

0000010 &

======

0000010

 

1000011

0000010 &

=======

0000010

 

这种风格叫“掩码”,在Windows编程中这种用法会经常用到。

大家想像一下MessageBox的内部实现是怎么样的?

if((mode& MB_OK)== MB_OK){

//显示OK按钮

}

if((mode & MB_ICONQUESTION) == MB_ICONQUESTION){

//显示问好

}

 

(3)      默认按钮

为什么要有默认按钮:一个方便用户,不用思考,直接点回车就可以选择默认按钮;防止用户误操作,默认的按钮应该是最优选的按钮。“是否保存文件?”默认应该是“确定”,“是否发射导弹?”默认应该是“取消”。

还可以指定哪个按钮是默认按钮,猜一下这些选项的取值的特征是什么?

#define MB_DEFBUTTON1      0x00000000L

#define MB_DEFBUTTON2      0x00000100L

#define MB_DEFBUTTON3      0x00000200L

#define MB_DEFBUTTON4      0x00000300L

示例代码:

MessageBox(NULL, TEXT("你是人吗?"), TEXT("火星人"), MB_YESNO | MB_ICONQUESTION| MB_DEFBUTTON2);

 

(4)      返回值

MessageBox是有返回值的,返回值为用户点击的按钮:

#define IDOK              1

#define IDCANCEL     2

#define IDABORT              3

#define IDRETRY              4

#define IDIGNORE      5

#define IDYES            6

#define IDNO              7

代码:

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);

}

整理:http://wxxweb.blog.163.com

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值