Windows API 入门(什么是 Windows API?、 实例程序 、Windows API函数有几个?)

什么是 Windows API?

Windows API又叫做 API 函数, 是 Windows 的核心,从技术上讲,我们技术人员在 Windows 操作系统里做技术开发,Windows 对我们技术人员来说,里面有大量的 API 函数。

API 叫做 “应用程序编程接口”(Application Programming Interface) ,我们在使用各种各样的编程语言在 Windows 开发时,都可以使用 API函数。

做程序设计、软件开发,肯定要调用或者说是使用  Windows 里已经做好的那些 API 函数。

微软在做 Windows 时,几万人做了十几年做出了大量API函数, Windows 自身在用这些函数,而我们程序员也可以调用这些函数。

所以,API函数是程序员的必学基础。



实例程序

先创建一个常规的空项目,用C++语言。接触的第一个API函数   : 弹出对话框函数

#include <iostream>
#include <Windows.h>//加上Windows.h头文件
using namespace std;

int main()
{
	cout << "Hellow C++" << endl;

	//弹出一个对话框函数,第一个参数为副窗口一般写NULL,第二个参数是消息的内容,第三个参数是标题,第四个参数是按钮(常量)
	MessageBox(NULL, TEXT("Hellow C++"), TEXT("标题"), MB_OK);

	system("pause");
	return 0;
}


我们也可以 把 main函数改一改 。因为我们现在要做的是Windows的程序,Windows的程序有一个 Winmain  , 我们把 Winmain 写上,就更能体现我们是 Windows 程序

Winmain()有四个参数,微软规定我们做 Windows 程序设计, 就必须把这四个参数写上,即使不用到。(c语言或者c++语言的程序可以是windows的,也可以不是windows的)

#include <iostream>
#include <Windows.h>//加上Windows.h头文件
using namespace std;

int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	cout << "Hellow C++" << endl;

	//弹出一个消息框函数,第一个参数为副窗口一般写NULL,第二个参数是消息的内容,第三个参数是标题,第四个参数是按钮(常量)
	MessageBox(NULL, TEXT("Hellow C++"), TEXT("标题"), MB_OK);

	system("pause");
	return 0;
}

上面的已经越来越像 Windows 程序设计了 , 下面来做一个稍微复杂一点的例子 , 建立一个 Win32 项目 ,取代常规空项目。这个就是 Windows 窗口界面的了,就不是那个黑黑的窗口了。

建立好了之后会自动出现很多已经生成的代码,现在暂且不理会它们,以后要慢慢学习


比如我在这里添加一个  按下鼠标左键,弹出消息框 函数




运行一下   然后单击鼠标左键



再来一个MFC

最简单的MFC,勾选 “基于对话框”



运行



又因为 API在MFC中有了新的包装

/*
void CMFCApplication2Dlg::OnBnClickedButton1()
{
	// TODO:  在此添加控件通知处理程序代码
	::MessageBox(NULL, TEXT("Hellow MFC"), TEXT("标题啦啦啦"), MB_OK);
	//因为MFC是C++  而这些API函数都是在默认命名空间里的,所以要加 "::"
}
*/

void CMFCApplication2Dlg::OnBnClickedButton1()
{
	// TODO:  在此添加控件通知处理程序代码
	MessageBox(TEXT("Hellow MFC"), TEXT("标题"));//作了简化,同样可以运行
	//我们也可以写成这样,这时的MessageBox函数不在默认作用域里了,应该是在 CMFCApplication2Dlg 这个类里了
	//为了一探究竟,我们可以点开 CMFCApplication2Dlg.h 这个头文件
}

我们点开了 CMFCApplication2Dlg.h 这个头文件


可见 , 这个类 继承了 CDialogEx  这个类, 那么 明白了 , 那个 MessageBox 函数是在父类 CDialogEx  这个类中




Windows API函数有几个?

