现在位置: 首页 > 自动控制 > 工业·编程 > 文章
2020-04-26 15:28 工业·编程 ⁄ 共 9988字 评论 1 条
    evpp是奇虎360内部使用的开源多线程网络库,集tcp/udp/http多种协议的服务器和客户端支持。它可以不依赖boost库,使用现代c++14语言(evpp/invoke_timer.cc的lambda表达式使用到了c++14的特性)进行编码。本项目高度参考了muduo网络库,而底层使用现成的libevent库作为事件驱动库,典型的一个reactor网络编程模式的例子,本文就是通过分析evpp源码来达到学习c++网络编程的效果。     muduo代...
阅读全文
2020-04-25 15:16 工业·编程 ⁄ 共 650字 暂无评论
查阅了发现抓取usb包的工具,主要有以下三个:Bus Hound,USBlyzer 和-USBTrace,我使用的是Bus hound和USBlyzer。关于这两个工具的使用我就不在这班门弄斧了,我今天想说的是wireshark这个工具。 无意中发现wireshark也可以抓取usb数据包,而且列出来的信息也比较直观。 可能有些人的wireshark无法抓取usb包,那是因为你在安装的过程中都是一路默认下去的。所以如果想用wireshark抓取usb数据的话,可以考虑重新安装。 ...
阅读全文
2020-04-24 09:59 工业·编程 ⁄ 共 3342字 暂无评论
此处我们将通过实际的举例分析,duilib创建的工程,在整个资源解析、控件创建、控件加载与绘制,控件数据处理等管理的整个过程进行整合: 为了便于分析,我们仍然从项目中附带的工程“TestApp1”进行更深入的学习,以下执行流程为具体的大致步骤和操作内容; 从入口点WinMain: 1. CPaintManagerUI整个绘制UI的管理器,调用静态成员函数设置当前应用程序实例句柄以及资源路径(主要为各种xml和图片资源); 2. 初始化COM组件; ...
阅读全文
接下来,继续分析duilib之UI布局Layout,目前提供的布局有:VerticalLayout、HorizontalLayout、TileLayout、TabLayout、ChildLayout分别为垂直布局、水平布局、平铺布局、TAB布局、子窗体布局; 一般项目中用得比较多的是垂直布局、水平布局,我们将分别分析各布局; VerticalLayout:垂直布局,继承于CContainerUI容器UI类;而CContainerUI也继承于CControlUI,故VerticalLayout实际上也是一种UI控件; 成员函数: GetCl...
阅读全文
接下来,分析uilib.h中的UIManager.h,在正式分析CPaintManagerUI前先了解前面的一些宏、结构; 枚举类型EVENTTYPE_UI:定义了UIManager.h中事件通告类型TEventUI结构中的各Type值,从UIEVENT__FIRST至UIEVENT__LAST分别定义了  键盘按键事件 (UIEVENT__KEYBEGIN~UIEVENT__KEYEND)、鼠标事件(UIEVENT__MOUSEBEGIN~UIEVENT__MOUSEEND)、以及其他的几个事件;  UIFLAG__XXX:宏定义了UIFLAG_TABSTOP(TAB支持)、UIFL...
阅读全文
接下来,分析uilib.h中的WinImplBase.h和UIManager.h; WinImplBase.h:窗口实现基类,已实现大部分的工作,基本上窗口类均可直接继承该类,可发现该类继承于多个类,我们将对其父类逐一分析,然后整合分析该窗口实现基类,我们按照继承顺序开始 接下来的分析;    CWindowWnd:UIBase.h中的窗口类,已在前面章节作了分析,主要实现了基本的窗口注册、创建、显示、消息处理等基本的封装显示,这样WindowImplBase已具...
阅读全文
接下来,我们将继续分析UIlib.h文件中其他的文件, UIContainer.h, UIRender.h, WinImplBase.h, UIManager.h,以及其他布局、控件等; 1. UIRender.h:UI渲染器,其中cpp文件中,定义的ZIP压缩相关的数据结构,以及宏操作,与XUnzip.cpp中一样的(个人认为可以提取出来作为共用的一部分),此外还有stbi_load_from_memory、        stbi_image_free,涉及到图片加载操作,具体详细细节可参考st...
阅读全文
接下来,我们继续分析UIlib.h文件中余下的文件,当然部分文件可能顺序错开分析,这样便于从简单到复杂的整个过程的里面,而避免一开始就出现各种不理解的地方。 1. UIManager.h:UI管理器,暂时放在后面介绍; 2. UIBase.h:UI窗口相关,包括常用的窗口风格、窗口类风格的宏定义,调试相关,以及基本窗口类; 首先宏定义了几个常用的窗口风格、窗口扩展风格和窗口类风格,以UI_WNDSTYLE_XXX和UI_CLASSSTYLE__XXX开头的; A...
阅读全文
上节中提到在遍历创建控件树后,执行了以下操作:       1. CDialogBuilder构建各控件对象并形成控件树,并返回第一个控件对象pRoot;      2. m_pm.AttachDialog(pRoot);m_pm.AddNotifier(this);将控件attach到CPaintManagerUI  m_pm中管理,此外INotifyUI子类对象被加入到m_pm;         这样m_pm不仅管理控件对象也对消息监听接口N...
阅读全文
上一节介绍了控件构造器CDialogBuilder,接下来将分析其XML解析器CMarkup; CMarkup:xml解析器,目前内置支持三种编码格式:UTF8、UNICODE、ASNI,默认为UTF8;CMarkupNode:xml节点类 先介绍CMarkup: XMLELEMENT: xml节点元素类型定义,iStart,节点元素在xml文件中的起始位置;iChild,节点元素子节点;iNext,节点元素的下一个节点(兄弟节点);iParent,节点元素的父节点;iData, 节点元素的数据(事实上,这些值均为U...
阅读全文