三:Windows API的功能分类

Windows API 所能实现的功能包括很多方面,在进行应用程序的开发时,开发人员可能会使用到文件、进程、内存、权限、系统信息等系统的基本服务和系统管理类的 API,可能会用到图形用户界面、控件等函数和对象,可能需要在界面上绘制图像处理多媒体信息等,还包括进行网络通信开发等。

系统基本服务

系统基本服务是 Windows API 最基本的内容,是最常使用到的程序接口。系统基本服务API 包括以下几个方面。

1.文件系统

对文件的基本操作包括文件的创建、打开、读写、关闭、删除,文件属性的设置与获取,目录操作,以及磁盘分卷的操作,还包括镜像文件、加密文件系统等。

2.内存管理

主要是内在的分配、共享、释放等内容,包括虚拟内存管理、分页机制、堆管理等。

3.进程、线程和模块

包括进程主程序( exe)、模块、动态链接库(dll)的编写;线程的基本概念,线程创建、遍历、同步等操作;进程与权限;线程与纤程等内容。

4.设备 I/O、驱动程序控制

包括设备对象等基本概念。加载与卸载驱动程序,控制驱动程序,与驱动程序通信等。

5.调试与错误处理

包括如何开发调试器,程序运行错误的处理,日志的记录、Windows 可执行文件的结构等。

6.Windows 系统信息

包括注册表的操作,如打开注册表,读取、写入键值,创建、删除键;还包括系统基本信息的获取和设置,如系统目录、系统版本、计算机名等。

7.进程间通信

包括使用共享文件进行进程间通信的方法, 使用消息进行进程间通信的方法,使用邮槽、管道等进行进程间通信的方法,使用网络共享进行进程间通信的方法。

8.定时器与消息机制

消息机制是 Windows 系统中很重要的一种机制。几乎所有的 Windows 应用程序都在与消息打交道,而 Windows 的消息机制又是依赖于定时器的。所以了解 Windows 消息机制是学习Windows 应用程序开发的重要内容。

9.其他

Windows 的系统基本服务还包括性能监视、电源管理、索引与数据存储等。

系统管理

系统管理是 Windows 系统中很重要的内容。 Windows 系统提供了以下方面的 API 供应用
程序开发人员使用,包括:管理控制台接口、程序安装、系统恢复、任务调度、Windows 运
程管理。

用户界面

用户界面开发是 Windows 应用程序开发的重要内容。Windows 用户界面主要包括两个部分, Windows Shell 和 Windows 图形用户界面。Windows 图形用户界面包括窗口对象的相关内容,界面资源,控件、用户数据交换(粘贴板等)和用户输入的处理。

1.窗口化

包括一些基本数据概念和对象:窗口类、消息对列、窗口过程(消息处理函数)、窗口属性等。主要包括的 API 有窗口类注册的函数、窗口建立与关闭函数、窗口属性修改函数等。

2.资源

资源是 Windows 应用程序中很重要的一项内容,在可执行文件中,专门有用于存储资源的节。这里所说的资源是界面资源,包括图标、菜单、字符串、版本信息、对话框、动态光标、插入号(Carets)等。资源的处理涉及众多 API 函数。

3.用户输入处理

包括对话框、键盘加速器(快捷键)、键盘输入、鼠标输入、原始数据输入等。这些概念是程序通过用户界面与用户进行交互的基本概念。

4.数据交换

包括 Atom 表(包括了若干字符串和标识符)、粘贴板、数据复制、动态数据交接等基本概念,是用户和应用程序通过用户界面进行数据交换的主要载体。

5.Windows 图形界面通用控件

Windows 系统提供了不少于 30 种的控件供应用程序使用,其中最常用的几种包括 Edit控件(文本框)、Button 控件(按钮)、ListView 控件(列表)、ToolTip 控件(提示框)、ComboBox 控件(下拉选择框)、Tree-View 控件(树)、Rich-Edit 控件(多功能文本框)、Tab 控件(分页)、Process 控件(进度条)等。

6.Windows Shell

Windows 桌面浏览器(explorer.exe)的功能强大,Windows Shell 应用程序可以利用WindowsShell 桌面的程序接口达到管理系统、定制图标和默认程序、扩展桌面功能等目的。
下面的一个程序使用了与图形用户界面相关的一些函数。程序中,首先注册了窗口类,然后创建了一个窗口,创建窗口时指定的窗口的属性和窗口消息的处理函数。函数消息的处理函数大多调用系统默认函数来处理。

#include<Windows.h>
#include<stdio.h>

HINSTANCE hinst;
LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);

/*显示一个窗口*/
int WinMain(HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow){

    WNDCLASSEX wcx;  //窗口类
    HWND hwnd;//窗口句柄
    MSG msg;//消息
    BOOL fGotMessage;//是否成功获取消息
    hinst = hInstance;//应用程序实例句柄

    //设置窗口类的数据结构
    wcx.cbSize = sizeof(wcx);//结构体大小
    wcx.style = CS_HREDRAW | CS_VREDRAW;//样式:大小改变时重绘界面
    wcx.lpfnWndProc = MainWndProc;//窗口消息处理函数
    wcx.cbClsExtra = 0;//不使用类内存
    wcx.cbWndExtra = 0;//不使用窗口内存
    wcx.hInstance = hInstance;//所属的应用程序实例句柄
    wcx.hIcon = LoadIcon(NULL, IDI_APPLICATION);//图标:默认
    wcx.hCursor = LoadCursor(NULL, IDC_ARROW);//光标:默认
    wcx.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//背景:白色
    wcx.lpszMenuName = NULL;//菜单:不使用
    wcx.lpszClassName = "这是一个窗口";
    wcx.hIconSm = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(5),
        IMAGE_ICON, GetSystemMetrics(SM_CXSMICON),
        GetSystemMetrics(SM_CXSMICON),
        LR_DEFAULTCOLOR);

    //注册窗口类
    if (!RegisterClassEx(&wcx)){
        return 1;
    }

    //创建窗口
    hwnd = CreateWindow(
        "MainWClass",//窗口名
        "CH 2-3",//窗口标题
        WS_OVERLAPPEDWINDOW,//窗口样式
        CW_USEDEFAULT,//水平位置X
        CW_USEDEFAULT,//垂直位置Y
        CW_USEDEFAULT,//宽度
        CW_USEDEFAULT,//高度
        (HWND)NULL,//父窗口:无
        (HMENU)NULL,//菜单:使用窗口类菜单
        hInstance,//应用程序实例句柄
        (LPVOID)NULL//窗口创建时数据:无
        );

    if (!hwnd){
        return 1;
    }

    //显示窗口
    ShowWindow(hwnd, nCmdShow);
    UpdateWindow(hwnd);

    //消息循环
    while (fGotMessage = GetMessage(&msg, (HWND)NULL, 0, 0) != 0
        && fGotMessage != -1){
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}

LRESULT CALLBACK MainWndProc(HWND hwnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam){
    switch (uMsg)
    {
    case WM_DESTROY:
        ExitThread(0);
        return 0;
    default:
        return DefWindowProc(hwnd, uMsg, wParam, lParam);
    }
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值