本篇作为Windows API 系列文章的第一篇,将简要的讲解一下什么是Windows API,Windows API能做些什么,并且尽可能讲解一些新出现的专有名词;本系列博文几乎没有难啃的“专业术语”,尽量让读者能够看明白文章所述内容,是本系列博文的核心宗旨之一。

读本系列博文的读者必须具备以下的知识储备:

  • C/C++语言基础语法及了解面向对象概念

以上列出的这一个点是最核心的知识储备,因为本系列博文将会使用C/C++语言编写的程序作为示例演示Windows API 的效果;使用C/C++ 语言编写Windows应用程序我个人认为是最佳的一种方式,在性能和发掘Windows特性上,我个人认为是首选!

在此如果是编程新手,可以听一下这一段建议:当你学习第一门语言后,例如C语言,发现自己并不能做出什么东西,这个时候千万别产生挫败感!并不是你笨,学了C语言就不会做东西,在相同的知识宽度面前大家都一样,这个时候就需要去涉及其它扩展性知识,如果你是想做Windows程序的开发,那么就可能需要了解Windows API,扩宽你的知识宽度,当拥有了能够用做出产品的知识后,你的产品就会水到渠成了!

Windows API是什么?

首先从API开始理解,API全称为 Application Programming Interface ;Application Programming 可译为 应用程序,其中的 interface 为接口的意思。那么中文名即为 应用程序接口。

那么什么是应用程序接口呢?我们举个例子说明一下情况;应用程序接口可以比作为快递的领取,你不需要知道快递从发送到你收到之间发生的过程,你只需要在快递到达的时候去领取即可;此时领取快递的地点就相当于一个接口,你通过这个接口获取你想要的信息或者是资源,这个接口也只会返回信息或者资源,并不会得到额外的东西。这就是一个接口的定义,屏蔽了其中复杂的过程,你是用这个接口,那么就直接获取到相应的信息。

知道了接口的作用,那么Windows API——Windows 应用程序接口就比较容易理解了,Windows是Windows系统,也是一个应用程序,Windows 提供了不同的服务,这些服务通过一些特定的方式进行调用、使用;这些服务可能是 开启一个窗口、打开一个应用程序、通过一个方法设置系统的休眠时间等;这些不同的服务,做成了接口的方式使用,那么Windows API 也就知道是干什么用的了。

知道了Windows API 为调用Windows 服务的接口,那么现在尝试一下使用Windows API 创建几个对话框。
Windows API 可以查看 Windows API 文档;在Windows API 文档中,查找 MessageBox 即可找到 MessageBox 方法的具体使用方法;通过微软官方API文档参数说明得知 MessageBox 的功能简介如下:

“显示一个模式对话框,该对话框包含系统图标,一组按钮以及特定于应用程序的简短消息,例如状态或错误信息。该消息框返回一个整数值,该整数值指示用户单击了哪个按钮。”

从功能简介上得知,对话框可以包含系统图标、特定的短消息、错误消息;消息框返回一个整数值,判断用户点击的按钮,以便于开发者进行下一步操作。

查看语法:

int MessageBox(HWND    hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT    uType
);

参数说明:

hWnd
类型为 HWND (HWND类型为句柄类型,句柄:句柄为你需要操作的对象的指向、或说为指针,它就像一个锅的手柄一样,你通过手柄就可以拿起来这个锅,它的英文为HANDLE;在本节中,我们并不需要指向什么对象,只需要给一个NULL就ok,在此并不会过多解释句柄。)

hWnd 参数的简单说明为:要创建的消息框的所有者窗口的句柄。如果此参数为空,则消息框没有所有者窗口。

通过参数的简单说明,那么我们可以得到信息:消息窗口可以指定一个窗口的所有者,也可以用面向对象的知识点来理解,那就是指定一个对象为父类,父窗口,如果参数为NULL,那么就表示不指定父窗口。

lpText

类型为 LPCTSTR :是一个指向字符串的指针,参考百科说明,还是说的比较好的:LPCTSTR就表示一个指向const对象的指针。

lpText参数的简单说明为:要显示的消息文本,如果字符串由多行组成,则可以在每行之间使用回车和 / 或换行符分隔行。

通过参数的简单说明,那么我们可以得到信息:LPCTSTR 为需要显示的消息文本。

lpCaption
类型:与lpText一致。

lpCaption对话框标题。如果此参数为空,则默认标题为Error。

通过参数的简单说明,那么我们可以得到信息:lpCaption 为需要显示的消息文本。基本使用规则跟 lpText 类似。

uType

类型为:UINT 无符号整型
对话框的内容和行为。此参数可以是来自以下标志组的标志的组合。

其实对于 uType 这个参数信息点可能并不算多,官方在其中有做补充:

要指示消息框中显示的按钮,请指定以下值之一。

以上的特定标志组按钮并不是全部,更多请查看微软官方文档 MessageBox说明

在文档中,uType 的参数做出了补充:

通过以上信息,似乎明白了在使用Windows软件中弹出的对话框的图标怎么设置了。

返回值如下
当这个窗口被点击,或者关闭时,将会有一个返回值。
官方解释如下:

如果一个消息框有一个取消按钮,则该函数返回IDCANCEL如果或者ESC键被按下或值取消按钮被选择。如果消息框没有“
取消”按钮,则按ESC无效。 如果函数失败,则返回值为零。

当函数成功调用,返回如下值:

那么我们现在就写个例子吧,尝试一下一个对话框的生成!
代码如下:

#include <windows.h>
int main()
{ MessageBox (NULL, "Hello, CSDN!2020!", "Hi", MB_ICONSTOP); return 0 ;
}

从以上代码中,我们引入了 windows.h 头文件;有些看了文档同学可能知道,在微软文档中,MessageBox 是实现在 winuser.h 头文件中,为什么使用Windows.h 头文件呢?

因为 windows.h 头文件包含了 winuser.h,所以直接使用 winuser.h 就可以了。
在入口函数内,第一行我们指定了父窗体为空NULL,要显示的文字是 “Hello, CSDN!2020!” ,标题是 “Hi”,在组合样式中使用的样式是补充的样式 MB_ICONSTOP,应该为下图示样:

我们编译后运行程序查看效果:

程序按照正确的方式运行了,不过这个叉不是很好,我们换一个 MB_ICONASTERISK:

#include <windows.h>
int main()
{ MessageBox (NULL, "Hello, CSDN!2020!", "Hi", MB_ICONASTERISK); return 0 ;
}

结果如下:

【一】Windows API 零门槛编程指南——MessageBox 基本使用及基础讲解相关推荐

  1. messagebox 全部使用_「一」Windows API 零门槛编程指南——MessageBox

    本篇作为Windows API 系列文章的第一篇,将简要的讲解一下什么是Windows API,Windows API能做些什么,并且尽可能讲解一些新出现的专有名词:本系列博文几乎没有难啃的" ...

  2. 【二】Windows API 零门槛编程指南——CreateWindow 窗口创建 “万字长篇专业术语全解”

    本系列博文几乎没有难啃的"专业术语",尽量让读者能够看明白文章所述内容,是本系列博文的核心宗旨之一.(由于本人也是由于项目需要,所以才来查阅相关资料,文中出现的错误欢迎指出,共同进 ...

  3. C语言中pthread或Windows API在多线程编程中的基本应用

    文章目录 多线程概述 掌握多线程需要学习什么? 使用pthread.h实现多线程 使用Windows API实现多线程 使用threads.h实现多线程 参考资料 警告 由于我懒得写完,而且懂的也不是 ...

  4. 基于Windows api手柄映射编程

    转:https://www.cnblogs.com/qyit/archive/2011/11/21/2257687.html 一个手柄/键盘映射程序,无外乎就四部分:一.界面:二.接收:三.处理:四. ...

  5. 【WebGL编程指南】GLSL ES语法基础

    [WebGL之巅]20-GLSL ES着色器语言语法详解 查看原文:[WebGL之巅]20-GLSL ES着色器语言语法详解 对应<WebGL编程指南>第六章 GLSL ES 总览 本章知 ...

  6. Windows API入门系列之七 -完善MessageBox

    原创文章,转载请注明作者和出处 http://www.cnblogs.com/beyond-code SDK编程群号:81543028 欢迎加入 各位不好意思,前几天有些事很忙,昨天才稍稍有时间空闲下 ...

  7. Windows API一日一练(一)第一个应用程序 使用应用程序句柄 使用命令行参数 MessageBox函数 RegisterClass和RegisterClassEx函数

    要跟计算机进行交互,就需要计算机显示信息给人看到,或者发出声音给人听到,然后人看到或听到相应的信息后,再输入其它信息给计算机,这样就可以让计算机进行数据处理,把结果显示给我们.现在就来编写一个最简单的 ...

  8. windows API 串口编程参考

    *************************************************** 更多精彩,欢迎进入:http://shop115376623.taobao.com ****** ...

  9. 多线程编程指南 part 2

    多线程编程指南 Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA95054 U.S.A. 文件号码819–7051–10 2006 ...

最新文章

  1. 将MongoDB服务加入随机启动
  2. spring aop 拦截业务方法,实现权限控制
  3. Zeal编程查询,离线文档浏览器
  4. redis 集合操作
  5. Perl中的正则表达式
  6. 【数据结构与算法基础】树的应用
  7. ArcGIS10.5资源分享
  8. 从C到C++ string类
  9. 天体物理科研作图格式-要求-plot_example.py
  10. php英语大全,学习php编程语言 php常用英语单词
  11. 中级病案信息技术计算机基础知识要点,病案信息技术职称考试基础知识复习
  12. [附源码]java毕业设计流浪宠物免费领养系统
  13. teamviewer远程黑屏问题
  14. 【Docker】基础(二)
  15. python 爬虫框架scrapy 入门 爬取博客园新闻(代码)
  16. python网络爬虫学习笔记(7)动态网页抓取(二)实践
  17. day37 XSS跨站权限维持钓鱼捆绑浏览器漏洞
  18. 寻找合适的研发效能度量指标(中)
  19. pca人脸识别----kl变换
  20. python 实时曲线_python实现“艾宾浩斯”记忆曲线表

热门文章

  1. 在.NET 6中使用DateOnly和TimeOnly
  2. Magicodes.IE之总体教程
  3. 2020 年终总结:变化 积累
  4. 为什么建议学生积极参与开源项目?
  5. Win10 Terminal + WSL 2 安装配置指南,精致开发体验
  6. Chrome正在启用HTTP/3,支持IETF QUIC
  7. 面向接口编程,你考虑过性能吗?
  8. 【视频教程】使用 ASP.NET Core 3.x 构建 RESTful Web API 已完结
  9. 推荐.neter常用优秀开源项目系列之二
  10. 微软宣布SQL Server 2019免费支持Java