在寫訊息處理函式時,常會遇到wparam與lparam這兩個引數,這兩個引數都是dword型別的,也就是雙字或四位元組或32位長度的。有時想取這些引數裡的高位字或低位字,用什麼方法呢?查msdn說有兩個巨集函式可用:
取高位字:
word hiword( dword dwvalue);
取低位字:
word loword( dword dwvalue);
那麼word型別的怎麼取高位和低位呢?同樣的也有兩個巨集函式可用:
取高位位元組:
byte hibyte( word wvalue );
取低位位元組:
byte lobyte( word wvalue);
知道怎麼取高位低位了,還要怎麼拼裝word和dword,也是用巨集函式:
拼word:
word makeword(
byte blow,
byte bhigh
);拼dword:
dword makelong(
word wlow,
word whigh
);拼wparam:
wparam makewparam(
word wlow,
word whigh
);拼lparam:
lparam makelparam(
word wlow,
word whigh
);不知道為什麼wparam也是dword,拼wparam和lparam就另外做了巨集函式,不直接用dword就算了。
看了看delphi裡的原始碼,makewparam和makelparam最終是呼叫了makelong,不知vc等其它開發工具是不是這樣呢?
WPARAM和LPARAM的含義
具體的訊息表示 wm paint訊息,loword lparam 是客戶區的寬,hiword lparam 是客戶區的高 滾動條wm vscroll或wm hscroll訊息,loword wparam 指出了滑鼠對滾動條的操作。比如上 下 左 右 翻頁 移動等。擊鍵訊息,有wm syskeydow...
使用WPARAM或LPARAM 傳遞指標
在vc 中的定義 typedef uint ptr wparam typedef long ptr lparam typedef w64 unsigned int uint ptr,puint ptr typedef w64 long long ptr,plong ptr 可見wparam 是無符3...
鍵盤訊息中的LParam引數定義
0 15位 指定當前訊息的重複次數。其值就是使用者按下該鍵後自動重複的次數,但是重複次數不累積 16 23位 指定其掃瞄碼,其值依賴於oem廠商 24位 指定該按鍵是否為擴充套件按鍵,所謂擴充套件按鍵就是ctrl,alt之類的,如果是擴充套件按鍵,其值為1,否則為0 25 28位 保留字段,暫時不可...