Skip to content

Commit cda00ff

Browse files
committed
修复hotkey实现
1 parent 3eb835e commit cda00ff

File tree

5 files changed

+30
-23
lines changed

5 files changed

+30
-23
lines changed

src/Snap.Hutao.Remastered.Native.Packaging/Snap.Hutao.Remastered.Native.Packaging.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<NoPackageAnalysis>true</NoPackageAnalysis>
66

77
<PackageId>Snap.Hutao.Remastered.Native</PackageId>
8-
<Version>1.0.1</Version>
8+
<Version>1.0.2</Version>
99
<Authors>SnapHutaoRemasteringProject</Authors>
1010
<Description>Native x64 libraries for Snap.Hutao.Remastered</Description>
1111
<PackageTags>native;snap;hutao</PackageTags>

src/Snap.Hutao.Remastered.Native/HotKeyCallbackManager.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,4 @@ void HotKeyCallbackManager::ClearCallback()
3434
callback_ = {};
3535
}
3636

37-
HotKeyCallbackManager gotKeyCallbackManager = HotKeyCallbackManager();
37+
HotKeyCallbackManager hotKeyCallbackManager = HotKeyCallbackManager();

src/Snap.Hutao.Remastered.Native/HotKeyCallbackManager.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,4 @@ class HotKeyCallbackManager
1818
HutaoNativeHotKeyBeforeSwitchCallback callback_ = {};
1919
};
2020

21-
extern HotKeyCallbackManager gotKeyCallbackManager;
21+
extern HotKeyCallbackManager hotKeyCallbackManager;

src/Snap.Hutao.Remastered.Native/HutaoNativeExports.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,6 @@ DLL_EXPORT BOOL HutaoHResultIsWin32(HRESULT hr, WIN32_ERROR error)
5353

5454
DLL_EXPORT HRESULT HutaoNativeHotKeyInitializeBeforeSwitchCallback(HutaoNativeHotKeyBeforeSwitchCallback callback)
5555
{
56-
gotKeyCallbackManager.Initialize(callback);
56+
hotKeyCallbackManager.Initialize(callback);
5757
return S_OK;
5858
}

src/Snap.Hutao.Remastered.Native/HutaoNativeHotKeyAction.cpp

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
#include "pch.h"
22
#include "HutaoNativeHotKeyAction.h"
33
#include "HutaoNativeHotKeyActionCallback.h"
4+
#include "HotKeyCallbackManager.h"
45
#include <chrono>
56
#include <thread>
67

78
const wchar_t* WINDOW_CLASS_NAME = L"HutaoNativeHotKeyActionWindowClass";
8-
const UINT WMOTKEY_MESSAGE = WM_APP + 2;
99

1010
UINT HutaoNativeHotKeyAction::s_nextHotKeyId = 0x4000; // 从0x4000开始,避免与系统热键冲突
1111

@@ -83,27 +83,34 @@ LRESULT CALLBACK HutaoNativeHotKeyAction::WndProc(HWND hWnd, UINT message, WPARA
8383
HutaoNativeHotKeyAction* pThis = reinterpret_cast<HutaoNativeHotKeyAction*>(GetWindowLongPtrW(hWnd, GWLP_USERDATA));
8484
if (pThis != nullptr)
8585
{
86-
if (message == WMOTKEY_MESSAGE)
86+
if (message == WM_HOTKEY)
8787
{
88-
// 热键被触发,切换动作状态
89-
bool wasRunning = pThis->m_isRunning.load();
90-
91-
if (wasRunning)
92-
{
93-
pThis->StopAction();
94-
}
95-
else
88+
if (static_cast<int>(wParam) == pThis->motKeyId)
9689
{
97-
pThis->ExecuteAction();
90+
if (hotKeyCallbackManager.InvokeCallback())
91+
{
92+
return 0;
93+
}
94+
95+
bool wasRunning = pThis->m_isRunning.load();
96+
97+
if (wasRunning)
98+
{
99+
pThis->StopAction();
100+
}
101+
else
102+
{
103+
pThis->ExecuteAction();
104+
}
105+
106+
// 调用回调函数通知状态变化
107+
if (pThis->m_callback.has_value())
108+
{
109+
pThis->m_callback.value()(!wasRunning ? TRUE : FALSE, pThis->m_userData);
110+
}
111+
112+
return 0;
98113
}
99-
100-
// 调用回调函数通知状态变化
101-
if (pThis->m_callback.has_value())
102-
{
103-
pThis->m_callback.value()(!wasRunning ? TRUE : FALSE, pThis->m_userData);
104-
}
105-
106-
return 0;
107114
}
108115
}
109116

0 commit comments

Comments
 (0)