Windows程式設計學習

2021-08-20 04:19:19 字數 3192 閱讀 5399

1、基礎

windows 運作機制的核心是動態鏈結的概念,

windows

提**用程式豐富的可呼叫函式,這些函式採用

dynamic linking library

(dll

)的方式撰寫,是具有

.dll

或.exe

為副檔名的檔案。

早期的windows主要部分僅通過三個動態鏈結庫實現,分別為

kernel

、user

和gdi

,大多數

windows

程式產生的函式呼叫仍可對應到這三個模組。

kernel

處理傳統上認為作業系統的核心任務,包括記憶體管理、檔案

i/o和多工管理;

user

指使用者介面,實現所有視窗的運作機制;

gdi(graphics device inte***ce)

指影象裝置介面,允許程式在螢幕和印表機上顯示文字和圖形。

api(

應用程式程式設計介面)是一些預先定義的函式,

api函式包含在位於系統目錄下的

dll檔案中。

2、表頭檔案

windows.h是主要的包含檔案,最基本的是:

windef.h 基本型態定義

winnt.h 支援

unicode

的型態定義

winbase.h kernel函式

winuser.h 使用者介面函式

wingdi.h 圖形裝置介面函式

3、程式進入點

windows 程式的進入點是

winmain

,定義為:

int winapi winmain(

hinstabce hinstance,hinstabce  hpreinstance, pstr szcmdline , int icmdshow

)其中,字首i 表示

int、

sz表示「以零結束的字串」,

winmain

返回乙個

int值,

winapi

識別符號在

windef.h

中定義,內容如下:

#define winapi _stdcall

該語句指定了乙個呼叫約定,包括如何生產機械碼以在堆疊中放置函式呼叫的引數。此外,cdecl呼叫約定的引數壓棧順序是和

stdcall

是一樣的,引數首先由有向左壓入堆疊。所不同的是,函式本身不清理堆疊,呼叫者負責清理堆疊。

hinstabce 表示應用程式的控制代碼,

hwnd

,是指視窗控制代碼,通過該控制代碼可以操作視窗資源。

4、unicode

字符集unicode是統一的

16位系統,可以表示

65,536

個字元,在

unicode

中,沒有單單使用

8位數值的意義存在。而在雙位元組字符集中可處理

8位數值,而某些位元組則需要和另乙個位元組共同定義乙個字元。

c中的寬字元基於

wchar_t

資料型態,在表頭檔案

wchar.h

中定義如下:

typedef unsigned short wchar_t;

1)定義指向寬字串的指標

: wchar_t *p=l」hello!」;

其中,第乙個引號前面的大寫字母l(代表「

long

」)。將告訴編譯器該字串按寬字元儲存-即每個字元占用

2個位元組。通常,指標變數

p要占用

4個位元組,而字串變數需要

14個位元組-每個字元需要

2個位元組,末尾的

0還需要

2個位元組。

2)也可以定義:

wchar_t c = l'a' ;

在此情況中,通常l是不必要的,

c編譯器會對該字元進行擴充,使它成為寬字元。

tchar.h定義了乙個新的資料型態

tchar

#ifdef  _unicode

typedef wchar_t tchar;  

#else  

typedef char  tchar;

#endif

_t()會根據編譯條件的設定,選擇不同的編碼格式。

_t("")是乙個巨集,定義於

tchar.h

下。#define _t(x) _ _t(x)

#ifdef  _unicode

#define _ _t(x) l ## x  (分析:

##把兩個符號連起來

,用來連線兩個前後兩個引數,把它們變成乙個字串 ,在

x前新增字元

l) #else  

#define _ _t(x)      x

#endif

lpstr 指向

char

型字串的指標

char* ansi

lpcstr 指向

char

型字串常量的指標

const char* ansi

lpwstr 指向

wchar

型字串的指標

wchar_t* unicode

lpcwstr  指向

wchar

型字串常量的指標

const wchat_t* unicode

lptstr unicode 環境下

==lpwstr,

非unicode

環境下==lpstr

lpctstr unicode 環境下

==lpcwstr,

非unicode

環境下==lpcstr

相關巨集定義

#ifdef unicode

typedef lpwstr lptstr ;

typedef lpcwstr lpctstr ;

#else

typedef lpstr lptstr ;

typedef lpcstr lpctstr ;

#endif

型別名稱定義說明

l: 即

long

為與之前

16 位系統相容,

32 位系統中無意義

p: 即指標

c: 即

const

str: 即字串

windows 程式設計 學習指導

這裡有乙份很好的資源,被製作成chm檔案的 windows 程式設計 包含了中文版和英文版,還有全書源 雖然不知道是誰出版的,但是感覺對windows程式設計新手來說還是很不錯的。關鍵還是 免費 內容 windows程式設計 中文版 英文版 全書源 截圖 另外,官網 msdn 的技術文件也是不錯的參...

windows 程式設計 學習筆記(一)

最近看這本書,順便寫下筆記,做了有兩年的windows 開發 一直自學 打算看下基本經典的書,查缺補漏,我這人有強迫症 必須得系統學,話說這中文版的翻譯也太爛了 將就著看吧,誰讓咱英語不好呢,錯了不要噴 純粹是筆記。include int winapi winmain hinstance hinst...

打算學習windows程式設計

正式混入it隊伍後,一直專注於web程式的開發。邊學習 邊實踐,經過了幾年的努力,終於成長為一名還算熟練的asp.net開發員,至少,應付手頭的工作是游刃有餘了。這段時間,沒啥多的工作,人一有閒就愛琢磨點事兒,這不,我就在想自己以後的發展方向。真是不想不知道,一想就迷茫。不知為什麼,以往很喜歡的程式...