回调函数的实现 & 结构体的继承

本文详细介绍了消息回调机制及即时通讯服务框架的核心组件,包括消息类型定义、回调消息结构体、消息回调函数原型及服务框架打印消息回调设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

------------------------------------------------------------------------------------
[1]
------------------------------------------------------------------------------------

#pragma once

//消息类型定义
static const DWORD MESSAGE_TYPE_2PARAM     = 1;    // 两个填充参数

static const DWORD SVCMSG_CONTENT_LEN      = 1024; // 即时消息内容最大长度
static const DWORD SVCMSG_RESULT_LEN       = 16;   // 即时消息结果最大长度

#pragma pack(8)
//回调消息
typedef struct STRUC_BASIC_MESSAGE{
    DWORD    dwSvcType;
    DWORD    dwMsgType;
} BASIC_MESSAGE, *pBASIC_MESSAGE;

//回调消息
typedef struct STRUC_BASIC_MESSAGE_EX : public BASIC_MESSAGE{
    char   chContent[SVCMSG_CONTENT_LEN];
    char   chResult[SVCMSG_RESULT_LEN];
} BASIC_MESSAGE_EX, *pBASIC_MESSAGE_EX;

//消息回调函数原型
typedef DWORD (__stdcall *pMsgBack)(const BASIC_MESSAGE *struMessage);

#endif

------------------------------------------------------------------------------------
[2]
------------------------------------------------------------------------------------

pMsgBack            m_pMsgFunc; // 服务框架打印消息回调

CMSERVICE_API int WINAPI CMSvc_SetMsgCallback(const pMsgBack msgfunc)
{
    if (NULL == msgfunc)
    {
        return -1;
    }
    CGlobal::SnglPtr()->m_pMsgFunc = msgfunc;
    return CMSvc_NO_ERROR;
}

------------------------------------------------------------------------------------
[3]
------------------------------------------------------------------------------------

void CGlobal::PrintMsgUtf8(const std::string  & sMsg)
{
    if (NULL == m_pMsgFunc)
    {
        return;
    }

    BASIC_MESSAGE_EX msgEx;
    //需要根据具体的服务器类型修改下面的参数
    msgEx.dwSvcType = cms_8100::MT_SERVICE_CMS;//数据服务器
    msgEx.dwMsgType = MESSAGE_TYPE_2PARAM;
    wstring wsTime = GetCurTimeWStr();
    string sMsgWithTime = myutils::UTF8_W2A(wsTime) + sMsg;
    strcpy_s(msgEx.chContent, sMsgWithTime.c_str());
    strcpy_s(msgEx.chResult, "");
    m_pMsgFunc(&msgEx);
}

------------------------------------------------------------------------------------

转载于:https://www.cnblogs.com/xuejianhui/p/3651392.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值