+ -
当前位置:首页 → 问答吧 → MFC框架中的问题

MFC框架中的问题

时间:2011-12-15

来源:互联网

先看下面书上代码:

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;
保存旧消息,书上的解释看不明白,想知道你们是怎样理解的?
(能说个例子吗)

作者: hyz23je   发布时间: 2011-12-15

改变状态后要还原,
在MFC中画图也是这样的

作者: tauke_wang   发布时间: 2011-12-15

引用 1 楼 tauke_wang 的回复:
改变状态后要还原,
在MFC中画图也是这样的

不明白!能说具体点吗?

作者: hyz23je   发布时间: 2011-12-16

热门下载

更多