【一】Windows API 零门槛编程指南——MessageBox 基本使用及基础讲解
本篇作为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 基本使用及基础讲解相关推荐
- messagebox 全部使用_「一」Windows API 零门槛编程指南——MessageBox
本篇作为Windows API 系列文章的第一篇,将简要的讲解一下什么是Windows API,Windows API能做些什么,并且尽可能讲解一些新出现的专有名词:本系列博文几乎没有难啃的" ...
- 【二】Windows API 零门槛编程指南——CreateWindow 窗口创建 “万字长篇专业术语全解”
本系列博文几乎没有难啃的"专业术语",尽量让读者能够看明白文章所述内容,是本系列博文的核心宗旨之一.(由于本人也是由于项目需要,所以才来查阅相关资料,文中出现的错误欢迎指出,共同进 ...
- C语言中pthread或Windows API在多线程编程中的基本应用
文章目录 多线程概述 掌握多线程需要学习什么? 使用pthread.h实现多线程 使用Windows API实现多线程 使用threads.h实现多线程 参考资料 警告 由于我懒得写完,而且懂的也不是 ...
- 基于Windows api手柄映射编程
转:https://www.cnblogs.com/qyit/archive/2011/11/21/2257687.html 一个手柄/键盘映射程序,无外乎就四部分:一.界面:二.接收:三.处理:四. ...
- 【WebGL编程指南】GLSL ES语法基础
[WebGL之巅]20-GLSL ES着色器语言语法详解 查看原文:[WebGL之巅]20-GLSL ES着色器语言语法详解 对应<WebGL编程指南>第六章 GLSL ES 总览 本章知 ...
- Windows API入门系列之七 -完善MessageBox
原创文章,转载请注明作者和出处 http://www.cnblogs.com/beyond-code SDK编程群号:81543028 欢迎加入 各位不好意思,前几天有些事很忙,昨天才稍稍有时间空闲下 ...
- Windows API一日一练(一)第一个应用程序 使用应用程序句柄 使用命令行参数 MessageBox函数 RegisterClass和RegisterClassEx函数
要跟计算机进行交互,就需要计算机显示信息给人看到,或者发出声音给人听到,然后人看到或听到相应的信息后,再输入其它信息给计算机,这样就可以让计算机进行数据处理,把结果显示给我们.现在就来编写一个最简单的 ...
- windows API 串口编程参考
*************************************************** 更多精彩,欢迎进入:http://shop115376623.taobao.com ****** ...
- 多线程编程指南 part 2
多线程编程指南 Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA95054 U.S.A. 文件号码819–7051–10 2006 ...
最新文章
- 将MongoDB服务加入随机启动
- spring aop 拦截业务方法,实现权限控制
- Zeal编程查询,离线文档浏览器
- redis 集合操作
- Perl中的正则表达式
- 【数据结构与算法基础】树的应用
- ArcGIS10.5资源分享
- 从C到C++ string类
- 天体物理科研作图格式-要求-plot_example.py
- php英语大全,学习php编程语言 php常用英语单词
- 中级病案信息技术计算机基础知识要点,病案信息技术职称考试基础知识复习
- [附源码]java毕业设计流浪宠物免费领养系统
- teamviewer远程黑屏问题
- 【Docker】基础(二)
- python 爬虫框架scrapy 入门 爬取博客园新闻(代码)
- python网络爬虫学习笔记(7)动态网页抓取(二)实践
- day37 XSS跨站权限维持钓鱼捆绑浏览器漏洞
- 寻找合适的研发效能度量指标(中)
- pca人脸识别----kl变换
- python 实时曲线_python实现“艾宾浩斯”记忆曲线表
热门文章
- 在.NET 6中使用DateOnly和TimeOnly
- Magicodes.IE之总体教程
- 2020 年终总结:变化 积累
- 为什么建议学生积极参与开源项目?
- Win10 Terminal + WSL 2 安装配置指南,精致开发体验
- Chrome正在启用HTTP/3,支持IETF QUIC
- 面向接口编程,你考虑过性能吗?
- 【视频教程】使用 ASP.NET Core 3.x 构建 RESTful Web API 已完结
- 推荐.neter常用优秀开源项目系列之二
- 微软宣布SQL Server 2019免费支持Java