吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3377|回复: 21
收起左侧

[C&C++ 转载] C语言也能干大事Part~1

[复制链接]
gms 发表于 2020-10-22 22:47
本帖最后由 gms 于 2020-10-23 20:34 编辑

MessageBox函数的使用

课堂练习
创建Win32 Application

Win32 Application和Win32 Console Application区别:
  https://zhIDAo.baidu.com/question/12596866.html


1.1.png


编写代码

[C] 纯文本查看 复制代码
#include "stdafx.h"

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
         // TODO: Place code here.

        int ret = MessageBox(NULL,TEXT("你超过18岁了吗?"),TEXT("提问"),MB_YESNO|MB_ICONQUESTION);

        if(IDYES == ret)   //变量放右边,常量值放左边
        {
                MessageBox(NULL, TEXT("你是成年人了"),TEXT("回复"),MB_OK);
        }
        else
        {
                MessageBox(NULL, TEXT("你是未成年人"),TEXT("回复"),MB_OK);
        }
        
        
        return 0;
}


注:Message(NULL, TEXT(""), TEXT(""), ME_YESNO|MB_ICONQUESTION);
      第二个参数:正文    第三个参数:标题    第四个参数:按钮类型    
  
  • TEXT是宏,建议将所有字符串都用TEXT括起来
  • 宏一般都是大写
  • MessageBox的返回值是int类型
设置希望在对话框中显示的按钮
#define MB_OK
0x00000000L     (0x是十六进制)
#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

必备小知识“|”是什么意思?
*“|”是位运算里的“或”运算,只有对应的**两个二进制位**全为0,结果才为0。

例如:
1.2.png
MB_OK、MB_OKCANCEL 化为二进制 或运算 之后的结果可以看出,他们的低四位和高四位各自保留自己原来的特征 1.3.png
MB_YESNOCANCEL、MB_ICONQUESTION 化为二进制 或运算 之后的结果可以看出,他们的低四位和高四位也各自保留自己原来的特征这样“MB_OK、MB_OKCANCEL”组的数值与“MB_YESNOCANCEL、MB_ICONQUESTION”组的数值进行或运算后能分别保留各自的部分,也就是在结果值中同时体现两组的取值。所以说按钮和图标可以通过此运算同时出现。

课后作业


运行以后弹出询问对话框(有【是】、【否】两个按钮以及问号图标)“你 是好人吗?”,如果点击【是】,则弹出对话框(只有一个【确定】按钮以及一 个警告图标)“你看你就不像好人,点击【确定】开始格式化 C 盘!”;如果点 击【否】,则弹出对话框(有【重试】、【取消】两个按钮及问号图标)“尝试把你变成好 人失败,是否重试?”。
[C] 纯文本查看 复制代码
#include "stdafx.h"

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
         // TODO: Place code here.

        int ret = MessageBox(NULL,TEXT("你是好人吗?"),TEXT("询问"),MB_YESNO|MB_ICONQUESTION);
        
        if(IDYES == ret)
        {

                MessageBox(NULL,TEXT("你看你就不像好人,点击【确定】开始格式化 C 盘"),TEXT("回答"),MB_OK|MB_ICONWARNING);
        }
        else
        {
                int ret1 = MessageBox(NULL,TEXT("尝试把你变成好人失败,是否重试?"),TEXT("挽救你"), MB_RETRYCANCEL|MB_ICONQUESTION);
                
                if(IDRETRY == ret1)
                {
                        MessageBox(NULL, TEXT("坏人就是换人,没法变成好人"), TEXT("没戏喽"), MB_OK|MB_ICONERROR);
                }  //还可以自行添加代码段
        }

        return 0;
}


  • EXCLAMATION 或者 WARNING: 警告
  • HAND: 错误提示
  • ASTERISK: 星号,提示

附:代码整理快捷键
TAB:              向后缩进
SHIFT+TAB: 向前缩进



免费评分

