windows程序设计基础知识
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程序设计基础知识的更多相关文章
- C语言程序设计基础-第1周作业-初步
1.安装带有计算机术语的翻译软件 2.在自己电脑上安装C编译器,windows系统建议安装dev-c++,其他系统自行查找. 3.加入课程小组,有任何疑问可以在小组中提问:https://group. ...
- Java程序设计基础项目总结报告
Java程序设计基础项目总结报告 20135313吴子怡 一.项目内容 运用所学Java知识,不调用Java类库,实现密码学相关算法的设计,并完成TDD测试,设计运行界面. 二.具体任务 1.要求实现 ...
- Windows程序内部运行机制 转自http://www.cnblogs.com/zhili/p/WinMain.html
一.引言 要想熟练掌握Windows应用程序的开发,首先需要理解Windows平台下程序运行的内部机制,然而在.NET平台下,创建一个Windows桌面程序,只需要简单地选择Windows窗体应用程序 ...
- 深入浅出话VC++(1)——Windows程序内部运行机制
一.引言 要想熟练掌握Windows应用程序的开发,首先需要理解Windows平台下程序运行的内部机制,然而在.NET平台下,创建一个Windows桌面程序,只需要简单地选择Windows窗体应用程序 ...
- 第三章—Windows程序
这一章我都不知道该如何写了,呵呵~~ 毕竟,Win32是一个非常深奥的系统,目前还容不得我这种 小辈在这儿说三道四,不过,我既然是要写给那些入门阶段的朋友们看的,又不是写给那些搞程序设计老鸟看的,所以 ...
- 我的VSTO之路(二):VSTO程序基本知识
原文:我的VSTO之路(二):VSTO程序基本知识 开始之前,首先我介绍一下我的开发环境:VS2010 + Office 2010,是基于.Net framework 4.0和VSTO 4.0.以下的 ...
- Windows编程 Windows程序的生与死(上)
引子 “Windows 程序分为‘程序代码’和‘UI(User Interface)资源’两大部份,两部份最后以RC编译器(资源编译器)整合为一个完整的EXE 文件.所谓UI 资源是指功能菜单.对话框 ...
- Windows内核基础知识-5-调用门(32-Bit Call Gate)
Windows内核基础知识-5-调用门(32-Bit Call Gate) 调用门有一个关键的作用,就是用来提权.调用门其实就是一个段. 调用门: 这是段描述符的结构体,里面的s字段用来标记是代码段还 ...
- 程序设计基础·Java学习笔记·面向对象(下)
Java程序设计基础之面向对象(下) (补充了上的一些遗漏的知识,同时加入了自己的笔记的ヾ(•ω•`)o) (至于为什么分P,啊大概是为了自己查笔记方便(?)应该是("` 3′") ...
随机推荐
- B/S开发——文件夹的上传和下载
本人在2010年时使用swfupload为核心进行文件的批量上传的解决方案.见文章:WEB版一次选择多个文件进行批量上传(swfupload)的解决方案. 本人在2013年时使用plupload为核心 ...
- Kapitan 通用terraform&& kubernetes 配置管理工具
Kapitan 是一个通用的配置管理工具,可以帮助我们管理terraform .kubernetes 以及其他的配置. Kapitan 自生基于jsonnet 开发,对于我们日常进行软件的部署(tf以 ...
- vue引入nutUI
这段时间需要做一个移动端项目,我需要选着用哪个UI库,其它的UI库没多看,看了看mintUI和nutUI,感觉mintUI的功能要比nutUI的功能少点,mintUI是饿了么团队开发的,而nutUI是 ...
- hdfs、yarn集成kerberos
1.kdc创建principal 1.1.创建认证用户 登陆到kdc服务器,使用root或者可以使用root权限的普通用户操作: # kadmin.local -q “addprinc -randke ...
- windows批量删除当前目录以及子目录的所有空文件夹
在桌面创建一个记事本,将以下内容复制粘贴到记事本中,将记事本的拓展名修改为bat即可,然后将该文件放到需要执行的目录双击. @echo off setlocal enabledelayedexpans ...
- python 安装离线库
(起因:报错找不到一个module,百度也找不到这个module,机智如我找宁博翻墙看怎么解决,毕竟是歪果仁的代码嘛,果真就在git找到了这个module哈哈哈哈机智如我!) 方法: 进入命令行窗口, ...
- 在js中添加HTML类样式
有时候需要给元素添加类样式,但又要保留之前的类,可以使用element.classList.add("类名");
- 2015-2016-2《Java程序设计》团队博客1
项目内容 经过一些讨论之后决定了最终的项目:简易画图板项目设计与开发 目标 制作一个能够画各种图形的画板,并能有多种颜色可以选择:输入文本时也可以选择字体:能够保存,新建,和导入图片 实现计划 十一周 ...
- C++多线程下出现内存越界问题总结
工作中遇到这样一个问题,某个多级流水多线程的程序,在压力测试下会偶现segmentation fault11错误,错误出现在运行类函数的地方,而后排查后发现是由于多线程争抢导致类被析构后才走入判断,导 ...
- jsoup获取标签下的文本(去除子标签的)
jsoup获取标签下的文本(去除子标签的) <pre name="code" class="java">Element content=doc.se ...