wParam和lParam兩個參數到底是什么意思?


  在Windows的消息函數中,有兩個非常熟悉的參數:wParamlParam

  這兩個參數的字面意義對於現在的程序來說已經不重要了,因為它是16位系統的產物,為了保持程序的可移植性,就將它保存了下來。

  它的字面意義,w表示wordl表示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”有些取名不當。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM