Windows SDK學習 基礎概念介紹

2022-09-15 06:51:13 字數 3179 閱讀 4111

什麼是windows sdk?

sdk即software develope kit(軟體開發工具包),它包含了進行windows軟體開發的文件和api函式的輸入庫、標頭檔案(因為api在動態鏈結庫中,這些動態鏈結庫是系統的組成部分,因此不用再提供,而輸入庫和標頭檔案則必須,這樣才能在你的程式中使用api函式)。

早期sdk是乙個單獨發放的包,現在在visual c++和其他一些開發環境中已經包含了它,如果你已經安裝了vc++,那麼就可以開始編寫windows程式了。

sdk入門(基礎概念)

sdk—software development kit 軟體開發包

應用程式=>作業系統=>輸入輸出裝置

作業系統提供api使應用程式操作輸入輸出裝置

api

核心物件

控制代碼

訊息機制

console程式與windows程式區別

01_2

入口函式不同

windows程式

int apientry wwinmain(_in_ hinstance hinstance,

_in_opt_ hinstance hprevinstance,

_in_ lpwstr    lpcmdline,

_in_ int       ncmdshow)

控制台程式和windows程式的編譯鏈結選項也是有所不同的。

main函式引數

關閉隨機基址:屬性頁->聯結器->高階->隨機基址

在console程式中,關閉掉隨機基址後,hinstance指向0x00400000。

在windows程式中,關閉掉隨機基址後,hinstance也是指向0x00400000。

程序訪問到的記憶體位址是虛擬的,是相互隔離的。

虛擬記憶體

每個32位的程式都有自己獨立的4gb虛擬空間,其中低2g為使用者可以操作的空間。

0~64k為保留區,高2g為作業系統操作的空間。

程序間的記憶體隔離

會將低2g的使用者空間對映到物理記憶體條不同的位置,來實現記憶體中的每個程式的位址空間是互相隔離的。

當物理記憶體不夠用時,會將一部分記憶體放到磁碟空間中。

hinstance是exe程式在程序中的首位址,即其從磁碟拷貝向虛擬記憶體實從0x400000開始拷貝的。

messagebox

查詢msdn時,選擇platform sdk版本。

hwnd hwnd,          //視窗控制代碼

lpctstr lptext,     //彈窗內容

lpctstr lpcaption,  //彈窗標題

uint utype          //彈窗型別

);messagebox是巨集定義,採用條件編譯,在unicode和非unicode之間,切換。

#ifdef unicode

#define messagebox  messageboxw

#else

#define messagebox  messageboxa

#endif // !unicode

當用ascii時會呼叫meaageboxa,使用unicode的會呼叫messageboxw。

當windows中涉及字串的都會有兩個版本。

在編譯選項中,字符集位置來定義是否是unicode字符集。

多位元組字符集是ascii碼(gbk編碼,中文佔兩個位元組,英文佔乙個位元組)。

中的_t( )依附於條件編譯巨集_unicode。

windows提供了乙個類似於_t( )的巨集,text( )。

messagebox(null, text("hello world!"), text("標題"), mb_okcancel);

text( )和_t( )的區別:text( )屬於windowssdk,只能在windows上執行不支援其他系統,_t屬於c標準庫可以支援跨平台。

unicode巨集開關的三個定義位置:

1、標頭檔案之前定義 #define unicode;

2、可以用屬性->高階->字符集 來定義;

3、可以用 屬性->c/c++ -> 預處理器 -> 預處理器定義 來定義。

windows.h標頭檔案中,將基礎型別進行了重新定義,為了提高可讀性和方便公升級。

hinstance --> hinstance --> handle instance

hwnd --> hwnd --> handle window

lpwstr --> lpwstr --> long pointer wide str

以上是今天要分享的內容,大家看懂了嗎?

windows SDK學習資料推薦

進來學習sdk程式設計,感覺好多東西不夠系統。網上找到的很好的資料。首推 入門系列總結的相當不錯。排名第二的是勸學網小雅整理的sdk程式設計 排名第三的是 windows程式設計 charles petzold寫的,堪稱是地球上最有名的windows程式設計書 排名第四的是超詳細的乙份學習教程 排名...

WindowsSDK程式設計學習日記 2

2009年2月26日 gdi相關學習 gdi 圖形裝置介面 windows下不允許直接訪問輸入輸出硬體,而是提供了裝置環境和圖形裝置介面進行操作,以不比關心具體硬體區別。待解決 目前對視口 視窗的區別理解不深,對對映模式理解不深 windows下繪圖的基本步驟就是 獲取裝置環境控制代碼 dc 構建繪...

ELK(一) Elasticsearch基礎概念

elk提供了一整套解決方案,並且都是開源軟體,之間互相配合使用,完美銜接,高效的滿足了很多場合的應用。目前主流的一種日誌系統。elk是三個開源軟體的縮寫,分別表示 elasticsearch logstash,kibana 它們都是開源軟體。新增了乙個filebeat,它是乙個輕量級的日誌收集處理工...