在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 是無符32位 , lparam 是長整型
當使用sendmessage 傳遞訊息時,wparam和lparam 都是可以傳遞指標的
假設要傳遞的是hdc hdc 控制代碼,到乙個對話方塊hwdialog
首先要把hdc 轉化為void* , 然後再轉化為wparam或lparam ,
在訊息處理函式中,對接收到的訊息wparam或lparam ,先轉化為void*,然後再轉化為hdc ,
// 傳送訊息
hdc hdc;
hwnd hw = createdialog(hinst , makeintresource(idd_show),hwnd,showpicture);
sendmessage(hw,wm_pr,11,(lparam)((void*)hdc)); // 使用lparam 或 wparam
// 在對話方塊處理函式中接受訊息
hdc hdm = (hdc)(void*)(lparam);
WPARAM和LPARAM的含義
具體的訊息表示 wm paint訊息,loword lparam 是客戶區的寬,hiword lparam 是客戶區的高 滾動條wm vscroll或wm hscroll訊息,loword wparam 指出了滑鼠對滾動條的操作。比如上 下 左 右 翻頁 移動等。擊鍵訊息,有wm syskeydow...
WPARAM與LPARAM的高位與低位問題
在寫訊息處理函式時,常會遇到wparam與lparam這兩個引數,這兩個引數都是dword型別的,也就是雙字或四位元組或32位長度的。有時想取這些引數裡的高位字或低位字,用什麼方法呢?查msdn說有兩個巨集函式可用 取高位字 word hiword dword dwvalue 取低位字 word l...
正確使用 (按位或)和 (邏輯或)
最近發現有些人寫source時,分不清 按位或 和 邏輯或 if requestcategorys in array itemcategory roleid requestcategorys else 這樣寫的結果是不管 requestcategorys是true或false,in array函式總...