WindowCreationHandler.h
1 #pragma once 2 3 class WindowCreationHandler 4 { 5 public: 6 WindowCreationHandler(std::function<void(HWND)> windowCreatedCallback); 7 ~WindowCreationHandler(); 8 9 private: 10 static inline WindowCreationHandler* s_instance = nullptr; 11 std::vector<HWINEVENTHOOK> m_staticWinEventHooks; 12 std::function<void(HWND)> m_windowCreatedCallback; 13 14 void InitHooks(); 15 void HandleWinHookEvent(DWORD event, HWND window) noexcept; 16 17 static void CALLBACK WinHookProc(HWINEVENTHOOK winEventHook, 18 DWORD event, 19 HWND window, 20 LONG object, 21 LONG child, 22 DWORD eventThread, 23 DWORD eventTime) 24 { 25 if (s_instance) 26 { 27 s_instance->HandleWinHookEvent(event, window); 28 } 29 } 30 };