DRAGON POSTMESSAGE

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

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值