Win32 API(Application Programming Interface)

Win32 API可认为是一个程序库,提供各式各样的与windows系统服务有关的函数。

Win32 API是最底层的服务,可调用Windows的各种服务。

通常所说的SDK编程就是直接调用API函数进行编程。

Win32 API是指编制32位应用程序时用的一组函数、结构、宏定义。在Win32的环境下,任何语言都是建立在Win32 API基础上的。C#等软件API隐藏的较深。

大多数API位于三个核心的DLL中

kernel32.dll、user32.dll、GDI32.dll

采用其开发windows应用程序过于繁琐。

API&MFC

1、kernel

在Win32中库名为KERNEL32.DLL,主要用于产生与操作系统之间的关联。

程序加载

上下文选择

文件输入输出

内存管理

例如:GlobalMemoryStatus函数就是包括当前物理内存及虚拟内存的使用信息。

2、user

这个类库在Win32中名叫USER32.DLL

它允许管理全部的用户接口。例如

窗口

菜单

对话框

图标等。

例如,DrawIcon函数将在指定的设备关联上“画”出图标或者鼠标。

3、GDI(Graphical Device Interface)

它在Win32中的库名为GDI32.dll,它是图形输出库,使用GDI Windows "画"出窗口、菜单以及对话框等;

它能创建图形输出

它也能保存图形文件。

例如,CreateBitmap 函数就能通过指定的长、宽、颜色创建一个位图。

4、API&MFC

API:一套用来控制Windows的各个部件(从桌面的外观到为一个新进程分配的内存)的外观和行为的一套预先定义的Windows函数。

MFC:是对Windows API的封装,是Win API与C++的结合,MFC就是挂在它之上的一个辅助软件开发包。

MFC的主包含文件为"Afxwin.h"

API的主包含文件为"windows.h"

API 函数的调用方法

1、C++调用过程

(1)包含要调用函数的声明文件

windows.h包含其他头文件

windef.h基本类型定义

winnt.h支持Unicode的类型定义

winbase.h内核函数

winuser.h用户接口函数

wingdi.h图形设备接口函数

winsock.h网络编程函数

(2)连接到指定的库文件

kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib

显式设置 #pragma comment(lib,"WS2_32.lib")

(3)在API函数前加"::"表示这是一个全局函数,以与C++类的成员函数区分。

调用API例子(C++)

#include "stdafx.h"   // 这是VC自动添加的头文件,主要是加快编译速度#include <windows.h>  // 包含MessageBox函数声明的头文件 int main(int argc,char *argv[]){ // 调用API函数MessageBox int nSelect = ::MessageBox( NULL, "Hello,Windows", "Greeting", MB_OKCANCEL);  if(nSelect == IDOK)  printf("用户选择了“确定"按钮\n"); else  printf("用户选择了“取消"按钮\n"); return 0;}

原文链接:https://blog.csdn.net/qq_32285693/article/details/95061363

