MFC框架中的有关问题

MFC框架中的问题
先看下面书上代码:

C/C++ code
LRESULT AfxCallWndProc(CWnd* pWnd, HWND hWnd, UINT nMsg, 
                WPARAM wParam = 0, LPARAM lParam = 0)
{
    _AFX_THREAD_STATE* pThreadState = AfxGetThreadState();
    
    // 因为可能会发生嵌套调用,所以要首先保存旧的消息,在函数返回时恢复
    MSG oldState = pThreadState->m_lastSendMsg;

    // 更新本线程中变量m_lastSendMsg的值
    pThreadState->m_lastSendMsg.hwnd = hWnd;
    pThreadState->m_lastSendMsg.message = nMsg;
    pThreadState->m_lastSendMsg.wParam = wParam;
    pThreadState->m_lastSendMsg.lParam = lParam;

    // 处理接受到的消息

    // 将消息交给CWnd对象
    LRESULT lResult;
    lResult = pWnd->WindowProc(nMsg, wParam, lParam);

    // 消息处理完毕,在返回处理结果以前恢复m_lastSendMsg的值
    pThreadState->m_lastSendMsg = oldState;
    return lResult;
}


我不明白的是为什么要MSG oldState = pThreadState->m_lastSendMsg;
保存旧消息,书上的解释看不明白,想知道你们是怎样理解的?
(能说个例子吗)

------解决方案--------------------
改变状态后要还原,
在MFC中画图也是这样的
------解决方案--------------------
C/C++ code
pThreadState->m_lastSendMsg.hwnd = hWnd;
    pThreadState->m_lastSendMsg.message = nMsg;
    pThreadState->m_lastSendMsg.wParam = wParam;
    pThreadState->m_lastSendMsg.lParam = lParam;

------解决方案--------------------
旧的MSG说不定以后还要用到的~~~
------解决方案--------------------
你上面的注释不是说的很清楚了吗?
------解决方案--------------------
因为可能会发生嵌套调用,所以要首先保存旧的消息,在函数返回时恢复