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

#pragma once

//消息类型定义
static const DWORD MESSAGE_TYPE_2PARAM = ; // 两个填充参数 static const DWORD SVCMSG_CONTENT_LEN = ; // 即时消息内容最大长度
static const DWORD SVCMSG_RESULT_LEN = ; // 即时消息结果最大长度 #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 -;
}
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);
}

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

回调函数的实现 & 结构体的继承的更多相关文章

  1. C语言中free()函数释放struct结构体中的规律

    并不是什么新鲜的事情,不过值得注意.首先我们知道,在使用struct来定义并声明一个变量时,将会自动划分出一个连续的储存空间(虽然根据某些对齐原则会出现内存间隙,但是大体上来说还是连续的)这一块连续空 ...

  2. Libev源码分析01:Libev中的监视器结构(C结构体实现继承)

    在Libev的源码中,用到了一种用C实现类似C++中继承的技巧,主要是用宏和结构体实现. 在Libev中,最关键的数据结构就是各种监视器,比如IO监视器,信号监视器等等.这些监视器的多数成员都是一样的 ...

  3. c# 函数练习;结构体、枚举类型

       * 结构体 1.就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 注意:枚举类型和结构体都属于值类型. 2.定义的方法: struct student { public in ...

  4. C++模板学习:函数模板、结构体模板、类模板

    C++模板:函数.结构体.类 模板实现 1.前言:(知道有模板这回事的童鞋请忽视) 普通函数.函数重载.模板函数 认识. //学过c的童鞋们一定都写过函数sum吧,当时是这样写的: int sum(i ...

  5. DLL 函数中使用结构体指针作函数参数(C# 调用 C++ 的 DLL)

    存在的问题: 问题1:C++ 与 C# 同样定义的结构体在内存布局上有时并不一致: 问题2:C# 中引入了垃圾自动回收机制,其垃圾回收器可能会重新定位指针所指向的结构体变量. 解决方案: 问题1方案: ...

  6. 使用标准模板find函数来对结构体容器进行查找

    最近在写一个项目,项目中需要获得类下面的所有对象,所以我采用了map容器,以string为关键字,list容器为内容来进行查找,而list中是一些struct结构体.由于在插入操作的时候需要判断该对象 ...

  7. (C/C++) 用函数返回一个结构体

    方法一: 参数里含有指向指针的指针. 注意:如果函数参数里只有一个指向结构体的指针,是无法正确地返回结构体的值的.原因在于在编译的时候,会对入参p产生一个备份_p. 参考此文:http://www.c ...

  8. _stat函数/struct stat 结构体使用笔记

    内容来自互联网,非原创,方便以后查看. 另,关于获取文件信息——_stat函数的使用详见 http://blog.csdn.net/frank_liuxing/article/details/1860 ...

  9. C语言结构体的“继承”

    这里说的继承有点像C++里的父类和子类,实际上是结构体类型的强制转换,最近看Linux内核源码时经常接触到这种方法,在这里就当作是一个简单的学习吧. 下面给出一个Demo,很简单,分别定义了一个fat ...

随机推荐

  1. ZooKeeper启动过程2:FastLeaderElection

    前一篇文章中说到,启动ZooKeeper集群时,需要分别启动集群中的各个节点,各节点以QuorumPeer的形式启动,最后到达startLeaderElection和lookForLeader. 先说 ...

  2. JS 验证一组input框是否为空的方法

    function checkInput() { var $tr = $("#tb_confirmed .scrollContent").find("tr"); ...

  3. 如何为Eclipse设置代理

    看图,不解释:

  4. (function($){...})(jQuery) 含义

    最近在项目js文件末端中发现这样的代码,对于前端技术比较薄弱的我,着实还是有点晕,好在查阅到了相关资料,现解释如下: (function($){  $.plugin = new org.plugin. ...

  5. Http Framework

    http request clientVolley https://android.googlesource.com/platform/frameworks/volley聚划算用的litehttp h ...

  6. 0911 Socket网络编程

    1.实现ftp上传.下载功能 1.1 循环接收数据直到接收完毕 server端接收client发送的命令(比如说ifconfig),然后server端将命令执行结果反馈给客户端,这时候有个问题,ser ...

  7. BZOJ 3687 简单题

    bitset维护某个和是否存在. bit<<x:所有子集的和+x. #include<iostream> #include<cstdio> #include< ...

  8. HDU 5405 (树链剖分+线段树)

    Problem Sometimes Naive 题目大意 给你一棵n个节点的树,有点权. 要求支持两种操作: 操作1:更改某个节点的权值. 操作2:给定u,v, 求 Σw[i][j]   i , j ...

  9. DirectX游戏编程入门

    刚开始学习D3D,安装完DirectX9后,在VS2008中新建Win32项目· ----------------------------------------------------------- ...

  10. Web 数据可视化

    /***************************************************************************************** * Web 数据可 ...