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的博客: 点击打开 基 ...
随机推荐
- Error in invoking target 'mkldflags ntcontab.o nnfgt.o' of mkdefile '/u01/app/oracle/product/11.2.0
rpm -ivh cpp-4.4.7-3.el6.x86 64.rpm --nodeps --force (强制安装rpm包)
- ClickHouse源码笔记6:探究列式存储系统的排序
分析完成了聚合以及向量化过滤,向量化的函数计算之后.本篇,笔者将分析数据库的一个重要算子:排序.让我们从源码的角度来剖析ClickHouse作为列式存储系统是如何实现排序的. 本系列文章的源码分析基于 ...
- MySQL—Dos命令操作数据库
MySQL 是一个关系型数据库,存在表的概念 结构,数据库可以存放多张表,每个表可以存放多个字段,每个字段可以存放多个记录 Dos命令操作数据库 PhpStudy使用终端打开数据库 第一次打开默认的密 ...
- Android Studio用上国产杰出代表夜神模拟器
背景介绍 在Windows上除了官方的AVD(Android Virtual Device)我们还可以使用更加便捷的国产安卓模拟器,比如杰出的代表就是夜神模拟器. 我们现在是假设你已经安装好了Andr ...
- 15、linux文件、目录的权限及如何改变权限(root用户不受任何权限的限制)
15.1.linux普通文件的读.写.执行权限说明: r:读,表示具有读取\阅读文件内容的权限: w:可写,表示具有新增,修改文件内容的权限: 如果没有r配合,那么vi编辑文件会提示无法编辑(但可以强 ...
- 24、dhcp服务搭建
1.dhcp介绍: DHCP(Dynamic Host Configuration Protocol),动态主机配置协议,DHCP 协议主要是用来自动为局域网中的客户机分配 TCP/IP 信息的网络协 ...
- python之字典(dict)基础篇
字典:dict 特点: 1>,可变容器模型,且可存储任意类型对象,字符串,列表,元组,集合均可: 2>,以key-value形式存在,每个键值 用冒号 : 分割,每个键值对之间用逗号 , ...
- 使用命令行操作MySQL 及 语法
在使用之前先要确保服务中的MySQL 已启动,否则会报错:ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061 ...
- 2shell中处理字符串,字符串的截取、替换
0.字符串的小知识点 1.字符串的截取 1.1从指定位置开始截取 1.2 从指定字符(子字符串)开始截取 1.3字符串截取的总结 1.4 按指定要求截取 2.字符串的拼接 3.字符串的替换 0.字符串 ...
- leetcode 面试题 17.22. 单词转换(DFS+回溯)
题目描述 思路分析 这题回溯,先想出它的空间解是什么,这里空间解,其实就是给的原字符串到结束字符串中间的变形过程,那么就可以容易的画出一个解空间树,用深度搜索进行搜索, 剪枝后,进入下一个维度,再进行 ...