win32程式設計簡介

2022-03-20 20:36:07 字數 2280 閱讀 1647

複習win32整理下知識.

為什麼學習win32?

我們要編寫windos程式.都離不開api. 也就是我們所說的win32程式. 所以學好win32是你能不能再windows下編寫程式的基礎.

在win32下我們要學習的知識如下.

1.字元  字元的儲存.

2.多執行緒程式設計.

3.執行緒同步程式設計

4.視窗程式.城後本質.

5.訊息機制.

6.程序程式設計

7.記憶體 管理

8.檔案操作.

9.記憶體對映

10.dll以及靜態庫程式

11.dll注入技術.

12.模組隱藏.脫鏈

13.程序通訊程式設計.

14.hook技術.

我們發現學習win32要學習很多知識.不過總結一下也沒有那麼多.主要是多用多學多做.

首先說下字元.

字元有 ascii編碼格式.有 unicode格式. 也有utf - 8 格式. 那麼我們說下他們的儲存以及管理吧.

ascii編碼表. 因為計算機是老外發明的.所以編碼一開始只有127個.

而我們計算機儲存的編碼就是這種.

我們可以使用 十六進製制工具檢視一下. (winhex) 

1.新建文字文件.輸入字元a

2.winhex檢視字元儲存的本質是什麼.

關於第一步.省略.

可以看到儲存的是0x61 十進位制是97 也就是a所計算機儲存ascii編碼的時候.儲存的就是ascii編碼表中的格式.

上圖的編碼是ascii編碼. 但是只能儲存127個字元.但是怎麼顯示中文那? 所以出了乙個新的編碼表.也就是gb2312編碼表或者是gb2312

從127往上還有乙個編碼表.用於顯示特殊符號的. 而gb2312編碼表就是使用兩個這樣的編碼來顯示的.但是有乙個弊端.如果同樣乙個中文.你發給外國朋友.他開啟就會顯示亂碼了.

因為每個國家的編碼格式都不一樣.所以最後unicode格式出示.

unicode格式規定. 每乙個字元都會使用獨立的編碼來顯示.

比如 0x41 0x32 這兩個位元組來表示 中國的中字這樣你發到任何電腦上都可以看到.

注意. unicode只是解決了字元怎麼表示.並沒有規定怎麼儲存. 什麼意思?

意思就是 中字代表的是 0x41 0x32 那麼國字就可能代表 0x41 0x32 0x33 使用三個位元組來表示.

所以unicode - 16出世了 

unicode-16 沒兩個位元組來表示乙個字元,如果不夠兩個位元組或者超過兩個位元組.那麼在增加兩個位元組來表示.

所以我們常說的unicode 就是說的unicode-16

上面說了的unicode-16解決了儲存方式.但是也有弊端. 乙個位元組我按照兩個位元組來表示. 那麼不是浪費了乙個空間嗎.特別是用於網路傳輸的時候.

所以utf-8出來了. utf - 8 就是可變長的. 什麼意思.意思就是說.乙個位元組我就用乙個位元組表示.兩個位元組我就用兩個位元組表示. 只不過就是解析困難.

在**中我們的寬字元窄字元就可以互相使用了.

char str = "a"

asc版本編碼使用

wchar_t str = l"a"

unicode版本

tchar str = text("a"

) 相容性版本使用.

tchar 是windows中的乙個巨集.如果你的當前程式屬性設定的是asc編碼形式.

那麼tchar就是char.如果是unicode 那麼tchar就是 wchar_t型別.

text()是乙個巨集.是乙個連線符. 如果是char型別.那麼鏈結符號就是空巨集.

如果是wchar_t型別. 那麼連線符就是 l.

l表明是寬字元的意思.

他們在記憶體中的儲存方式也不同了.

1.a版本 長度為1. 結尾乙個0

2.u版本長度為2. 結尾兩個0結束.

如果使用了不同版本的字元.那麼就要使用對應的庫來操作這些字元.

a版本.

printf       strlen  strcat strcmp  strstr

u版本wprintf   wcslen  wcscat wcscmp wcsstrstr

關於字串操作函式具體查詢msdn. 或者google搜尋一下.

Win32程式設計

win32 malloc函式的底層實現是win32api utf 16編碼以16位無符號整數為單位,注意是16位為乙個單位,不是乙個字元就只有16位,這個要看字元的unicode編碼處於什麼範圍而定,有可能是2個位元組,也可能是4個位元組現在機器上的unicode編碼一般就是指utf 16 以兩個位...

WIN32程式設計模板

include lresult callback wndproc hwnd,uint,wparam,lparam int winapi winmain hinstance hinstance,hinstance hprevinstance,pstr szcmdline,int icmdshow te...

win32程式設計 1

1.winmain 1 myregisterclass hinstance 註冊視窗類 2 initinstance 初始化例項 3 while getmessage msg,null,0,0 getmessage從應用程式訊息佇列取乙個訊息,當取到wm quit時,返回假 作業系統向應用程式傳送一...