Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Clark Lin
StudyDx
Commits
44715f35
Commit
44715f35
authored
Dec 17, 2022
by
Clark Lin
Browse files
fix indent of Window.cpp
parent
d14dac18
Changes
1
Hide whitespace changes
Inline
Side-by-side
StudyDx/Window.cpp
View file @
44715f35
...
@@ -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
);
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment