Hello Everybody This is beyondcode
大家好 再次自我介紹一下 我是beyondcode, 這次心 血來潮, 計划著做一系列關於Windows API 編程的教程,用於協助一些在Windows API編程上有疑惑的, 納悶的,迷惑的新手朋友們。
先解釋一些術語或名詞吧
SDK是Software Development Kit的簡寫,也就是軟體開發包的意思,其中就包含了我們寫程式要用 到的一些標頭檔,庫,工具,協助文檔之類的。
Windows API編程是指調用Windows的介面函數來進行程式的編寫,例如MessageBox就是一個API函數 或者說介面函數。怎麼說都可以,自己理解就行。如果你連這個都不太懂,我想也不會搜到這篇文章了 吧~·
為什麼做這個系列教程呢,請聽我一一道來先,最近遇到一些事一些人,讓我真的 感覺在這方面的引匯入門文章真的很是匱乏,加上Windows SDK標頭檔中那些複雜,龐大,'煩人 '的宏定義與資料類型定義,對於一個新手來說(我所說的新手不單只剛接觸編程的,還特指那些在 其他語言領域有比較高造詣的朋友) 一個純SDK寫的helloworld程式都算是一個有些困難和挑戰的任務了 吧。 本著協助別人,高興自己的原則,我有了這個打算,當然對自己以前所學,所經曆做一次回憶,也 是這次計劃的一部分。
聲明一下,本系列教程是面向廣大初次接觸WIN32 SDK程式編寫的新手朋 友們的,如果你是高手,一笑而過吧~當然,除了一笑而過,也多謝你們提出指本文章中的錯誤,以免我 誤人子弟啊~~謝謝
Ok 廢話不多說,進入正題,今天第一篇,講什麼? 對於一個新人來說, 第一次接觸SDK編程或者說API編程,什麼最迷惑你們的,我們講它,我覺得Windows SDK中那'煩人 '的資料類型定義和宏定義應該算這個很角色吧。。
其實微軟的本意也是善良的,為了減輕 程式員的負擔,和為了編程的方便,才花了那麼多心思與精力定義出了這麼一大套資料類型與宏定義, 這也是我為什麼在之前說它煩人都是加上引號的原因,因為他不是真的煩人,熟練了,你不但不覺得它 煩,反而離不開它了,呵呵,日久深情也就是這麼來的。
呵呵 先看幾個資料類型定義吧
typedef float FLOAT;
typedef long LONG;
typedef short SHORT
typedef int INT;
typedef char CHAR;
float, long, short, int, char 這幾個資料類型都是大家熟悉的C/C++的資料類型吧,微軟將他們重新定義了一下,很簡單,就是改變名 字為大寫了,這樣做的目的大概是微軟為了編碼的方便吧,IME大小寫都不用切換了,多人性化呀 呵 呵。。
再看幾個資料類型定義的例子
typedef unsigned int UINT;
typedef unsigned int UINT32;
typedef signed int INT32;
typedef unsigned long DWORD;
typedef unsigned short WORD;
這些資料類型的定義就稍微有實質性作用一些了 ,注意觀察,他們都比較短了,不用寫那麼長了,而且也還比較直觀,如果我要定義一個無符號整形, 我就不用寫 unsigned int a;
這麼長了,只需UINT a; 多簡單, 多明了,所以我說其實不煩人 吧。
其中DWORD 算是SDK程式中可以經常看見的一個資料類型了,經常被使用,很多新手也就不 明白,這是什麼資料類型啊,現在看到了吧,其實就是無符號長整形unsigned long,給他取了個外號而 已··沒什麼技術含量,所以不用怕,程式中究竟是寫unsigned long 還是DWORD都看你自 己心情,因為他們都代表同一種資料類型。