Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

41 lines
1.1 KiB
C++

#pragma once
class GlwSubclassWnd;
class GlwSubclassWndMap : private CMapPtrToPtr
{
public:
GlwSubclassWndMap(){}
~GlwSubclassWndMap(){}
static GlwSubclassWndMap& GetHookMap();
void Add(HWND hwnd, GlwSubclassWnd* pSubclassWnd);
void Remove(GlwSubclassWnd* pSubclassWnd);
void RemoveAll(HWND hwnd);
GlwSubclassWnd* Lookup(HWND hwnd);
};
class GlwSubclassWnd : public CObject
{
public:
DECLARE_DYNAMIC(GlwSubclassWnd);
GlwSubclassWnd();
~GlwSubclassWnd();
// widget a window. Hook(NULL) to unhook (automatic on WM_NCDESTROY)
virtual BOOL HookWindow(HWND hwnd);
virtual BOOL HookWindow(CWnd* pWnd) { return HookWindow(pWnd->GetSafeHwnd()); }
virtual BOOL IsHooked() { return m_hWnd!=NULL; }
friend LRESULT CALLBACK HookWndProc(HWND, UINT, WPARAM, LPARAM);
friend class GlwSubclassWndMap;
protected:
HWND m_hWnd; // the window hooked
WNDPROC m_pOldWndProc; // and original window proc
GlwSubclassWnd* m_pNext; // next in chain of hooks for this window
virtual LRESULT WindowProc(UINT msg, WPARAM wp, LPARAM lp);
virtual LRESULT Default(); // call this at the end of handler fns
};