什麼是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,它是乙個輕量級的日誌收集處理工...