第二個成員變量lpfnWndProc指定了這一類型窗口的過程函數,也稱回調函數。函數
回調函數的原理:當應用程序收到給某一窗口的消息時(還記得前面講過的消息一般與窗口相關的嗎?),spa
就應該調用某一函數來處理這條消息。這一調用過程不用應用程序本身來實施,而由操做系統來完成,操作系統
可是回調函數自己的代碼必須由應用程序本身完成。3d
對於一條消息,操做系統到底調用應用程序中的哪一個函數(回調函數)來處理呢?指針
操做系統調用的就是接受消息的窗口所屬的類型中的lpfnWndProc成員指定的函數。blog
每一種不一樣類型的窗口都有本身專用的回調函數,該函數就是經過lpfnWndProc成員指定的。字符串
舉例:汽車廠家(應用程序)生產汽車(窗口)比如應用程序建立窗口,用戶(操做系統)使用汽車(窗口)比如操做系統管理窗口,回調函數
某種汽車(窗口)在銷售前就指定好了修理站(相似回調函數),當用戶(操做系統)的汽車(窗口)出現故障後(相似窗口收到消息),變量
汽車用戶(操做系統)本身直接找到修理站(回調函數)去修理,不用廠家(應用程序)親自原理
將車送到修理站去修理,但修理站還得由廠家(應用程序)事先建造好。
Windows中數據類型 對應的基本數據類型 說明
BOOL bool 布爾值
BSTR unsigned short * 32位字符指針
BYTE unsigned char 8位無符號整數
COLORREF unsigned long 用做顏色值的32位值
DWORD unsigned long 32位無符號整數,段地址和相關的偏移地址
LONG long 32位帶符號整數
LPARAM long 做爲參數傳遞給窗口過程或回調函數的32位值
LPCSTR const char * 指向字符串常量的32位指針
LPSTR char * 指向字符串的32位指針
LPVOID void * 指向未定義類型的32位指針
LRESULT long 來自窗口過程或回調函數的32位返回值
UINT unsigned int 32位無符號整數
WORD unsigned short 16位無符號整數
WPARAM unsigned int 看成參數傳遞給窗口過程或回調函數的32位值
數據類型的前綴是P或LP,表示是一個指針或長指針數據類型。前綴是U,表示無符號數據類型,等等。