本篇作为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  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  int main() {  MessageBox (NULL, "Hello, CSDN!2020!", "Hi", MB_ICONASTERISK);  return 0 ; }

结果如下:

messagebox 全部使用_「一」Windows API 零门槛编程指南——MessageBox相关推荐

  1. 【一】Windows API 零门槛编程指南——MessageBox 基本使用及基础讲解

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

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

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

  3. 卸载 流程_「工具」Windows 卸载软件,这一个就够了

    全文速览 流氓软件怎么也卸载不掉?好不容易卸载完软件还有注册表残留?快看这里! 本文推荐了一个 Windows 系统下一款十分优秀的卸载软件:「Geek Uninstaller」.该软件体积小.免安装 ...

  4. geek卸载_「工具」Windows 卸载软件,这一个就够了

    全文速览 流氓软件怎么也卸载不掉?好不容易卸载完软件还有注册表残留?快看这里! 本文推荐了一个 Windows 系统下一款十分优秀的卸载软件:「Geek Uninstaller」.该软件体积小.免安装 ...

  5. 我们无法更新系统保留的分区_「图」Windows 10更新再遇尴尬:无法执行系统恢复点...

    援引外媒PC Gamer报道,近期在安装Windows 10累积更新之后任何使用系统还原( System Restore )的用户都可能会面临一些问题.如果用户已经启用了系统保护,并且此前已经创建了系 ...

  6. nexbox本地网络调试工具下载_「下载」 Windows 10 WinDBG 分析转储日志和蓝屏日志排查错误原因...

    使用Windows 10相对来说出现蓝屏概率还是很高的,但微软提供的错误代码有时候可能无法帮助我们解决问题. 所以我们需要使用更专业的工具来分析系统记录的日志,有日志进行排查后就可以定位到具体什么原因 ...

  7. 获取虚拟账号列表失败啥意思_「图」Windows 10 Build 18963发布:可显GPU温度 支持重命名虚拟桌面...

    微软通常会选择在每周三发布Windows 10预览版更新,而本周有点出人意料的在今天发布了20H1分支的最新预览版,而且是更新幅度还蛮大的.最新预览版Build 18963最值得关注的新功能就是在任务 ...

  8. go 写文件_「go」 项目多个文件编程

    golang 学习的时候很多sample 讲的都是一个文件的go 文件怎么写,但是现实中不可能所有的实现都写到一个文件里面,按照功能的不同,要么拆分成不同的文件,要么拆分成不同的文件.下面有些个人的经 ...

  9. 敲代码时如何快速移动光标_「ABB」ABB机器人快速示教上手指南

    一.机器人安全操作守则 由于机器人系统复杂而且危险性大,在练习期间,对机器人进行任何操作都必须注意安全.无论什么时候进入机器人工作范围都可能导致严重的伤害,只有经过培训认证的人员才可以进入该区域. 以 ...

最新文章

  1. python 节点_Python节点
  2. python io流a+_Python基础——文件操作及IO流
  3. 《c语言从入门到精通》看书笔记——第14章 文件
  4. .NET 5.0 RC 2 发布,正式版将在 11 月 .NET Conf 大会上发布
  5. java.io.file()_JAVA基础知识之IO-File类
  6. Go语言中cannot convert adminname (type interface {}) to type *: need type assertion的解决办法...
  7. Adobe AIR移动App的互相调用实现方式
  8. python屏幕找图_Python实现按键精灵(二)-找图找色
  9. 大漠为什么不支持win10_Win10系统注册使用大漠插件的方法与设置!常见错误0x8002801...
  10. 智能识别云服务端平台之神【合合信息TextIn】
  11. CISSP考试要涨价了,5月1日起考试费涨为749美元
  12. php文字如何排版,文字排版,二十个文字排版技巧教程
  13. EPLAN电气工程图纸EPLAN电气工程图纸,标准化程度高
  14. word文档编写时 delete键和backspace键的用法
  15. 知识付费系统源码(开源知识付费系统平台下载)
  16. 打造自己的MyLifeOrganized 2(MLO2)云同步
  17. 90后都开始养生了,你怎么能少了这本宝典丨钛空舱
  18. Windows无法安装信任证书
  19. 带头结点单链表的基本使用
  20. cvx怎么处理向量和向量共轭转置的乘积_矩阵论练习2(共轭转置的秩和解空间)...

热门文章

  1. python模拟浏览器模块,python模块学习---mechanize(模拟浏览器)
  2. mysql查询语句在哪里编写_mysql编写语句:更新查询
  3. 用Python学分析 - 单因素方差分析
  4. linux echo 怎么输出换行符到文件?(echo -e)
  5. CSDN Markdown 博客如何设置插入代码背景颜色(设置成黑色)?
  6. opencv python 官方文档里的“sa”关键字是什么意思?(see also)
  7. linux——sed 流编辑器
  8. Python多线程threading和多进程multiprocessing的区别及代码实现
  9. android 内嵌地图,Android Fragment里嵌入高德地图【原创】
  10. matlab 角域重采样,matlab滤波技术与区域处理---区域滤波