MFC框架中的有关问题
MFC框架中的问题
先看下面书上代码:
我不明白的是为什么要MSG oldState = pThreadState->m_lastSendMsg;
保存旧消息,书上的解释看不明白,想知道你们是怎样理解的?
(能说个例子吗)
------解决方案--------------------
改变状态后要还原,
在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说不定以后还要用到的~~~
------解决方案--------------------
你上面的注释不是说的很清楚了吗?
------解决方案--------------------
因为可能会发生嵌套调用,所以要首先保存旧的消息,在函数返回时恢复