Welcome

首页 / 软件开发 / C++ / 使非MFC窗口程序的窗口回调过程成为C++类的成员函数

使非MFC窗口程序的窗口回调过程成为C++类的成员函数2010-01-23luzhl一直以来,编写非MFC下的窗口程序,都习惯把窗口过程及消息处理函数编写成全局函数。为了把窗口回调过程及窗口消息处理函数封装成C++窗口类的成员函数,于是我编写了抽象类CWndProc:

一、头文件

//wndpro.h
#ifndef __WNDPROC_H__
#define __WNDPROC_H__
class CWndProc
{
protected:
//保护的构造函数,必须由派生类来构造。
CWndProc();
virtual ~CWndProc();
protected:
//窗口回调过程,基类作为纯虚函数没有实现代码。
virtual LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) = 0;
private:
//Hook代码块。
char m_hook[40];
protected:
//m_pfnWndProc指针指向Hook代码块的始地址。
//注册窗口类(WNDCLASSEX),或者子类化控件窗口,或者DialogBox显示对话框
//等需要窗口回调过程参数时,使用m_pfnWndProc作为参数。
WNDPROC m_pfnWndProc;
};
#endif //__WNDPROC_H__
//end of file