读到哪,有感就写到哪,大家别介意,另外,我错别字也比较多,能有帮助就看下,没有请飘过
long UIPostMessage(HWND hForwardMsgWnd, UIMSG* pMsg, int nMsgMapID)
{
if (!pMsg->pMsgTo)
return 0;
UIMSG* pCloneMsg = new UIMSG;
memcpy(pCloneMsg, pMsg, sizeof(UIMSG));
pMsg->pMsgTo->AddDelayRef((void**)&pCloneMsg->pMsgTo);
::PostMessage(hForwardMsgWnd, UI_WM_POSTMESSAGE, (WPARAM)pCloneMsg, (LPARAM)nMsgMapID);
return 0;
}
看这里的处理方式,调用了系统的postmessage,这里有个注意的意方,就是传过去的参数如果是new的话,那么就需要有引用计数来确定什么时候删除,要不然出现霸气泄漏可不好玩。
delayref的实现
void IMessage::AddDelayRef(void** pp)
{
return m_pMessageImpl->AddDelayRef(pp);
}
m_pMessageImpl<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">定义如下</span>
protected:
Message* m_pMessageImpl;
实现如下
void Message::AddDelayRef(void** pp)
{
list<void**>::iterator iter = std::find(m_lDelayRefs.begin(), m_lDelayRefs.end(), pp);
if (iter == m_lDelayRefs.end())
{
m_lDelayRefs.push_back(pp);
}
}
这里添加到了数组,只是还没找出这个数组是如何处理的,那么,understand接着找,时间原因,先写到这里,后续更改