gms 发表于 2020-10-22 22:47

C语言也能干大事Part~1

本帖最后由 gms 于 2020-10-23 20:34 编辑

MessageBox函数的使用

课堂练习
创建Win32 Application
Win32 Application和Win32 Console Application区别:
https://zhidao.baidu.com/question/12596866.html





编写代码
#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_ICONHAND0x00000010L#define MB_ICONQUESTION
0x00000020L#define MB_ICONEXCLAMATION
0x00000030L#define MB_ICONASTERISK
0x00000040L
必备小知识“|”是什么意思?
*“|”是位运算里的“或”运算,只有对应的**两个二进制位**全为0,结果才为0。

例如:

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

课后作业

运行以后弹出询问对话框(有【是】、【否】两个按钮以及问号图标)“你 是好人吗?”,如果点击【是】,则弹出对话框(只有一个【确定】按钮以及一 个警告图标)“你看你就不像好人,点击【确定】开始格式化 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: 向前缩进

https://static.52pojie.cn/static/image/hrline/line1.png

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

前几天软件技术大一刚开学 一起学习{:301_998:}

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

玩玩还行,放到学校机房
页: [1] 2 3
查看完整版本: C语言也能干大事Part~1