zoukankan      html  css  js  c++  java
  • 总结1

    API的英文全称(Application Programming Interface),WIN32 API也就是MicrosoftWindows 32位平台的应用程序编程接口。对这个定义的理解,需要追溯到操作系统的发展历史上,当WINDOWS操作系统开始占据主导地位的时候,开发WINDOWS平台下的应用程序成为人们的需要。而在WINDOWS程序设计领域处于发展的初期,WINDOWS程序员所能使用的编程工具唯有API函数,这些函数是WINDOWS提供给应用程序与操作系统的接口,他们犹如“积木块”一样,可以搭建出各种界面丰富,功能灵活的应用程序。所以可以认为API函数是构筑整个WINDOWS框架的基石,在它的下面是WINDOWS的操作系统核心,而它的上面则是所有的华丽的WINDOWS应用程序。
    什么是Windows API函数
    #include <winapifamily.h>
     
    /*++ BUILD Version: 0001    Increment this if a change has global effects
     
    Copyright (c) Microsoft Corporation. All rights reserved.
     
    Module Name:
     
     
        windows.h
     
    Abstract:
     
        Master include file for Windows applications.
     
    --*/
     
    #ifndef _WINDOWS_
    #define _WINDOWS_
     
     
    #include <sdkddkver.h>
     
    #ifndef _INC_WINDOWS
    #define _INC_WINDOWS
     
    #if defined (_MSC_VER) && (_MSC_VER >= 1020)
    #pragma once
    #endif
     
    #pragma region Application Family
    #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
     
     
    /*  If defined, the following flags inhibit definition
     *     of the indicated items.
     *
     *  NOGDICAPMASKS     - CC_*, LC_*, PC_*, CP_*, TC_*, RC_
     *  NOVIRTUALKEYCODES - VK_*
     *  NOWINMESSAGES     - WM_*, EM_*, LB_*, CB_*
     *  NOWINSTYLES       - WS_*, CS_*, ES_*, LBS_*, SBS_*, CBS_*
     *  NOSYSMETRICS      - SM_*
     *  NOMENUS           - MF_*
     *  NOICONS           - IDI_*
     *  NOKEYSTATES       - MK_*
     *  NOSYSCOMMANDS     - SC_*
     *  NORASTEROPS       - Binary and Tertiary raster ops
     *  NOSHOWWINDOW      - SW_*
     *  OEMRESOURCE       - OEM Resource values
     *  NOATOM            - Atom Manager routines
     *  NOCLIPBOARD       - Clipboard routines
     *  NOCOLOR           - Screen colors
     *  NOCTLMGR          - Control and Dialog routines
     *  NODRAWTEXT        - DrawText() and DT_*
     *  NOGDI             - All GDI defines and routines
     *  NOKERNEL          - All KERNEL defines and routines
     *  NOUSER            - All USER defines and routines
     *  NONLS             - All NLS defines and routines
     *  NOMB              - MB_* and MessageBox()
     *  NOMEMMGR          - GMEM_*, LMEM_*, GHND, LHND, associated routines
     *  NOMETAFILE        - typedef METAFILEPICT
     *  NOMINMAX          - Macros min(a,b) and max(a,b)
     *  NOMSG             - typedef MSG and associated routines
     *  NOOPENFILE        - OpenFile(), OemToAnsi, AnsiToOem, and OF_*
     *  NOSCROLL          - SB_* and scrolling routines
     *  NOSERVICE         - All Service Controller routines, SERVICE_ equates, etc.
     *  NOSOUND           - Sound driver routines
     *  NOTEXTMETRIC      - typedef TEXTMETRIC and associated routines
     *  NOWH              - SetWindowsHook and WH_*
     *  NOWINOFFSETS      - GWL_*, GCL_*, associated routines
     *  NOCOMM            - COMM driver routines
     *  NOKANJI           - Kanji support stuff.
     *  NOHELP            - Help engine interface.
     *  NOPROFILER        - Profiler interface.
     *  NODEFERWINDOWPOS  - DeferWindowPos routines
     *  NOMCX             - Modem Configuration Extensions
     */
     
    #if defined(RC_INVOKED) && !defined(NOWINRES)
     
    #include <winresrc.h>
     
    #else
     
    #if defined(RC_INVOKED)
    /* Turn off a bunch of stuff to ensure that RC files compile OK. */
    #define NOATOM
    #define NOGDI
    #define NOGDICAPMASKS
    #define NOMETAFILE
    #define NOMINMAX
    #define NOMSG
    #define NOOPENFILE
    #define NORASTEROPS
    #define NOSCROLL
    #define NOSOUND
    #define NOSYSMETRICS
    #define NOTEXTMETRIC
    #define NOWH
    #define NOCOMM
    #define NOKANJI
    #define NOCRYPT
    #define NOMCX
    #endif
     
    #if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && !defined(_ARM_) && defined(_M_IX86)
    #define _X86_
    #endif
     
    #if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && !defined(_ARM_) && defined(_M_AMD64)
    #define _AMD64_
    #endif
     
    #if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && !defined(_ARM_) && defined(_M_ARM)
    #define _ARM_
    #endif
     
    #if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && !defined(_ARM_) && defined(_M_M68K)
    #define _68K_
    #endif
     
    #if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && !defined(_ARM_) && defined(_M_MPPC)
    #define _MPPC_
    #endif
     
    #if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_M_IX86) && !defined(_AMD64_) && !defined(_ARM_) && defined(_M_IA64)
    #if !defined(_IA64_)
    #define _IA64_
    #endif /* !_IA64_ */
    #endif
     
    #ifndef _MAC
    #if defined(_68K_) || defined(_MPPC_)
    #define _MAC
    #endif
    #endif
     
    #if defined (_MSC_VER)
    #if ( _MSC_VER >= 800 )
    #ifndef __cplusplus
    #pragma warning(disable:4116)       /* TYPE_ALIGNMENT generates this - move it */
                                        /* outside the warning push/pop scope. */
    #endif
    #endif
    #endif
     
    #ifndef RC_INVOKED
    #if     ( _MSC_VER >= 800 )
    #pragma warning(disable:4514)
    #ifndef __WINDOWS_DONT_DISABLE_PRAGMA_PACK_WARNING__
    #pragma warning(disable:4103)
    #endif
    #if _MSC_VER >= 1200
    #pragma warning(push)
    #endif
    #pragma warning(disable:4001)
    #pragma warning(disable:4201)
    #pragma warning(disable:4214)
    #endif
    #include <excpt.h>
    #include <stdarg.h>
    #endif /* RC_INVOKED */
     
    #include <windef.h>
    #include <winbase.h>
    #include <wingdi.h>
    #include <winuser.h>
    #if !defined(_MAC) || defined(_WIN32NLS)
    #include <winnls.h>
    #endif
    #ifndef _MAC
    #include <wincon.h>
    #include <winver.h>
    #endif
    #if !defined(_MAC) || defined(_WIN32REG)
    #include <winreg.h>
    #endif
    #ifndef _MAC
    #include <winnetwk.h>
    #endif
     
    #ifndef WIN32_LEAN_AND_MEAN
    #include <cderr.h>
    #include <dde.h>
    #include <ddeml.h>
    #include <dlgs.h>
    #ifndef _MAC
    #include <lzexpand.h>
    #include <mmsystem.h>
    #include <nb30.h>
    #include <rpc.h>
    #endif
    #include <shellapi.h>
    #ifndef _MAC
    #include <winperf.h>
    #include <winsock.h>
    #endif
    #ifndef NOCRYPT
    #include <wincrypt.h>
    #include <winefs.h>
    #include <winscard.h>
    #endif
     
    #ifndef NOGDI
    #ifndef _MAC
    #include <winspool.h>
    #ifdef INC_OLE1
    #include <ole.h>
    #else
    #include <ole2.h>
    #endif /* !INC_OLE1 */
    #endif /* !MAC */
    #include <commdlg.h>
    #endif /* !NOGDI */
    #endif /* WIN32_LEAN_AND_MEAN */
     
    #include <stralign.h>
     
    #ifdef _MAC
    #include <winwlm.h>
    #endif
     
     
    #ifdef INC_OLE2
    #include <ole2.h>
    #endif /* INC_OLE2 */
     
    #ifndef _MAC
    #ifndef NOSERVICE
    #include <winsvc.h>
    #endif
     
    #if(WINVER >= 0x0400)
    #ifndef NOMCX
    #include <mcx.h>
    #endif /* NOMCX */
     
    #ifndef NOIME
    #include <imm.h>
    #endif
    #endif /* WINVER >= 0x0400 */
    #endif
     
    #ifndef RC_INVOKED
    #if     ( _MSC_VER >= 800 )
    #if _MSC_VER >= 1200
    #pragma warning(pop)
    #else
    #pragma warning(default:4001)
    #pragma warning(default:4201)
    #pragma warning(default:4214)
    /* Leave 4514 disabled.  It's an unneeded warning anyway. */
    #endif
    #endif
    #endif /* RC_INVOKED */
     
    #endif /* RC_INVOKED */
     
    #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
    #pragma endregion
     
    #endif /* _INC_WINDOWS */
     
    #endif /* _WINDOWS_ */
    windows.h文件
    // Win32Project1.cpp : 定义应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include "Win32Project1.h"
    
    #define MAX_LOADSTRING 100
    
    // 全局变量: 
    HINSTANCE hInst;                                // 当前实例
    WCHAR szTitle[MAX_LOADSTRING];                  // 标题栏文本
    WCHAR szWindowClass[MAX_LOADSTRING];            // 主窗口类名
    
    // 此代码模块中包含的函数的前向声明: 
    ATOM                MyRegisterClass(HINSTANCE hInstance);
    BOOL                InitInstance(HINSTANCE, int);
    LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
    INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);
    
    int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                         _In_opt_ HINSTANCE hPrevInstance,
                         _In_ LPWSTR    lpCmdLine,
                         _In_ int       nCmdShow)
    {
        UNREFERENCED_PARAMETER(hPrevInstance);
        UNREFERENCED_PARAMETER(lpCmdLine);
    
        // TODO: 在此放置代码。
    
        // 初始化全局字符串
        LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
        LoadStringW(hInstance, IDC_WIN32PROJECT1, szWindowClass, MAX_LOADSTRING);
        MyRegisterClass(hInstance);
    
        // 执行应用程序初始化: 
        if (!InitInstance (hInstance, nCmdShow))
        {
            return FALSE;
        }
    
        HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WIN32PROJECT1));
    
        MSG msg;
    
        // 主消息循环: 
        while (GetMessage(&msg, nullptr, 0, 0))
        {
            if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
            {
                TranslateMessage(&msg);
                DispatchMessage(&msg);
            }
        }
    
        return (int) msg.wParam;
    }
    
    
    
    //
    //  函数: MyRegisterClass()
    //
    //  目的: 注册窗口类。
    //
    ATOM MyRegisterClass(HINSTANCE hInstance)
    {
        WNDCLASSEXW wcex;
    
        wcex.cbSize = sizeof(WNDCLASSEX);
    
        wcex.style          = CS_HREDRAW | CS_VREDRAW;
        wcex.lpfnWndProc    = WndProc;
        wcex.cbClsExtra     = 0;
        wcex.cbWndExtra     = 0;
        wcex.hInstance      = hInstance;
        wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WIN32PROJECT1));
        wcex.hCursor        = LoadCursor(nullptr, IDC_ARROW);
        wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
        wcex.lpszMenuName   = MAKEINTRESOURCEW(IDC_WIN32PROJECT1);
        wcex.lpszClassName  = szWindowClass;
        wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
    
        return RegisterClassExW(&wcex);
    }
    
    //
    //   函数: InitInstance(HINSTANCE, int)
    //
    //   目的: 保存实例句柄并创建主窗口
    //
    //   注释: 
    //
    //        在此函数中,我们在全局变量中保存实例句柄并
    //        创建和显示主程序窗口。
    //
    BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
    {
       hInst = hInstance; // 将实例句柄存储在全局变量中
    
       HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
          CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);
    
       if (!hWnd)
       {
          return FALSE;
       }
    
       ShowWindow(hWnd, nCmdShow);
       UpdateWindow(hWnd);
    
       return TRUE;
    }
    
    //
    //  函数: WndProc(HWND, UINT, WPARAM, LPARAM)
    //
    //  目的:    处理主窗口的消息。
    //
    //  WM_COMMAND  - 处理应用程序菜单
    //  WM_PAINT    - 绘制主窗口
    //  WM_DESTROY  - 发送退出消息并返回
    //
    //
    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        switch (message)
        {
        case WM_COMMAND:
            {
                int wmId = LOWORD(wParam);
                // 分析菜单选择: 
                switch (wmId)
                {
                case IDM_ABOUT:
                    DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
                    break;
                case IDM_EXIT:
                    DestroyWindow(hWnd);
                    break;
                default:
                    return DefWindowProc(hWnd, message, wParam, lParam);
                }
            }
            break;
        case WM_PAINT:
            {
                PAINTSTRUCT ps;
                HDC hdc = BeginPaint(hWnd, &ps);
                // TODO: 在此处添加使用 hdc 的任何绘图代码...
                EndPaint(hWnd, &ps);
            }
            break;
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
        }
        return 0;
    }
    
    // “关于”框的消息处理程序。
    INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
    {
        UNREFERENCED_PARAMETER(lParam);
        switch (message)
        {
        case WM_INITDIALOG:
            return (INT_PTR)TRUE;
    
        case WM_COMMAND:
            if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
            {
                EndDialog(hDlg, LOWORD(wParam));
                return (INT_PTR)TRUE;
            }
            break;
        }
        return (INT_PTR)FALSE;
    }
  • 相关阅读:
    cocos2d-x lua 学习笔记(1) -- 环境搭建
    Cocos2d-x 3.x 如何编译成安卓程序
    Cocos2d-x 3.4 初体验——安装教程
    cocos2d-x 之 CCProgressTimer
    android sdk离线安装
    在cocos2d-x-3.0 android 平台编译时提示CocosGUI.h: No such file or directory
    cocos2d_x iconv转码
    cocos2d-x发生undefined reference to `XX'异常 一劳永逸解决办法
    libjpeg.a exists or that its path is correct
    UE4插件
  • 原文地址:https://www.cnblogs.com/hansichen/p/7281643.html
Copyright © 2011-2022 走看看