zoukankan      html  css  js  c++  java
  • 回调函数的实现 & 结构体的继承

    ------------------------------------------------------------------------------------
    [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);
    }

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

  • 相关阅读:
    嵌入式为什么要用Linux操作系统
    SPI 协议的理解
    跳转某指定地址、给某绝对地址赋值
    define 宏定义
    笔试--编程题
    spring 技巧集锦
    spring data jpa auditing
    spring security
    Python基础笔记
    调试EF源代码环境配置
  • 原文地址:https://www.cnblogs.com/xuejianhui/p/3651392.html
Copyright © 2011-2022 走看看