Windows API 简介
操作系统的作用之一就是屏蔽一些复杂的直接对硬件操作,并提供给用户一个简单明确的应用接口,类外对于一些基本的或常用的操作也以API的形式提供给用户,比如内存管理、文件管理等。
消息传递机制
消息循环是一个进程(线程)活动的源动力。一个进程(线程)再启动并初始化以后便进入了消息循环,它不断处理传递给它的信息,从而不断推动进程(线程)向前运行。
Win32应用程序框架中的消息循环部分:
1 while(GetMessage(&msg, NULL, 0, 0))
2 {
3 if(!TranslateAccelerator(msg, hwnd, hAccelTable, &msg))
4 {
5 TranslateMessage(&msg);
6 DispatchMessage(&msg);
7 }
8 }
首先,GetMessage()从进程(其实是进程的主线程)的消息队列中获取一个信息,如果队列中没有消息,则GetMessage()函数将等待一个消息的到来以后才返回。
然后函数TranslateAccelerator()判断该消息是不是一个按键消息并且是一个加速键消息,如果是,则该函数将把几个按键消息转换为一个加速键消息传递给窗口的回调函数。处理了加速键以后,函数TranslateMessage()将把两个按键消息WM_KEYDOWN和WM_KEYUP转换成一个WM_CHAR,注意:消息WM_KEYDOWM和WM_KEYUP仍将传递给窗口的回调函数。
在这些处理以后,DispatchMessage()函数将把此消息发送给该消息指定的串口中已设定的回调函数。如果消息为WM_QUIT则GetMessage()函数将返回0,从而退出while循环而结束进程。
WinMain()函数的前两个参数hInstance和hPrevInstance
1 // WinMain()函数原型
2 int WINAPI WinMain(
3 HINSTANCE hInstance,
4 HINSTANCE hPrevInstance,
5 LPSTR lpCmdLine,
6 int nCmdShow);
WinMain()函数的hInstance是系统为其分配的进程实例句柄,hPrevInstance是该程序在同一地址空间上已装载的实例句柄,由于在Windows 95以及以后的Windows版本都是独立的进程空间,因此它的值总是NULL。
如何在程序中调用API函数
在程序中调用一个API函数,需要注意以下几点:
1) 该API函数是否在用户的系统平台上可用。
2) 是否声明了(#include)含有该API函数定义的头文件。
3) 是否告诉链接程序(Link.EXE)链接含有该API实现的库文件。
另外还要注意该函数特定的一些注意事项,例如一些参数在使用前必须初始化等。
<参考文献>Windows API程序设计参考大全/求是科技/ISBN 7-115-14167-3
Windows API 简介的更多相关文章
- Windows API 调用示例
Ø 简介 本文主要记录 Windows API 的调用示例,因为这项技术并不常用,属于 C# 中比较孤僻或接触底层的技术,并不常用.但是有时候也可以借助他完成一些 C# 本身不能完成的功能,例如:通 ...
- Windows API教程文件系统
本篇文章主要介绍了"Windows API教程文件系统",主要涉及到Windows API教程文件系统方面的内容,对于Windows API教程文件系统感兴趣的同学可以参考一下. ...
- 火币网API文档——REST 行情、交易API简介
REST API 简介 火币为用户提供了一套全新的API,可以帮用户快速接入火币PRO站及HADAX站的交易系统,实现程序化交易. 访问地址 适用站点 适用功能 适用交易对 https://api.h ...
- C#调用Windows API(示例:显示任务管理器里的程序名称)
作为初学者来说,在C#中使用API确是一件令人头疼的问题. 在使用API之前你必须知道如何在C#中使用结构.类型转换.安全/不安全代码,可控/不可控代码等许多知识. 在.Net Framework S ...
- API简介(二)
API简介(二) API简介(一)一文中,介绍了使用API的目的.设计.发行政策以及公共API的含义,本篇主要介绍API的用法,从库和框架.操作系统.远程API.Web API四个方面展开. 库和框架 ...
- C# Windows API
API:应用程序接口(API:Application Program Interface)应用程序接口(API:application programming interface)是一组定义.程序及协 ...
- Windows API 函数列表 附帮助手册
所有Windows API函数列表,为了方便查询,也为了大家查找,所以整理一下贡献出来了. 帮助手册:700多个Windows API的函数手册 免费下载 API之网络函数 API之消息函数 API之 ...
- Windows API Hooking in Python
catalogue . 相关基础知识 . Deviare API Hook Overview . 使用ctypes调用Windows API . pydbg . winappdbg . dll inj ...
- 初识【Windows API】--文本去重
最近学习操作系统中,老师布置了一个作业,运用系统调用函数删除文件夹下两个重复文本类文件,Linux玩不动,于是就只能在Windows下进行了. 看了一下介绍Windows API的博客: 点击打开 基 ...
随机推荐
- [源码解析] 深度学习分布式训练框架 horovod (3) --- Horovodrun背后做了什么
[源码解析] 深度学习分布式训练框架 horovod (3) --- Horovodrun背后做了什么 目录 [源码解析] 深度学习分布式训练框架 horovod (3) --- Horovodrun ...
- Visual Studio 2022 Preview 1 和.NET 6 Preview 5 正式发布
具有里程碑意义的Visual Studio 2022 Preview 1正式发布,重点是64位,而没有增加新功能,并且同时也发布了.NET 6 Preview 5. https://devblogs. ...
- Django基础之视图层
内容概要 小白必会三板斧 request对象方法初识 form表单上传文件 Jsonresponse FBV与CBV 内容详细 1 小白必会三板斧 HttpResponse render redire ...
- 台达PLC开发笔记(一):台达PLC连接介绍,分别使用485、网口与台达PLC建立连接
前言 台达AS系列,型号为AS322P. 物理设备连接 使用WPL Editor连接PLC 使用RS485口当作RS232口连接PLC 注意: ...
- linux基础(电脑基本原理)
1.计算机体系结构:运算器 控制器 存储器 输入设备 输出设备 详解:存储即内存:编址的存储单元.即每一个存储单元在都有一个编址. 控制器告诉运算器加数在存储器的哪个存储单元. POST: ...
- Vue(1)Vue安装与使用
前言 Vue(读音/vjuː/,类似于view) 是一套用于构建前后端分离的框架.刚开始是由国内优秀选手尤雨溪开发出来的,目前是全球"最"流行的前端框架.使用vue开发网页很简单, ...
- Unity 按空格一直触发Button点击事件的问题
#解决 这是由于Button中Navigation(导航)功能导致的. 将导航设置为None即可. 真是气死我了,我说为什么点击完按钮界面,按空格就一直触发界面,难搞
- 1、centos7修改网卡名称为传统的eth0
[root@localhost ~]# cd /etc/sysconfig/network-scripts/ [root@localhost network-scripts]#mv ifcfg-ens ...
- redis为什么那么快?
数据库有很多,为什么Redis能有如此突出的表现呢?一方面,因为它是内存数据库,所有操作都在内存上完成.另外一方面就要归功于他的数据结构.高效的数据结构是Redis快速处理的基础.今天我们就来聊聊了R ...
- doc系统maven打包脚本
chcp 65001@echo off title 打包神器,龙爷造. echo ============================= echo 姓名:Long echo 日期:2020-08- ...