首页 > 代码库 > MFC DAY02
MFC DAY02
一 窗口的创建(2)
1 加载菜单
2 调用CreateEx成员函数,注册窗口类/创建窗口
2.1 调用PreCreateWindow成员函数 设计并注册窗口类
1)调用AfxDeferRegisterClass全局函数设计窗口类
WNDCLASS wndcls;
wndcls.lpfnWndProc = DefWindowProc;
.....
并调用 AfxRegisterClass全局函数,在这个函数
中调用WIN32 API 函数::RegisterClass注册一个
局部窗口类 类名称为"AfxFrameOrView42sd"
2.2 调用AfxHookWindowCreate函数
1)利用::SetWindowsHookEx在程序中埋下一个类型
为WH_CBT的钩子。
2)将自己new的框架类对象地址(pFrame)保存到
当前程序线程信息中。
2.3 调用WIN32 API 函数 ::CreateWindowEx创建窗口
此函数一旦执行成功,马上执行钩子处理函数。
3 钩子处理函数
3.1 将 窗口句柄 和 框架类对象 建立一对一绑定关系
3.2 将 窗口处理函数 更改为
AfxWndProc(真正的窗口处理函数)
二 AfxWndProc(窗口处理函数)处理消息的执行过程
1 利用消息所属窗口句柄,找到和它绑定在一起框架类
对象地址(pFrame)。
2 利用框架类对象地址(pFrame)调用框架类的成员虚函
数(WindowProc),完成消息的处理。