1. 什麼是Windows API
Windows的API(Application Programming Interface,應用程序編程接口),是Windows操作系統提供
給應用程序的大量函數,開發者調用這些函數,猶如“積木塊”一樣,可以搭建出各種界面豐富,功能靈
活的應用程序。所以可以認爲API函數是構築整個Windows的基石,在它的下面是Windows的操作系統核心,
而它的上面則是所有華麗的Windows應用程序。
應用程序
Windows API 用戶模式
-------------------------
操作系統內核 內核模式
硬件
2. 如何學習Windows API?
Windows API = 學函數
3. Windows API在線文檔
MSDN這是微軟公司面向軟件開發者的一種信息服務。MSDN實際上是一個以Visual Studio和Windows
平臺爲核心整合的開發虛擬社區,包括技術文檔、在線電子教程、網絡虛擬實驗室、微軟產品下載等等一系列服務。
網址:https://msdn.microsoft.com/library
4. Windows API分類
Windows API就是Windows應用程序接口,是針對Microsoft Windows操作系統家族的系統編程接口,
這樣的系統包括Windows 8.1 Windows8 Windows7等幾乎所有版本。WIN32 API也是Microsoft Windows
32位平臺的應用程序編程接口。
Windows API包括幾千個可調用的函數,大致可以分爲幾類:
基礎服務
組件服務
用戶界面服務
圖形多媒體服務
消息和協作
網絡
Web服務
5. 第一個HellWorld應用程序
#include <windows.h>
int WINAPI WinMain(HINSTANCE hlnstance, HINSTANCE hPrevlnstance, LPSTR lpCmdLine, int nCmdShow)
{
MessageBox(NULL, L"第一個Win32程序", L"hello world", MB_OK);
return 0;
}
6. 入口函數WinMain詳解
(1)類似於C程序的main函數,Win32應用程序也有一個入口函數WinMain,改函數被系統自動調用,
函數原型如下:
int WINAPI WinMain(
HINSTANCE hlnstance, //應用程序當前實例的句柄
HINSTANCE hPrevlnstance, //應用程序先前實例的句柄。同一個程序打開兩次,出現兩個窗口
//第一次打開的窗口就是先前實例的窗口。對於一個32位程序,該參數
總爲NULL
LPSTR lpCmdLine, //命令行的字符串的指針,類似C語言中的argc argv,只不過這裏只用了一個參數
就可以獲得參數的個數和內容
int nShowCmd //窗口顯示方式、默認爲SW_SHOWDEFAULT
);
(2)奇怪的數據類型?
符號 原型 說明
WINAPI #define WINAPI __stdcall 標準調用約定、__stdcall是專門用來調用Win API的
HINSTANCE struct HINSTANCE__ {int unused;}
typedef HINSTANCE__ * HINSTANCE 就是一個結構體類型指針
LPSTR typedef CHAR *LPSTR; 就是char * 類型
HANDLE typedef void * HANDLE; 就是一個void類型指針
7. 應用程序實例句柄
WinMain函數的第一個參數hlnstance就是可執行文件的實例句柄,實際上是個內存地址,它指出系統在何處把
EXE文件裝載入進程的地址空間。
8.Windows窗口程序簡介
目前開發Windows窗口程序的主流技術有以下:
技術 簡介 語言
Win32 API Windows平臺底層API、效率高、難度較高 C++
MFC框架 微軟基礎類庫(Microsoft Fundation Class,MFC) C++
對Win32 API的面向對象封裝、難度較高
QT框架 跨平臺 UNIX LINUX WINDOWS C++
WPF框架 C#
Windows form C# VB