qq_44361759 2019-09-20 05:04 采纳率: 0%
浏览 292

用vs2010mfc做arp报文发送,但是mfc好像出了问题

#include "stdafx.h"
#include "occimpl.h"

#define new DEBUG_NEW

/////////////////////////////////////////////////////////////////////////////
// CCmdTarget construction/destruction

CCmdTarget::CCmdTarget()
{
// capture module state where object was constructed
m_pModuleState = AfxGetModuleState();
ASSERT(m_pModuleState != NULL);

// initialize state

#ifndef _AFX_NO_OLE_SUPPORT
m_dwRef = 1;
m_pOuterUnknown = NULL;
m_xInnerUnknown = 0;
m_xDispatch.m_vtbl = 0;
m_bResultExpected = TRUE;
m_xConnPtContainer.m_vtbl = 0;
#endif
}

CCmdTarget::~CCmdTarget()
{
#ifndef _AFX_NO_OLE_SUPPORT
if (m_xDispatch.m_vtbl != 0)
((COleDispatchImpl*)&m_xDispatch)->Disconnect();
ASSERT(m_dwRef <= 1);
#endif
m_pModuleState = NULL;
}

/////////////////////////////////////////////////////////////////////////////
// CCmdTarget windows message dispatching

AFX_STATIC BOOL AFXAPI _AfxDispatchCmdMsg(CCmdTarget* pTarget, UINT nID, int nCode,
AFX_PMSG pfn, void* pExtra, UINT_PTR nSig, AFX_CMDHANDLERINFO* pHandlerInfo)
// return TRUE to stop routing
{
ENSURE_VALID(pTarget);
UNUSED(nCode); // unused in release builds

union MessageMapFunctions mmf;
mmf.pfn = pfn;
BOOL bResult = TRUE; // default is ok

if (pHandlerInfo != NULL)
{
    // just fill in the information, don't do it
    pHandlerInfo->pTarget = pTarget;
    pHandlerInfo->pmf = mmf.pfn;
    return TRUE;
}

switch (nSig)
{
default:    // illegal
    ASSERT(FALSE);
    return 0;
    break;

_**_case AfxSigCmd_v:
    // normal command or control notification
    ASSERT(CN_COMMAND == 0);        // CN_COMMAND same as BN_CLICKED
    ASSERT(pExtra == NULL);
    (pTarget->*mmf.pfnCmd_v_v)();
    break;_

_**(这一块运行时说是)
case AfxSigCmd_b:
// normal command or control notification
ASSERT(CN_COMMAND == 0); // CN_COMMAND same as BN_CLICKED
ASSERT(pExtra == NULL);
bResult = (pTarget->*mmf.pfnCmd_b_v)();
break;

case AfxSigCmd_RANGE:
    // normal command or control notification in a range
    ASSERT(CN_COMMAND == 0);        // CN_COMMAND same as BN_CLICKED
    ASSERT(pExtra == NULL);
    (pTarget->*mmf.pfnCmd_v_u)(nID);
    break;

case AfxSigCmd_EX:
    // extended command (passed ID, returns bContinue)
    ASSERT(pExtra == NULL);
    bResult = (pTarget->*mmf.pfnCmd_b_u)(nID);
    break;

case AfxSigNotify_v:
    {
        AFX_NOTIFY* pNotify = (AFX_NOTIFY*)pExtra;
        ENSURE(pNotify != NULL);
        ASSERT(pNotify->pResult != NULL);
        ASSERT(pNotify->pNMHDR != NULL);
        (pTarget->*mmf.pfnNotify_v_NMHDR_pl)(pNotify->pNMHDR, pNotify->pResult);
    }
    break;

  • 写回答

1条回答 默认 最新

  • 关注
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器