在Windows的消息函數中,有兩個非常熟悉的參數:wParam,lParam。
這兩個參數的字面意義對於現在的程序來說已經不重要了,因為它是16位系統的產物,為了保持程序的可移植性,就將它保存了下來。
它的字面意義,w表示word,l表示long,對於32為系統來說,分別是無符號整數(unsigned int)和長整型(long),都是32位整數。所以,根據具體的消息解析參數即可,不用在乎其字面意義了。
下面是Windows的定義
/* Types use for passing & returning polymorphic values */ typedef UINT_PTR WPARAM; typedef LONG_PTR LPARAM;
//下面是32位程序的宏定義 typedef _W64 unsigned int UINT_PTR, *PUINT_PTR; typedef _W64 long LONG_PTR, *PLONG_PTR;
本文鏈接:http://www.cnblogs.com/vcpp123/p/5916064.html
下面是《Windows程序設計(第5版)》中第43頁的解釋,位於第3.1.3章節。
WndProc的第三個和第四個參數的類型分別為WPARAM和LPARAM。這些名稱的起源還有一段“典故”。當Windows還是16位系統時,WndProc的第三個參數類型被定義為WORD,表示一個16位的無符號短整型,而第四個參數被定義為LONG,表示一個32的位有符號長整型,“PARAM”前綴“W”和“L”正是由此而來。但在32位版本的Windows中,WPARAM被定義為UINT,而LPARAM被定義為LONG(仍然為C語言的long數據類型),因此窗口過程的這兩個參數都是32位的。這就有些令人疑惑,因為WORD類型中Windows98中仍然被定義為16位無符號短整型,因此“PARAM”的前綴“W”有些取名不當。