複習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時,返回假 作業系統向應用程式傳送一...