参与人数 2吾爱币 +2 热心值 +1 收起 理由
兰笙c + 1 用心讨论,共获提升!
绝无神 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

coolcalf 发表于 2020-10-23 08:35
## **C语言也能干大事**

### **(第01课)Hello world!**

#### 一、课程介绍

http://www.rupeng.com/forum/thread-2487-1-1.html(课程简介)
http://www.rupeng.com/forum/thread-3697-1-1-uid7.html(发邮件)
http://www.rupeng.com/forum/thread-3991-1-1-uid7.html(论坛程序)

#### 二、第一个VC程序

1.打开VC6,新建工程,选择Win32 Application,输入工程名(如:test123),选择一个简单
的Win32程序,完成.

2.在左侧的视图切换到FileView,找到test123.cpp,双击打开.加入代码:

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

关于MessageBox的可选参数:

对话框按钮

```
\#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
```

#### 三、VS2008和VC6没有太大区别

1.打开VS2008,新建Win32项目,输入名称.下一步,Windows应用程序,完成.
2.系统会自动打开新生成的cpp文件,默认生成的代码比较多(默认建了一个窗口程序),可以
将多余的代码删除,保留基本的WinMan函数框架,即可跟前面VC6生成的一样的Hello world。



#### 四、判断语句

```
int ref = MessageBox(NULL,TEXT("你好吗?"),TEXT("问好"),MB_YESNO|MB_ICONASTERISK);
if(IDYES == ret)
{
   MessageBox(NULL,TEXT("好!"),TEXT("回复"),MB_YESNO|MB_ICONASTERISK);
}
else
{
   MessageBox(NULL,TEXT("不好!"),TEXT("回复"),MB_YESNO|MB_ICONASTERISK);
}
```

\##鼠标指向IDYES,点右键“转到IDYES定义”,可以看到它是如何申明的。
coolcalf 发表于 2020-10-23 08:37
## **C语言也能干大事**

### **(第02课)程序中加入对话框和菜单**

#### 一、对话框程序的安装

  安装rupeng网的VC6或VS2008"对话框向导插件":

1.安装
VC6中的安装
将压缩包中的DlgBaseAppWizard.awx解压到C:\Program Files (x86)\Microsoft Visual Studio\Common\MSDev98\Template

VS2008中的安装
解压对应压缩包中所有文件到硬盘上,然后运行压缩包中的对应install.bat

2.重新打开VC6后,新建工程时会多一项:Win32 DialogBased APPlication



#### 二、通过向导使用对话框程序

新建工程,测试效果,尝试在窗口上增加Button ,Label,TextBox

\#选择ResourceView后,找到Dialog下的IDD_MAIN,可以修改窗口界面。
\#有些控件,增加到窗口上后,程序会运行不了,比如:RichText和CUSTOM,增加后需要写额外的代码才能运行.

#### 三、对话框中使用图片

1.资源视图目录树上点右键,选择“引入”,找到图片 x.bmp(默认只支持bmp)
2.引入后,右键查看bmp图属性,记录下该资源的id
3.在对话框中增加图像控件后,修改其参数,关联bmp的id.

#### 四、程序中加入菜单

资源视图目录树上点右键,选择“插入”,资源类型Menu.
可爱的剋 发表于 2020-10-22 23:46
yiwanyiwan 发表于 2020-10-22 23:52
学无止境
随风起舞 发表于 2020-10-22 23:53
printf(''只会这个了,哈哈哈!\n'');
Natu 发表于 2020-10-23 00:44
向认真学习的楼主致敬!
danownwang 发表于 2020-10-23 01:09
Hello World!
ericye_cn 发表于 2020-10-23 01:58
printf(''感谢楼主分享,期待更多干货,辛苦!\n'');
intel286 发表于 2020-10-23 06:56
谁说vc不能干大事了?
绝无神 发表于 2020-10-23 07:52
厉害了,楼主,直接main函数弹messagebox
kamiafff 发表于 2020-10-23 08:10
玩玩还行,放到学校机房
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-30 14:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表