读书人

窗口历程函数可以是类的保护的、静态成

发布时间: 2013-07-08 14:13:00 作者: rapoo

窗口过程函数可以是类的保护的、静态成员函数吗?
class CWnd
{
protected:
static LRESULT CALLBACK CWnd::g_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
//……
};

LRESULT CALLBACK CWnd::g_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
//……
}

我前不久得到一份程序,能编译运行。我发现在注册窗口类的时候,窗口过程函数是CWnd的g_WndProc,这个成员函数是保护的,外界怎么调动它?
[解决办法]

引用:
Quote: 引用:

或者在类内部/子类内部让其余窗口关联.
我又仔细看了一下代码,他(作者)确实是这么干的,在成员函数中注册窗口类。
不过窗口过程函数应该是由windows来调用的吧?系统并不在类的内部,它怎么访问到这个函数?

windows的消息机制不认识认识类,只关系与之关联的消息处理过程(回调函数).
[解决办法]
这个是回调函数,只需要把函数指针传递过去就行了,函数指针,是不分public,protected,private 的。
实际上都是public的。

窗口过程回调函数,是线程处理消息循环时,被操作系统调用的。

读书人网 >C++

热点推荐