Commit 44715f35 authored by Clark Lin's avatar Clark Lin
Browse files

fix indent of Window.cpp

parent d14dac18
...@@ -166,129 +166,129 @@ LRESULT Window::HandleMsg( HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam ) noex ...@@ -166,129 +166,129 @@ LRESULT Window::HandleMsg( HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam ) noex
{ {
switch( msg ) switch( msg )
{ {
// we don't want the DefProc to handle this message because // we don't want the DefProc to handle this message because
// we want our destructor to destroy the window, so return 0 instead of break // we want our destructor to destroy the window, so return 0 instead of break
case WM_CLOSE: case WM_CLOSE:
PostQuitMessage( 0 ); PostQuitMessage( 0 );
return 0; return 0;
// 如果窗口失去焦点,立刻清空所有队列中的成员 // 如果窗口失去焦点,立刻清空所有队列中的成员
case WM_KILLFOCUS: case WM_KILLFOCUS:
kbd.ClearState(); kbd.ClearState();
break; break;
// 记录Key被按下 // 记录Key被按下
case WM_KEYDOWN: case WM_KEYDOWN:
// Bipset的第28,29,30位固定是0,30位代表前一次按键状态,1代表按下。 // Bipset的第28,29,30位固定是0,30位代表前一次按键状态,1代表按下。
// 因此28-31的16进制值如果是4的话,表示前一次是按下的状态,这次是持续按键 // 因此28-31的16进制值如果是4的话,表示前一次是按下的状态,这次是持续按键
// 如果Key被持续按下,第一个条件不成立,不执行操作 // 如果Key被持续按下,第一个条件不成立,不执行操作
// 在以上的基础上,提供Autorepeat的选项。如果启用Autorepeat,那么即使持续按键,也执行操作 // 在以上的基础上,提供Autorepeat的选项。如果启用Autorepeat,那么即使持续按键,也执行操作
if (!(lParam & 0x40000000) || kbd.AutorepeatIsEnabled()) // filter autorepeat if (!(lParam & 0x40000000) || kbd.AutorepeatIsEnabled()) // filter autorepeat
{ {
kbd.OnKeyPressed(static_cast<unsigned char>(wParam)); kbd.OnKeyPressed(static_cast<unsigned char>(wParam));
} }
break; break;
// 记录SysKey被按下
case WM_SYSKEYDOWN:
// 同上
if (!(lParam & 0x40000000) || kbd.AutorepeatIsEnabled()) // filter autorepeat
{
kbd.OnKeyPressed(static_cast<unsigned char>(wParam));
}
break;
// 记录SysKey被释放
case WM_SYSKEYUP:
// 记录Key释放
case WM_KEYUP:
kbd.OnKeyReleased(static_cast<unsigned char>(wParam));
break;
// 记录文字输入
case WM_CHAR:
kbd.OnChar(static_cast<unsigned char>(wParam));
break;
// 鼠标移动
case WM_MOUSEMOVE:
{
const POINTS pt = MAKEPOINTS(lParam);
mouse.OnMouseMove(pt.x, pt.y);
// in client region -> log move, and log enter + capture mouse (if not previously in window)
// 判断是否在窗口内
if (pt.x >= 0 && pt.x <= width && pt.y >= 0 and pt.y <= height) {
// 如果鼠标在窗口内,那么一定会记录鼠标的移动
mouse.OnMouseMove(pt.x, pt.y);
// 判断之前的鼠标状态。如果之前不在窗口内,那么说明现在是从外面移动进入窗口内 // 记录SysKey被按下
if (!mouse.IsInWindow()) case WM_SYSKEYDOWN:
// 同上
if (!(lParam & 0x40000000) || kbd.AutorepeatIsEnabled()) // filter autorepeat
{ {
SetCapture(hWnd); kbd.OnKeyPressed(static_cast<unsigned char>(wParam));
mouse.OnMouseEnter();
} }
} break;
else
// 记录SysKey被释放
case WM_SYSKEYUP:
// 记录Key释放
case WM_KEYUP:
kbd.OnKeyReleased(static_cast<unsigned char>(wParam));
break;
// 记录文字输入
case WM_CHAR:
kbd.OnChar(static_cast<unsigned char>(wParam));
break;
// 鼠标移动
case WM_MOUSEMOVE:
{ {
// 当鼠标移动到了窗口外,如果之前左键或者右键是按住的状态,那么被识别为拖拽 const POINTS pt = MAKEPOINTS(lParam);
if (mouse.LeftIsPressed() || mouse.RightIsPressed()) mouse.OnMouseMove(pt.x, pt.y);
{
// 拖拽过程中,依然会记录鼠标的移动 // in client region -> log move, and log enter + capture mouse (if not previously in window)
// 判断是否在窗口内
if (pt.x >= 0 && pt.x <= width && pt.y >= 0 and pt.y <= height) {
// 如果鼠标在窗口内,那么一定会记录鼠标的移动
mouse.OnMouseMove(pt.x, pt.y); mouse.OnMouseMove(pt.x, pt.y);
// 判断之前的鼠标状态。如果之前不在窗口内,那么说明现在是从外面移动进入窗口内
if (!mouse.IsInWindow())
{
SetCapture(hWnd);
mouse.OnMouseEnter();
}
} }
else else
{ {
// 否则的话,释放对鼠标的捕获 // 当鼠标移动到了窗口外,如果之前左键或者右键是按住的状态,那么被识别为拖拽
ReleaseCapture(); if (mouse.LeftIsPressed() || mouse.RightIsPressed())
mouse.OnMouseLeave(); {
// 拖拽过程中,依然会记录鼠标的移动
mouse.OnMouseMove(pt.x, pt.y);
}
else
{
// 否则的话,释放对鼠标的捕获
ReleaseCapture();
mouse.OnMouseLeave();
}
} }
break;
} }
break;
}
// 点击左键 // 点击左键
case WM_LBUTTONDOWN: case WM_LBUTTONDOWN:
{ {
const POINTS pt = MAKEPOINTS(lParam); const POINTS pt = MAKEPOINTS(lParam);
mouse.OnLeftPressed(pt.x, pt.y); mouse.OnLeftPressed(pt.x, pt.y);
break; break;
} }
// 点击右键 // 点击右键
case WM_RBUTTONDOWN: case WM_RBUTTONDOWN:
{ {
const POINTS pt = MAKEPOINTS(lParam); const POINTS pt = MAKEPOINTS(lParam);
mouse.OnRightPressed(pt.x, pt.y); mouse.OnRightPressed(pt.x, pt.y);
break; break;
} }
// 释放左键 // 释放左键
case WM_LBUTTONUP: case WM_LBUTTONUP:
{ {
const POINTS pt = MAKEPOINTS(lParam); const POINTS pt = MAKEPOINTS(lParam);
mouse.OnLeftReleased(pt.x, pt.y); mouse.OnLeftReleased(pt.x, pt.y);
break; break;
} }
// 释放右键 // 释放右键
{ {
case WM_RBUTTONUP: case WM_RBUTTONUP:
const POINTS pt = MAKEPOINTS(lParam); const POINTS pt = MAKEPOINTS(lParam);
mouse.OnRightReleased(pt.x, pt.y); mouse.OnRightReleased(pt.x, pt.y);
break; break;
} }
// 鼠标滚轮 // 鼠标滚轮
case WM_MOUSEWHEEL: case WM_MOUSEWHEEL:
{ {
const POINTS pt = MAKEPOINTS(lParam); const POINTS pt = MAKEPOINTS(lParam);
const int delta = GET_WHEEL_DELTA_WPARAM(wParam); const int delta = GET_WHEEL_DELTA_WPARAM(wParam);
mouse.OnWheelDelta(pt.x, pt.y, delta); mouse.OnWheelDelta(pt.x, pt.y, delta);
break; break;
} }
} }
return DefWindowProc( hWnd,msg,wParam,lParam ); return DefWindowProc( hWnd,msg,wParam,lParam );
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment