0

有没有办法CHAIN_MSG_MAP_MEMBER与调用DefWindowProc其处理函数之一的未启动窗口类一起使用?

问题是如果成员窗口类没有被创建或子类化,那么它就DefWindowProc不能工作。

但是,如果您仍想尝试将其程序链接为会员怎么办?有解决方法吗?感谢您的任何帮助。

这是我正在谈论的一个例子。 CChainedMember的调用DefWindowProc()将毫无用处,因为m_wndChainedMember它本身永远不会被创建或子类化。它仅用于链接目的。

class CChainedMember : public CWindowImpl<CChainedMember>
{
public:

BEGIN_MSG_MAP(CChainedMember)
    MESSAGE_HANDLER(WM_CREATE, OnCreate)
END_MSG_MAP()

    LRESULT OnCreate(UINT, WPARAM, LPARAM, BOOL)
    {
       ATLTRACE(L"doing something before");
       DefWindowProc();
       ATLTRACE(L"doing something after");
       return 0;
    }
}

class CMainWindow : public CWindowImpl<CMainWindow>
{
public:

BEGIN_MSG_MAP(CMainWindow)
    CHAIN_MSG_MAP_MEMBER(m_wndChainedMember)
END_MSG_MAP()

CChainedMember m_wndChainedMember;

}

编辑:请忽略。我误解了CHAIN_MSG_MAP_MEMBER.

4

1 回答 1

0

任何未初始化的成员变量都会导致这个问题。您应该构造稍后将在CMainWindow构造函数中使用的成员,或者您只需要一个static方法。

于 2021-05-18T05:29:31.913 回答