实际上,有几万个API函数。。就像一本英语词典,我们需要熟练掌握那些常用的,而另外的则是遇到了再进行学习







  • 56
    点赞
  • 238
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
《JSP程序设计从入门到精通》电子书   第1篇 入门篇 7   第1章 Jsp概述 技术分析 7    1.1 Jsp简介与历史背景 7    1.1.1 日新月异的Web技术 7    1.1.2 什么是JSP 8    1.1.3 JSP技术有以下几个显著的优点 9    1.1.4 JSP和其他类似或相关技术的一个简单比较 10    1.2 JSP环境安装配置 12    1.2.1Tomcat下JSP环境的配置 12    1.2.1建立自己的Jsp工作目录 13    1.3 JSP语法介绍 14    1.3.1 JSP页面中的元素 14    1.3.2 JSP语法概要 15    1.3.3关于模板文本(静态HTML) 16    1.4 运行第一个Jsp程序 16    1. 5本章小结 20   第2章Jsp 基础学习 20    2.1 JSP基本语法 20    2.1.1 JSP 语法之声明 21    2.1.2 JSP 语法之表达式 21    2.1.3 JSP 语法之Scriptlet 21    2.2 JSP的指令 22    2.2.1 page指令(Directive) 22    2.2.2 include指令(Directive) 24    2.3 JSP的动作 25    2.3.1 jsp:include动作 25    2.3.2 jsp:useBean动作 27    2.3.3 jsp:setProperty动作 29    2.3.4 jsp:getProperty动作 30    2.3.5 jsp: forward动作 31    2.3.6 jsp: plugin动作 31    2.3.7注释 31    2.4 JSP 9种基本内置组件 31    2.5 JSP中Session的使用 34    2.6 JSP中forward的使用 36    2.7 JSP运行时错误处理与应该注意的六个常见问题 37    2.8 JSP小实例 38    2.8.1实例1(在JSP中定义函数) 38    2.8.2实例2(获取各种CGI环境变量) 39    2.8.3实例3(JSP里request变量列表) 42    2. 9本章小结 44   第3章JavaBean组件 44    3.1 什么是JavaBeans 45    3.1.1 JavaBeans 简介 45    3.1.2 JavaBeans 属性 45    3.1.3 JavaBeans 的事件 50    3.2 在Jsp中使用JavaBeans 55    3.3 JavaBeans的scope属性 57    3.4 JavaBeans应用实例 59    3.4.1 实例1(HelloWord.java) 59    3.4.2 实例2(People.java) 60    3.4.3实例子3数组应用 (Example2_3.java) 60    3.4.4实例子4运算符、表达式应用 (Example3_1.java) 61    3.5 本章小结 62   第4章Jsp与Servlet 62    4.1 什么是Servlets 63    4.1.1 JavaServlet的解释 63    4.1.2 什么是Jsp 65    4.1.3 得到一个Servlets和JSP的运行环境 66    4.1.4 实现第一个JSP和SERVELT 67    4.2 Servlet规范定义的Servlet 生命周期 70    4.3 JSP/Servlet的重定向技术综述 72    4.3.1 RequestDispatcher.forward() 72    4.3.2 response.sendRedirect() 73    4.4 理解会话 74    4.4.1 会话状态跟踪API 75    4.4.2 在会话对象中保存数据 76    4.4.3实例:显示会话信息 76    4.5 用Java Servlets代替CGI 78    4.6 JSP/Servlet 中的汉字编码问题 80    4.7 图解Eclipse+Tomcat集成开发Servlet 84    4.8 Servlets/JSP开发技术问答 93    4.9 Servlet小实例 97    4.5.1实例1(输出) 98    4.5.2实例2(获取表单参数) 99    4.5.3实例3(获取jsp各种参数) 101    4.1
这是书的光盘。共分为两个部分,这是第一部分。 本书由浅入深、循序渐进地介绍了Windows驱动程序的开发方法与调试技巧。本书共分23章,内容涵盖了 Windows操作系统的基本原理、NT驱动程序与WDM驱动程序的构造、驱动程序中的同步异步处理方法、驱 动程序中即插即用功能、驱动程序的各种调试技巧等。同时,还针对流行的PCI驱动程序、USB驱动程序 、虚拟串口驱动程序、摄像头驱动程序、SDIO驱动程序进行了详细的介绍,本书最大的特色在于每一节 的例子都是经过精挑细选的,具有很强的针对性。力求让读者通过亲自动手实验,掌握各类Windows驱动 程序的开发技巧,学习尽可能多的Windows底层知识。   本书适用于中、高级系统程序员,同时也可用做高校计算机专业操作系统实验课的补充教材。 原创经典,威盛一线工程师倾力打造。深入驱动核心,剖析操作系统底层运行机制,通过实例引导,快 速学习编译、安装、调试的方法。   从Windows最基本的两类驱动程序的编译、安装、调试入手讲解,非常容易上手,用实例详细讲解 PCI、USB、虚拟串口、虚拟摄像头、SDIO等驱动程序的开发,归纳了多种调试驱动程序的高级技巧,如 用WinDBG和VMWARE软件对驱动进行源码级调试,深入Windows操作系统的底层和内核,透析Windows驱动 开发的本质。 本书是作者结合教学和科研实践经验编写而成的,不仅详细介绍了Windows内核原理,而且介绍了编程技 巧和应用实例,兼顾了在校研究生和工程技术人员的实际需求,对教学、生产和科研有现实的指导意义 ,是一本值得推荐的专著。              ——中国工程院院士   院士推荐   目前,电子系统设计广泛采用通用操作系统,达到降低系统的设计难度和缩短研发周期。实现操作 系统与硬件快速信息交换是电子系统设计的关键。   通用操作系统硬件驱动程序的开发,编写者不仅需要精通硬件设备、计算机总线,而且需要Windows 操作系统知识以及调试技巧。学习和掌握Windows硬件驱动程序的开发是电子系统设计人员必备的能力。   本书是作者结合教学和科研实践经验编写而成的,不仅详细介绍了Windows内核原理,并且介绍了编 程技巧和应用实例,兼顾了在校研究生和工程技术人员的实际需求,对教学、生产和科研有现实的指导 意义,是一本值得推荐的专著。 第1篇 入门篇 第1章 从两个最简单的驱动谈起 本章向读者呈现两个最简单的Windows驱动程序,一个是NT式的驱动程序,另一个是WDM式的驱动程序。 这两个驱动程序没有操作具体的硬件设备,只是在系统里创建了虚拟设备。在随后的章节中,它们会作 为基本驱动程序框架,被本书其他章节的驱动程序开发所复用。笔者将带领读者编写代码、编译、安装 和调试程序。   1.1 DDK的安装   1.2 第一个驱动程序HelloDDK的代码分析    1.2.1 HelloDDK的头文件    1.2.2 HelloDDK的入口函数    1.2.3 创建设备例程    1.2.4 卸载驱动例程    1.2.5 默认派遣例程   1.3 HelloDDK的编译和安装    1.3.1 用DDK环境编译HelloDDK    1.3.2 用VC集成开发环境编译HelloDDK    1.3.3 HelloDDK的安装   1.4 第二个驱动程序HelloWDM的代码分析    1.4.1 HelloWDM的头文件    1.4.2 HelloWDM的入口函数    1.4.3 HelloWDM的AddDevice例程    1.4.4 HelloWDM处理PNP的回调函数    1.4.5 HelloWDM对PNP的默认处理    1.4.6 HelloWDM对IRP_MN_REMOVE_DEVICE的处理    1.4.7 HelloWDM对其他IRP的回调函数    1.4.8 HelloWDM的卸载例程   1.5 HelloWDM的编译和安装    1.5.1 用DDK编译环境编译HelloWDM    1.5.2 HelloWDM的编译过程    1.5.3 安装HelloWDM   1.6 小结  第2章 Windows操作驱动的基本概念  驱动程序被操作系统加载在内核模式下,它与Windows操作系统内核的其他组件进行密切交互。本章主 要介绍Windows操作系统内核的基本概念,同时还介绍应用程序和驱动程序之间的通信方法。   2.1 Windows操作系统概述    2.1.1 Windows家族    2.1.2 Windows特性    2.1.3 用户模式和内核模式    
Windows APIWindows操作系统提供的一组核心API函数,可以用于开发Windows应用程序。这些API函数提供了许多功能,例如窗口管理、文件操作、网络通信等。使用Windows API可以让开发者更加灵活地控制Windows系统,实现更加复杂的功能。以下是一个使用Windows API创建一个简单窗口的示例: ```c #include <windows.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static TCHAR szAppName[] = TEXT("HelloWin"); HWND hwnd; MSG msg; WNDCLASS wndclass; wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = WndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInstance; wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = szAppName; if (!RegisterClass(&wndclass)) { MessageBox(NULL, TEXT("This program requires Windows NT!"), szAppName, MB_ICONERROR); return 0; } hwnd = CreateWindow(szAppName, // window class name TEXT("The Hello Program"), // window caption WS_OVERLAPPEDWINDOW, // window style CW_USEDEFAULT, // initial x position CW_USEDEFAULT, // initial y position CW_USEDEFAULT, // initial x size CW_USEDEFAULT, // initial y size NULL, // parent window handle NULL, // window menu handle hInstance, // program instance handle NULL); // creation parameters ShowWindow(hwnd, iCmdShow); UpdateWindow(hwnd); while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; RECT rect; switch (message) { case WM_CREATE: return 0; case WM_PAINT: hdc = BeginPaint(hwnd, &ps); GetClientRect(hwnd, &rect); DrawText(hdc, TEXT("Hello, Windows API!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER); EndPaint(hwnd, &ps); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, message, wParam, lParam); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值