回调函数的实现 & 结构体的继承
------------------------------------------------------------------------------------
[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);
}
------------------------------------------------------------------------------------
回调函数的实现 & 结构体的继承的更多相关文章
- C语言中free()函数释放struct结构体中的规律
并不是什么新鲜的事情,不过值得注意.首先我们知道,在使用struct来定义并声明一个变量时,将会自动划分出一个连续的储存空间(虽然根据某些对齐原则会出现内存间隙,但是大体上来说还是连续的)这一块连续空 ...
- Libev源码分析01:Libev中的监视器结构(C结构体实现继承)
在Libev的源码中,用到了一种用C实现类似C++中继承的技巧,主要是用宏和结构体实现. 在Libev中,最关键的数据结构就是各种监视器,比如IO监视器,信号监视器等等.这些监视器的多数成员都是一样的 ...
- c# 函数练习;结构体、枚举类型
* 结构体 1.就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 注意:枚举类型和结构体都属于值类型. 2.定义的方法: struct student { public in ...
- C++模板学习:函数模板、结构体模板、类模板
C++模板:函数.结构体.类 模板实现 1.前言:(知道有模板这回事的童鞋请忽视) 普通函数.函数重载.模板函数 认识. //学过c的童鞋们一定都写过函数sum吧,当时是这样写的: int sum(i ...
- DLL 函数中使用结构体指针作函数参数(C# 调用 C++ 的 DLL)
存在的问题: 问题1:C++ 与 C# 同样定义的结构体在内存布局上有时并不一致: 问题2:C# 中引入了垃圾自动回收机制,其垃圾回收器可能会重新定位指针所指向的结构体变量. 解决方案: 问题1方案: ...
- 使用标准模板find函数来对结构体容器进行查找
最近在写一个项目,项目中需要获得类下面的所有对象,所以我采用了map容器,以string为关键字,list容器为内容来进行查找,而list中是一些struct结构体.由于在插入操作的时候需要判断该对象 ...
- (C/C++) 用函数返回一个结构体
方法一: 参数里含有指向指针的指针. 注意:如果函数参数里只有一个指向结构体的指针,是无法正确地返回结构体的值的.原因在于在编译的时候,会对入参p产生一个备份_p. 参考此文:http://www.c ...
- _stat函数/struct stat 结构体使用笔记
内容来自互联网,非原创,方便以后查看. 另,关于获取文件信息——_stat函数的使用详见 http://blog.csdn.net/frank_liuxing/article/details/1860 ...
- C语言结构体的“继承”
这里说的继承有点像C++里的父类和子类,实际上是结构体类型的强制转换,最近看Linux内核源码时经常接触到这种方法,在这里就当作是一个简单的学习吧. 下面给出一个Demo,很简单,分别定义了一个fat ...
随机推荐
- MapReduce数据流(二)
输入块(InputSplit):一个输入块描述了构成MapReduce程序中单个map任务的一个单元.把一个MapReduce程序应用到一个数据集上,即是指一个作业,会由几个(也可能几百个)任务组成. ...
- Java基础毕向东day05 对象与对象的区别,匿名内部类,函数的执行流程。
1.Car c = new Car(); Car c2 = new Car(); 1> c 和 c2之间的区别? public static void main(String[] args) { ...
- passivedns 安装指南
install passivedns on ubuntu Passive DNS对安全研究非常重要,因为它可以在前期帮助我们构建出目标的基础设施结构,并且可以得到以下三方面的答案:该域名曾经绑定过哪些 ...
- unity3d打包和包的使用
打包: ①Assets下新建文件夹Editor和steamingAssets ②对选定文件打包: using UnityEngine; using UnityEditor; using System. ...
- sql 字段重复值,in,like
- cookie 内容的获取
NSMutableArray *cookiesStoreAll = [[NSMutableArray alloc]init]; NSUInteger totalNumberOfCookies; ...
- php大力力 [022节]php编程要有一种态度:渴望遇见麻烦
2015-08-27 php大力力022.php编程要有一种态度:渴望遇见麻烦 不能一遇到问题和麻烦,就烦躁焦躁. 写程序,写代码,调试实验就是天天遇见不可预期的错误bug,这是常态.老生常谈,要适应 ...
- Android.mk 常用宏和变量
android ndk开发有一个重要的文件 Android.mk,他虽然重要,但是对它进行深入介绍的文档却比较的少,这里将对Android.mk中常用的宏和变量进行说明: 由于这一部分的内容多,资料零 ...
- Drools规则文件结构说明
一.规则文件构成 package(规则文件所在包) import(导入java包) global(规则文件中的"全局变量") function(函数) query(查找) rule ...
- 使用RBL拦截垃圾邮件
1. sbl-xbl.spamhaus.org 2 bl.spamcop.net 3 zen.spamhaus.org