忙起來的時候感覺什麼都不缺,空下來以後才發現什麼都沒有。。。
---- 網易雲熱評
一、基本滑鼠訊息
1、訊息引數:wm_lbuttondown - 滑鼠左鍵按下
wm_lbuttonup - 滑鼠左鍵抬起
wm_rbuttondown - 滑鼠右鍵按下
wm_rbuttonup - 滑鼠右鍵抬起
wm_mousemove - 滑鼠移動訊息
wparam,其他按鍵的狀態,例如ctrl/shift等
lparam, 滑鼠的位置,視窗客戶區座標系。
loword,x座標位置
hiword,y座標位置,
2、滑鼠訊息使用:
一般情況滑鼠按下/抬起成對出現。在滑鼠移動過程中,會根據移動速度產生一系列的wm_mousemove訊息。
4、執行結果:case wm_mousemove:
//滑鼠移動(hwnd,lparam);
break;
case wm_paint:
繪圖(hwnd);
break;
case wm_lbuttondown:
左鍵按下(hwnd,wparam,lparam);
break;
case wm_lbuttonup:
左鍵抬起(hwnd, wparam, lparam);
break;
void 左鍵按下(hwnd hwnd, wparam wparam, lparam lparam)
;
swprintf_s(str, l"左鍵按下:鍵盤狀態:%08x,滑鼠座標(x:%d,y:%d)\n",wparam,loword(lparam),hiword(lparam) );
writeconsole(g_dos視窗控制代碼, str, wcslen(str), null, null);//dos顯示
}
void 左鍵抬起(hwnd hwnd, wparam wparam, lparam lparam)
;
swprintf_s(str, l"左鍵抬起:鍵盤狀態:%08x,滑鼠座標(x:%d,y:%d)\n", wparam, loword(lparam), hiword(lparam));
writeconsole(g_dos視窗控制代碼, str, wcslen(str), null, null);//dos顯示
}
void 繪圖(hwnd hwnd)
;
hdc hdc = beginpaint(hwnd, &p);
textout(hdc, g_x, g_y, l"哎呦", 2);
endpaint(hwnd, &p);
}
void 滑鼠移動(hwnd hwnd, lparam lparam)
二、雙擊訊息
1、訊息引數:wm_lbuttondblclk - 滑鼠左鍵雙擊
wm_rbuttondblclk - 滑鼠右鍵雙擊
wparam,其他按鍵的狀態,例如ctrl/shift等
lparam ,滑鼠的位置,視窗客戶區座標系。
loword,x座標位置
hiword,y座標位置
使用時需要在註冊視窗類的時候新增cs_dblclks 風格,否則視窗接收不到雙擊訊息
wc.style = cs_hredraw | cs_vredraw|cs_dblclks; //視窗變化,會重繪,視窗類的一般風格
2、訊息產生順序:
以wm_lbuttondblclk為例:wm_lbuttondown,wm_lbuttonup, wm_lbuttondblclk,wm_lbuttonup
3、相關**
4、執行結果case wm_lbuttondblclk:
左鍵雙擊(hwnd,wparam,lparam);
break;
void 左鍵雙擊(hwnd hwnd, wparam wparam, lparam lparam)
;
swprintf_s(str, l"左鍵雙擊:鍵盤狀態:%08x,滑鼠座標(x:%d,y:%d)\n", wparam, loword(lparam), hiword(lparam));
writeconsole(g_dos視窗控制代碼, str, wcslen(str), null, null);//dos顯示
}
三、滾輪訊息
wm_mousewheel - 滑鼠滾輪訊息
1、訊息引數:wparam
loword,其他按鍵的狀態
hiword,滾輪的偏移量,是120的倍數,通過正負值表示表示滾動方向。
正:向前滾動
負:向後滾動
lparam:滑鼠當前的位置,螢幕座標系
loword:x座標
hiword:y座標
2、使用:通過偏移量,獲取滾動的方向和倍數。
3、相關**
4、執行結果case wm_mousewheel:
滾輪滑動(hwnd,wparam,lparam);
break;
void 滾輪滑動(hwnd hwnd,wparam wparam,lparam lparam)
;
swprintf_s(str, l"滾輪滑動 -- 按鍵狀態:%08x,偏移量:%d,滑鼠座標(%d,%d)\n",
loword(wparam),偏移量,loword(lparam),hiword(lparam));
writeconsole(g_dos視窗控制代碼, str, wcslen(str), null, null);
}
win32 訊息機制
2 windows訊息系統組成 訊息佇列 作業系統負責為程序維護乙個訊息佇列,程式執行時不斷地從訊息佇列進行訊息的獲取,處理訊息 訊息迴圈 應用程式不斷地獲取訊息,處理訊息構成訊息迴圈。3 win32訊息路由 1.訊息產生 2.系統將訊息排列到其應該排放的執行緒的訊息佇列中。3.執行緒中的訊息迴圈呼...
win32 訊息機制
本次使用的開發環境是vs2013,使用的開發語言是c c 建立的專案是win32專案 當 windows 應用程式開始執行時,系統會為該程式建立乙個訊息 佇列用於存放訊息,然後用 getmessage 等進行訊息獲取處理。程式從佇列中獲取訊息後處理 分為系統訊息佇列 有系統維護,存放系統產生的訊息如...
win32訊息機制
windows作業系統最大的特殊是良好的使用者互動性 訊息機制 產生訊息,傳遞訊息並處理訊息的過程 1.產生訊息 不可控 1 typedef struct tagmsg 2 msg 2.傳遞訊息 分成兩個部分,1 系統傳遞訊息給應用程式 不可控 2.應用程式傳遞訊息給應用程式 可控 windows作...