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

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

  • 相关阅读:
    [C语言嵌入式系统编程修炼] 软件架构与内存操作篇
    [C陷阱和缺陷] 第2章 语法“陷阱”
    DAO是什么技术
    Java泛型:类型擦除
    Java泛型:泛型类、泛型接口和泛型方法
    定义泛型接口
    java,<E>什么意思?
    java List 去重(两种方式)
    java中List集合及其遍历详解
    java 遍历arrayList的四种方法
  • 原文地址:https://www.cnblogs.com/xuejianhui/p/3651392.html
Copyright © 2011-2022 走看看