MFC窗口如何创建钩子
创建钩子
HHOOK SetWindowsHookEx(
int idHook, //钩子类型(WH_CBT)
HOOKPROC lpfn, //钩子处理函数
HINSTANCE hMod, //应用程序实例句柄
DWORD dwThreadId //线程ID
);
钩子处理函数
LRESULT CALLBACK CBTProc(
int nCode, //钩子码(HCBT_CREATEWND)
WPARAM wParam, //刚刚创建成功窗口句柄
LPARAM IParam //...
);
更改窗口处理函数
LONG_PTR SetWindowLongPtr(
HWND hWnd, //窗口句柄
int nIndex, //GWLP_WNDPROC
LONG_PTR dwNewLong //新的窗口处理函数名(函数地址)
);
加载菜单
调用CWnd::CreateEx函数创建窗口
调用PreCreateWindow函数设计和注册窗口类调用AfxDeferRegisterClass函数,在这个函数中设计窗口类:
WNDCLASS wndcls; //设计窗口类
...
//定义窗口的处理函数为DefWindowProc
wndcls.lpfnWndProc = DefWindowProc;
调用 ——AfxRegisterWithIcon 函数
在函数内部,加载图标,并调用AfxRegisterClass函数,在函数内部调用::RegisterClass Win32 API函数注册窗口类/