windows程序设计基础知识的更多相关文章

  1. C语言程序设计基础-第1周作业-初步

    1.安装带有计算机术语的翻译软件 2.在自己电脑上安装C编译器,windows系统建议安装dev-c++,其他系统自行查找. 3.加入课程小组,有任何疑问可以在小组中提问:https://group. ...

  2. Java程序设计基础项目总结报告

    Java程序设计基础项目总结报告 20135313吴子怡 一.项目内容 运用所学Java知识,不调用Java类库,实现密码学相关算法的设计,并完成TDD测试,设计运行界面. 二.具体任务 1.要求实现 ...

  3. Windows程序内部运行机制 转自http://www.cnblogs.com/zhili/p/WinMain.html

    一.引言 要想熟练掌握Windows应用程序的开发,首先需要理解Windows平台下程序运行的内部机制,然而在.NET平台下,创建一个Windows桌面程序,只需要简单地选择Windows窗体应用程序 ...

  4. 深入浅出话VC++(1)——Windows程序内部运行机制

    一.引言 要想熟练掌握Windows应用程序的开发,首先需要理解Windows平台下程序运行的内部机制,然而在.NET平台下,创建一个Windows桌面程序,只需要简单地选择Windows窗体应用程序 ...

  5. 第三章—Windows程序

    这一章我都不知道该如何写了,呵呵~~ 毕竟,Win32是一个非常深奥的系统,目前还容不得我这种 小辈在这儿说三道四,不过,我既然是要写给那些入门阶段的朋友们看的,又不是写给那些搞程序设计老鸟看的,所以 ...

  6. 我的VSTO之路(二):VSTO程序基本知识

    原文:我的VSTO之路(二):VSTO程序基本知识 开始之前,首先我介绍一下我的开发环境:VS2010 + Office 2010,是基于.Net framework 4.0和VSTO 4.0.以下的 ...

  7. Windows编程 Windows程序的生与死(上)

    引子 “Windows 程序分为‘程序代码’和‘UI(User Interface)资源’两大部份,两部份最后以RC编译器(资源编译器)整合为一个完整的EXE 文件.所谓UI 资源是指功能菜单.对话框 ...

  8. Windows内核基础知识-5-调用门(32-Bit Call Gate)

    Windows内核基础知识-5-调用门(32-Bit Call Gate) 调用门有一个关键的作用,就是用来提权.调用门其实就是一个段. 调用门: 这是段描述符的结构体,里面的s字段用来标记是代码段还 ...

  9. 程序设计基础·Java学习笔记·面向对象(下)

    Java程序设计基础之面向对象(下) (补充了上的一些遗漏的知识,同时加入了自己的笔记的ヾ(•ω•`)o) (至于为什么分P,啊大概是为了自己查笔记方便(?)应该是("` 3′") ...

随机推荐

  1. LeetCode 439. Ternary Expression Parser

    原题链接在这里:https://leetcode.com/problems/ternary-expression-parser/description/ 题目: Given a string repr ...

  2. Python爬虫 | re正则表达式解析html页面

    正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"). 正则表达式通常被用来匹配.检索.替换和 ...

  3. 1-移远GSM/GPRS M26 模块 Mini板 开发板(使用说明)

    板子预览 引脚说明 供电 关于串口电压匹配引脚: 上面一版朋友测试反应的问题 (上面的内容不删除,因为已经出售了1套) 1,源码开发完以后,烧录完成 PWRKEY按键不能使用了,需要断电上电,那么就需 ...

  4. 【loj2262】【CTSC2017】网络

    题目 一颗\(n\)个点的树,求加入一条边点之后两点间最长距离的最小值 : \(n \le 100000\) ; 题解 首先加入边的两个端点一定在直径上面,先\(dfs\)拎出直径来讨论(下标只代表直 ...

  5. 解决Git - git push origin master 报错

    关注我,每天都有优质技术文章推送,工作,学习累了的时候放松一下自己. 欢迎大家关注我的微信公众号:「醉翁猫咪」 原因:github仓库中没有README.md文件 解决如下: 重新输入git push ...

  6. RocketMq重复消费问题排查

    前情 出现了重复消费的问题,同一个消息被重复消费了多次,导致了用户端收到了多条重复的消息,最终排查发现,是因为消费者在处理消息的方法onMessage中有异常没有捕获到,导致异常上抛,被consume ...

  7. 微信小程序之页面导航栏

    效果图: 页面有点丑,作为初次学习,页面可以要求不那么美观,先学会再说.毕竟后面可以优化的很漂亮. 代码实例如下: <view class="section btn-area" ...

  8. 菜鸟教程C++(一)

    一.C++基本语法 C++程序可以定义为对象的集合,这些对象可以通过调用彼此的方法进行交互. 对象:对象具有状态和行为.例如:一只狗的状态:颜色.名称.品种等,行为:摇动.叫唤等.对象是类的实例. 类 ...

  9. Redis代码示例

    RedisTemplate 如果想要在java中使用Redis相关的数据结构,要先注入RedisTemplate. @Autowired private RedisTemplate<K,V> ...

  10. jquery数组倒序

    倒叙前:var mem = [1, 2, 3]: 倒序后:var men1=[3,2,1]: <script type="text/javascript"> $(fun ...