protected override void WndProc(ref Message m){Point vPoint = new Point((int)m.LParam & 0xFFFF,(int)m.LParam >> 16 & 0xFFFF);這句話為什么會得到鼠標位置,他和Cursor.Position直接獲得鼠標的位置有什么不同呢?
2 回答

鳳凰求蠱
TA貢獻1825條經(jīng)驗 獲得超4個贊
右移運算符 (>>) 將第一個操作數(shù)向右移動第二個操作數(shù)所指定的位數(shù)。
如果第一個操作數(shù)為 int 或 uint(32 位數(shù)),則移位數(shù)由第二個操作數(shù)的低五位給出(第二個操作數(shù) & 0x1f)。
如果第一個操作數(shù)為 long 或 ulong(64 位數(shù)),則移位數(shù)由第二個操作數(shù)的低六位給出(第二個操作數(shù) & 0x3f)。
如果第一個操作數(shù)為 int 或 long,則右移位是算術(shù)移位(高序空位設(shè)置為符號位)。如果第一個操作數(shù)為 uint 或 ulong 類型,則右移位是邏輯移位(高位填充 0)。
用戶定義的類型可重載 >> 運算符;第一個操作數(shù)的類型必須為用戶定義的類型,第二個操作數(shù)的類型必須為 int。有關(guān)更多信息,請參見 operator。重載二元運算符時,也會隱式重載相應(yīng)的賦值運算符(如果有)。
具體的使用方法的話:
int i = 8;
Console.WriteLine(i >> 3);
/*
Output:
1
向右移動3位,相當于除以8
*/
- 2 回答
- 0 關(guān)注
- 906 瀏覽
添加回答
舉報
0/150
提交
取消