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的博客: 点击打开 基 ...
随机推荐
- H5播放需要解密的m3u8音频文件
<audio ref="audio"></audio> import CryptoJS from "crypto-js"; import ...
- 树的计数(prufer序列 或 purfer序列)
题解 首先我们要知道一条性质,prufer序列中的某个点出现次数为该点在树中度数-1 感性理解一下,其实按照prufer序列求法自己推一下就出来了 设题目里给的度为$d[]$ 先将所有的d-- 然后按 ...
- 基于ABP落地领域驱动设计-02.聚合和聚合根的最佳实践和原则
目录 前言 聚合 聚合和聚合根原则 包含业务原则 单个单元原则 事务边界原则 可序列化原则 聚合和聚合根最佳实践 只通过ID引用其他聚合 用于 EF Core 和 关系型数据库 保持聚合根足够小 聚合 ...
- UnityWebRequest使用总结
using System.Collections; using UnityEngine; using UnityEngine.Networking; /// <summary> /// 网 ...
- 二、JavaSE语言基础之常量与变量
1.常量 所谓常量值的是数据处理过程中值不能更改的数据. 2.变量 所谓变量值的是运算过程中值可以改变的数据,类似于代数中的未知数. 在Java语言中,使用变量时必须遵循先定义,而后赋值, ...
- 资源:Git快速下载路径
Git快速下载地址: 地址:https://npm.taobao.org/mirrors/git-for-windows/
- 《PHP基础知识总结》系列分享专栏
总结PHP基础知识,对初学者还是高手都值得参考巩固. <PHP基础知识总结>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/2017 ...
- Java 内存泄漏知多少?
先看再点赞,给自己一点思考的时间,如果对自己有帮助,微信搜索[程序职场]关注这个执着的职场程序员.我有什么:职场规划指导,技能提升方法,讲不完的职场故事,个人成长经验. 面试的时候内存管理是不是很多面 ...
- Android 开发学习进程0.32 dwonloadmanager使用
downloadmanager时Android系统下载器,使用系统下载器可以避免用stream流读入内存可能导致的内存溢出问题.以下为downloadmanager初始化部分.apkurl为下载网络路 ...
- RabbitMQ入门教程 [转]
1.引言 RabbitMQ--Rabbit Message Queue的简写,但不能仅仅理解其为消息队列,消息代理更合适.消息队列主要解决应用耦合,异步消息,流量削锋等问题.实现高性能,高可用,可伸缩 ...