Re: [語法] win32 API

看板C_and_CPP (C/C++)作者時間16年前 (2009/02/06 01:12), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串4/5 (看更多)
※ 引述《yu00928 (難道我只是新八嗎)》之銘言: : 各位大大好 : 小弟正在學win32 API : 有一些地方實在搞不懂 : 到底wParam和lParam是什麼 : 他們有什麼差別 : 最重要的 : 什麼時候要用wParam : 什麼時候要用lParam : 請大大們指導一下小弟 : 謝謝 這是承襲Win16的舊包裹才寫成這樣... 在Win16 [Windows 3.1以前(包含3.1)], 基本預算單位是16 bits (int為16bits, 非32) w是指word --> 16bits l是指long --> 32bits 所以LPARAM的資料, 你可以使用HIWORD(x) / LOWORD(x)來抽取裡頭的低高位元組 而使用MAKELPARAM(a,b)來組成一個32bits的LPARAM資料 而不會看到WPARAM使用HIWORD和LOWORD來抽取兩個word... (如果該函數在win 16就存在) 但發展到這個年代後, 升級成win32, 整數基本單位自然也升級為32bits 所以wPARAM自然也變成32bits 而MAKEWPAPAM(a,b)的a/b自然也變成16bit 基本上舊有的API, 遇上LPARAM後, 是有可能塞進2個資料(例如說WM_MOUSEMOVE) 實際上, 當年WPARAM也是有可能塞兩筆8bits的資料的... 所以當初也是有HIBYTE和LOBYTE 但是windows的API不會這樣做(還好沒有, 不然持續發展到win32就容易出問題) 總而言之, 看到LPARAM, 就要知道他有可能塞兩筆資料, 利用LOWORD/HIWORD進行抽取吧 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.195.0.144

02/06 20:09, , 1F
原來還有可能塞2比資料 (筆記 筆記~) 謝謝指導
02/06 20:09, 1F
文章代碼(AID): #19YnuG9M (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 5 篇):
0
11
2
3
0
1
1
5
文章代碼(AID): #19YnuG9M (C_and_CPP)