DRAGON POSTMESSAGE

来源:互联网 发布:autop 线切割编程系统 编辑:程序博客网 时间:2024/06/07 07:22

读到哪,有感就写到哪,大家别介意,另外,我错别字也比较多,能有帮助就看下,没有请飘过

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接着找,时间原因,先写到这里,后续更改



0 0