第一个C程序

1MessageBox(NULL,TEXT("世界你好"),TEXT("问好"),MB_OK);
         第一个参数暂时不讲;第二个是正文;第三个是标题(Caption);第四个是类型。

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

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

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);
2)如果想显示“确定、取消”按钮的时候同时使用问号图标
MessageBox(NULL, TEXT("世界你好"), TEXT("你好"),MB_OKCANCEL| MB_ICONQUESTION);
MessageBox(NULL, TEXT("世界你好"), TEXT("你好"),
MB_ABORTRETRYIGNORE | define MB_ICONEXCLAMATION);

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

1000011
0000010 &
=======
0000010


这种风格叫“掩码”,在Windows编程中这种用法会经常用到。
大家想像一下MessageBox的内部实现是怎么样的?
if((mode& MB_OK)== MB_OK)
{

//
显示OK按钮
}
if((mode&
MB_ICONQUESTION)== MB_ICONQUESTION)
{

//
显示问好
}
itoaatoi定义在stdlib.h中。
4)默认按钮
         为什么要有默认按钮:一个方便用户,不用思考,直接点回车就可以选择默认按钮;防止用户误操作,默认的按钮应该是最优选的按钮。“是否保存文件?”默认应该是“确定”,“是否发射导弹?”默认应该是“取消”。

         还可以指定哪个按钮是默认按钮,猜一下这些选项的取值的特征是什么?
#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);
5)返回值

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

#define IDCANCEL
2

#define IDABORT
3

#define IDRETRY
4

#define IDIGNORE
5

#define IDYES
6

#define IDNO

最后就来贴代码:

#include <windows.h>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                   PSTR szCmdLine, int iCmdShow)
{
    //hInstance程序的实例句柄 ,hPrevInstance永远为空
    int i=0;
    while(i<5)
    {
        MessageBox(NULL,TEXT("message"),TEXT("title"),MB_OK);
        i++;
    }
   
    i=MessageBox(NULL,TEXT("你是天才么?") ,TEXT("天才的抉择"),MB_YESNO);
    if(i==IDYES)
    {
        MessageBox(NULL,TEXT("真的么?"),TEXT("SURE"),MB_YESNO|MB_ICONHAND);
    }
    else
    {
        i=0;
        while(i<10)
        {
            MessageBox(NULL,TEXT("我来帮你磨练吧") ,TEXT("天才训练"),MB_OK);
            ++i;
        }
       
    }
      return 0 ;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值