自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

顺其自然~专栏

思路决定出路,科技创造奇迹。

  • 博客(646)
  • 收藏
  • 关注

原创 cef_browser.h

CefBrowser该类用于表示浏览器窗口。在浏览器进程中使用时,除非注释中另有说明,否则可以在任何线程上调用此类的方法。在呈现过程中使用时,只能在主线程上调用此类的方法。virtual CefRefPtr<CefBrowserHost> GetHost() = 0;返回浏览器宿主对象。此方法只能在浏览器进程中调用。virtual bool CanGoBack() = 0;如果浏览器可以向后导航,则返回true。virtual void GoBack() = 0;

2021-01-26 09:49:42 2

原创 cef_client.h

virtual CefRefPtr<CefAudioHandler> GetAudioHandler() { return nullptr; }返回音频呈现事件的处理程序.virtual CefRefPtr<CefContextMenuHandler> GetContextMenuHandler() { return nullptr;}返回上下文菜单的处理程序。如果没有提供处理程序,将使用默认实现。virtual CefRefPtr<CefDia.

2021-01-26 09:30:19 2

原创 CEF类笔记-cef_app

cef_app.hint CefExecuteProcess(const CefMainArgs& args, CefRefPtr<CefApp> application, void* windows_sandbox_info);应该从应用程序入口点函数调用此函数以执行辅助进程。它可用于从浏览器客户端可执行文件(默认行为)或由CefSettings.browser_subprocess_path的值指定的单独可执行文件运行辅助进程。如果为浏览器进程调用(在命令行中没有“type

2021-01-26 09:17:44 9

转载 CreateProcess函数详解

WIN32API函数CreateProcess用来创建一个新的进程和它的主线程,这个新进程运行指定的可执行文件。函数原型:BOOL CreateProcess(LPCTSTR lpApplicationName,LPTSTR lpCommandLine,LPSECURITY_ATTRIBUTES lpProcessAttributes,LPSECURITY_ATTRIBUTES lpThreadAttributes,BOOL bInheritHandles,DWORD dwCreat

2021-01-22 16:39:12 20

转载 WM_NCHITTEST

MSDN对它的解释是:TheWM_NCHITTESTmessageissenttoawindowwhenthecursormoves,orwhenamousebuttonispressedorreleased.Ifthemouseisnotcaptured,themessageissenttothewindowbeneaththecursor.Otherwise,themessageissenttothewindow...

2021-01-21 17:17:32 15

转载 C++ 虚函数表 vfptr

前言大家都应该知道C++的精髓是虚函数吧? 虚函数带来的好处就是:可以定义一个基类的指针,其指向一个继承类,当通过基类的指针去调用函数时,可以在运行时决定该调用基类的函数还是继承类的函数()。虚函数是实现多态(动态绑定)/接口函数的基础. 可以说: 没有虚函数, C++将变得一无是处!既然是C++的精髓, 那么我们有必要了解一下她的实现方式吗? 有必要! 既然C++是从C语言的基础上发展而来的, 那么我们可以尝试用C语言来模拟实现吗? 有可能! 接下来, 就是我一步一步地来解析C++的虚函数的实现方

2021-01-21 16:37:30 21

转载 C++强制类型转换运算符(static_cast、reinterpret_cast、const_cast和dynamic_cast)

将类型名作为强制类型转换运算符的做法是C语言的老式做法,C++为保持兼容而予以保留。C++ 引入了四种功能不同的强制类型转换运算符以进行强制类型转换:static_cast(静态转换)、reinterpret_cast(重新解释(类型的比特位))、const_cast(常量转换) 和 dynamic_cast(动态转换)。强制类型转换是有一定风险的,有的转换并不一定安全,如把整型数值转换成指针,把基类指针转换成派生类指针,把一种函数指针转换成另一种函数指针,把常量指针转换成非常量指针等。C++ 引入新.

2021-01-21 15:23:02 21

转载 WNDCLASSEX

WNDCLASSEX是一个窗口,最重要的成员是lpfnWndProc。前缀 lpfn 表示该成员是一个指向函数的长指针。在 Win32中由于内存模式是 FLAT 型,所以没有 near 或 far 的区别。描述每一个窗口类必须有一个窗口过程,当 Windows 把属于特定窗口的消息发送给该窗口时,该窗口的窗口类负责处理所有的消息,如键盘消息或鼠标消息。由于窗口过程差不多智能地处理了所有的窗口消息循环,所以您只要在其中加入消息处理过程即可。结构体原型:typedef struct W

2021-01-21 14:21:18 23

转载 GetWindowLongPtr

作用GetWindowLongPtr可以拿这个函数来代替GetWindowLong函数来获取一个指示器或者句柄(注:指示器和句柄是32位或64位微软windows所特有的概念)。要写一个兼容32位或64位windows版本的代码,就要使用这个函数。语法LONG_PTR GetWindowLongPtr(HWNDhWnd, intnIndex);参数hWnd欲获取信息的窗口(或属于窗口的类)的句柄。nIndex为欲获取的信息指定值。可以是以下其中之一。GWL_..

2021-01-21 14:10:15 19

原创 WM_NCCREATE与WM_CREATE的区别

WM_NCCREATE与WM_CREATE在字面上区别就是多了一个NC,那这个NC意思就是non-client 非客户区,而这个非客户区就包括标题栏、窗口边框、最大、最小按钮、滚动条等。在消息定义里面,有一些消息有两种,一种是加NC的,一种是不加NC的,而我们经常使用不加NC的。WM_NCCLIENT消息在WM_CREATE之前,WM_NCDESTROY在WM_DESTROY之后。先创建非客户区,再创建客户区;先销毁客户区,再销毁非客户区。参考https://bbs.csdn.net...

2021-01-21 13:43:10 16

转载 中断向量表

中断向量表(interrupt vector table,IVT)是中断源的识别标志,可用来形成相应的中断服务程序的入口地址或存放中断服务程序的首地址称为中断向量。在Pc/AT中由硬件产生的中断标识码被称为中断类型号(当然,中断类型号还有其他的产生方法,如指令中直接给出、CPU自动形成等),即在中断响应期间8259A产生的是当前请求中断的最高优先级的中断源的中断类型号。中断类型号和中断向量之间有下面的关系: 中断类型号×4=存放中断向量的首地址 有了存放中断向量的首地址,从该地址开始的4个存储单元中取出的就

2021-01-21 13:34:06 21

转载 c++中的 extern “C“

比如说你用C开发了一个DLL库,为了能够让C++语言也能够调用你的DLL输出(Export)的函数,你需要用extern "C"来强制编译器不要修改你的函数名。通常,在C语言的头文件中经常可以看到类似下面这种形式的代码:#ifdef__cplusplusextern"C"{#endif/****somedeclarationorso*****/#ifdef__cplusplus}#endif那么,这种写法什么用...

2021-01-21 11:48:32 14

转载 Chrome V8引擎介绍

随着Web相关技术的发展,JavaScript所要承担的工作也越来越多,早就超越了“表单验证”的范畴,这就更需要快速的解析和执行JavaScript脚本。V8引擎就是为解决这一问题而生,在node中也是采用该引擎来解析JavaScript。V8是如何使得JavaScript性能有大幅提升的呢?通过对一些书籍和文章的学习,梳理了V8的相关内容,本文将带你认识 V8。1.渲染引擎及网页渲染  浏览器自从上世纪80年代后期90年代初期诞生以来,已经得到了长足的发展,其功能也越来越丰富,包括...

2021-01-20 11:04:08 23

转载 CEF调试Render进程

首先我们按照CefSample的Demo去模仿自己的工程,然后在通过SimpleApp继承了CefRenderProcessHandler,并且重写了CefRenderProcessHandler的部分函数,结果发现CefSample关于Render进程的代码都没有调用。额。。。怎么回事呢?哦,对了Cef是多进程的,所以我们调试Cef Browser 进程的时候当然不会调用关于Render进程的代码(跨进程了)。所以我们需要把Render进程附加到VS调试器。此时理论上就可以调试Cef Rende.

2021-01-19 11:44:29 32

转载 URI和URL的区别比较与理解

一、URI<1>什么是URIURI,统一资源标志符(Uniform Resource Identifier, URI),表示的是web上每一种可用的资源,如 HTML文档、图像、视频片段、程序等都由一个URI进行标识的。<2>URI的结构组成URI通常由三部分组成:①资源的命名机制;②存放资源的主机名;③资源自身的名称。(注意:这只是一般URI资源的命名方式,只要是可以唯一标识资源的都被称为URI,上面三条合在一起是URI的充分不必要条件)&l

2021-01-19 10:59:29 25

转载 渲染

渲染(Render)在电脑绘图中是指用软件从模型生成图像的过程。模型是用严格定义的语言或者数据结构对于三维物体的描述,它包括几何、视点、纹理以及照明信息。将三维场景中的模型,按照设定好的环境、灯光、材质及渲染参数。二维投影成数字图像的过程。定义渲染这个术语被用作“艺术家或作家对于场景的渲染”。另外渲染也用于描述“计算视频编辑文件中的效果以生成最终视频输出的过程”。简介渲染是三维计算机图形学中的最重要的研究课题之一,并且在实践领域它与其它技术密切相关。在图形流水线中,渲染是最后一项

2021-01-19 10:45:17 15

转载 浏览器沙箱(sandBox)到底是什么?

什么是沙箱操作系统层面的沙盒的含义就是操作系统对进程的可访问的内存地址所做的限制,限制进程可访问的内存在其被分配的内存地址区间内,而不允许操作其他的内存地址,从而提供安全层面的防护。到浏览器层面,本质原理没多大变化,实践层面可能会根据浏览器环境有所变化,比如限制脚本操作本页面之外的其他页面的DOM,限制访问非同源文档,限制向非同源服务器发送ajax等等,目的依然是安全。以chromium为例。chromium是多进程架构,浏览器前端界面由browser进程管理,各个web page的tab属于r

2021-01-19 10:35:59 32

原创 符号文件

符号文件介绍链接应用程序、库、驱动程序或操作系统时,创建 .exe 和 .dll 文件的链接器还会创建多个称为符号文件的附加文件。符号文件保存多个数据,这些数据在运行二进制文件时实际上并不需要,但在调试过程中可能非常有用。通常,符号文件可能包含: 全局变量 局部变量 函数名称和其入口点的地址 帧指针省略 (FPO) 记录 源行号 其中每个项分别称为一个符号。例如,单个符号文件 Myprogram.exe 可能包含几百个符号,包括全局变量和...

2021-01-19 09:13:00 32 2

转载 Windows下调试工具Windbg入门

前言Windbg简单来说就是一个Windows下对用户态/内核态的程序进行调试,以及对Core Dump文件的分析。对于Crash,资源泄露,死锁等问题的分析,Windbg是一个强有力的利器。一、下载微软官网提供的Windbg为windows10版本,win7下不能使用。Win7下使用Windbg需要通过Windows SDK下载,下载链接为//www.microsoft.com/downloads/en/details.aspx?FamilyID=6b6c21d2-2006-4afa-9702

2021-01-19 08:47:31 29

转载 WMIC

什么是wmic (WMI Command)?WMIC是扩展WMI(Windows Management Instrumentation,Windows管理规范),提供了从命令行接口和批命令脚本执行系统管理的支持。在WMIC出现之前,如果要管理WMI系统,必须使用一些专门的WMI应用,比如SMS,或者使用WMI的脚本编程API,或者使用象CIM Studio之类的工具。如果不熟悉C++之类的编程语言或VBScript之类的脚本语言,或者不掌握WMI名称空间的基本知识,要使用WMI管理系统是很困难的。...

2021-01-18 15:33:09 33

转载 Chromium的启动流程

1、引言 你点击了桌面上的Chrome图标,一个浏览器窗口出现了,输入网址就可以在Internet世界愉快玩耍。这一切是怎么实现的呢?Chromium这个多进程的程序是如何启动各个进程的呢?浏览器主进程(界面进程)启动了哪些线程?如何启动的呢?这些问题一直萦绕在心头,一起来看看源代码吧。本文主要针对Chromium for Mac的源代码,其它操作系统大同小异。2、背景知识 浏览器作为一个应用程序,是以进程的形式运行在操作系统上的。首先,Chromium是一个多进程的应用程...

2021-01-18 10:56:47 27

转载 C++ explicit关键字详解

首先, C++中的explicit(直言的)关键字只能用于修饰只有一个参数的类构造函数,它的作用是表明该构造函数是显示的,而非隐式的,跟它相对应的另一个关键字是implicit,意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式)。那么显示声明的构造函数和隐式声明的有什么区别呢? 我们来看下面的例子:classCxString//没有使用explicit关键字的类声明,即默认为隐式声明{public:char*_pstr;int_...

2021-01-15 11:43:19 21

转载 理解WebKit和Chromium: Content API和CEF3

# Content API及CEF3## 概述相信你一定看过下面这张图(没看过的话去上官网阅读一下“how chromium displays web pages”)。这是一幅介绍页面如何被渲染和显示的概括性的层次结构图。Renderer进程和Browser进程通过IPC来交换信息,具体的设施就是RendererHost和Renderer等相关类,其作用是把网页的内容(content)渲染成Tab的显示内容。一个Tab可能会包含多个页面的内容,因而它会管理Tab中的多个页面内容。Tab co

2021-01-14 15:06:00 26

转载 CEF之多进程调试

CEF3 使用多进程。其中包括:一个浏览器进程、一个渲染进程和若干其他进程(处理插件的进程、处理GUP的进程等)。浏览器进程处理窗口的创建和绘制,以及网络访问等,浏览器进程包含了应用程序的主要逻辑。 渲染进程负责渲染 HTML 以及执行 JavaScript ,访问 DOM 等。 其他进程则进行插件处理,GPU 处理等(如果有的话)。 多个进程之间通过 IPC (Inter-Process Communication) 通信。首先启动浏览器进程(Browser),然后启动渲染进程(Render)

2021-01-14 14:03:48 55

转载 引用计数

引用计数是计算机编程语言中的一种内存管理技术,是指将资源(可以是对象、内存或磁盘空间等等)的被引用次数保存起来,当被引用次数变为零时就将其释放的过程。使用引用计数技术可以实现自动资源管理的目的。同时引用计数还可以指使用引用计数技术回收未使用资源的垃圾回收算法。简介最直观的垃圾收集策略是引用计数。引用计数很简单,但是需要编译器的重要配合,并且增加了赋值函数(mutator) 的开销(这个术语是针对用户程序的,是从垃圾收集器的角度来看的)。每一个对象都有一个关联的引用计数 —— 对该对象的活跃引用.

2021-01-14 08:40:48 32

转载 CEF-概述和常用功能介绍(GeneralUsage翻译)

1.介绍https://bitbucket.org/chromiumembedded/cef/wiki/GeneralUsage.md翻译来自:cefutilCEF全称Chromium Embedded Framework,是一个基于Google Chromium 的开源项目。Google Chromium项目主要是为Google Chrome应用开发的,而CEF的目标则是为第三方应用提供可嵌入浏览器支持。CEF隔离底层Chromium和Blink的复杂代码,并提供一套产品级稳定的API,发布跟

2021-01-13 17:21:35 99

转载 c++函数后加冒号

其实冒号后的内容是初始化成员列表,一般有三种情况:1、对含有对象成员的对象进行初始化,例如,类line有两个私有对象成员startpoint、endpoint,line的构造函数写成:line(int sx,int sy,int ex,int ey):startpoint(sx,sy),endpoint(ex,ey){……}初始化时按照类定义中对象成员的顺序分别调用各自对象的构造函数,再执行自己的构造函数2、对于不含对象成员的对象,初始化时也可以套用上面的格式,例如,类rectangle有两个数据成

2021-01-13 15:16:40 36

原创 C++中 模板Template的使用

1、在c++Template中非常多地方都用到了typename与class这两个关键字,并且好像能够替换,是不是这两个关键字全然一样呢?答:class用于定义类,在模板引入c++后,最初定义模板的方法为:template,这里class关键字表明T是一个类型。后来为了避免class在这两个地方的使用可能给人带来混淆,所以引入了typename这个关键字。它的作用同class一样表明后面的符号为一个类型。这样在定义模板的时候就能够使用以下的方式了: template.在模板定义语法中关键字class与ty

2021-01-13 15:14:09 31

原创 C++ 函数指针及delegate的几种方法

delegate类似于函数指针。函数指针是指向函数的指针变量。 因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。如前所述,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是大体一致的。函数指针有两个用途:调用函数和做函数的参数。方法函数指针的声明方法为:返回值类型 ( *指针.

2021-01-13 14:08:16 20

原创 chrome和Chromium有什么区别

区别1、Chromium是谷歌的开源项目,开发者们可以共同去改进它,然后谷歌会收集改进后的Chromium并发布改进后安装包。Chrome不是开源项目,谷歌会把Chromium的东西更新到Chrome中。你也可以这么理解Chromium是体验版,Chrome是正式版;2、Chromium不用安装,下载下来的是压缩包,解压后直接就可以使用。Chrome需要安装;3、Chromium功能比Chrome多,因为新功能都是先在Chromium中使用,等完善后才添加到Chrome中。相对的Chrome就要

2021-01-13 10:43:48 36

转载 C++调用构造函数的方式

class A{public:  A(int a)  {  }};class B : public A{};int main(){ B b();}编译器在自动合成构造函数的时候,会调用子类的默认构造函数。但是,我故意修改了子类A的构造函数,使编译器不会合成A的无参数的默认构造函数,导致B的默认构造函数无法合成。我本意是想测试这样的错误。发现上面的代码居然可以顺利编译通过。但是,我把第15行代码 B b(); 改成 B b; 发现,成功的触发了编译错误。为什么呢.

2021-01-13 10:01:36 25

转载 VS2019直接编译cmake项目

自VS2017起,VS正式支持CMAKE项目。github上的C++项目很多都是基于CMAKE的,比如著名的opencv,一般我们在windows系统下使用cmake-gui对Cmakelists.txt文件进行配置并生成对应的vs工程*.sln。VS支持cmake项目的直接编译后,对于小型项目,我们可以直接在vs中管理cmake工程,微软的跨平台之路是越走越宽了。本文简单介绍一下如何使用vs2019打开和编译cmake项目。打开cmake工程1.在vs界面选择继续但无需代码,打开空白界面。

2021-01-12 13:56:33 68

原创 cef3 Binary Distributions下载及示例编译

一.CEF简介Chromium Embedded Framework (CEF)是个基于Google Chromium项目的开源Web browser控件,支持Windows, Linux, Mac平台。简单说就是Chrome的开源版,目前很多所谓的双核浏览器,实质就是chrome+IE的双核。基于HTML5的支持,以及v8引擎的效率,在软件中嵌入chromium是个不错的选择,而且目前市面上应用及其广泛,如:tx系软件。spy++一抓就知道了,如下图cef主页:https://bitbucke

2021-01-12 08:56:19 71

转载 vs2019安装教程

一、官网下载1.下载网址:微软官网2.官网首页3.选择菜单栏最右边的更多,在“所有 Microsoft”下拉一栏选择“Visual Studio”进入4.进入之后是这个界面,选择社区版Community下载5.如果不想从官网进入也可以直接进入这个网址:VS下载,选择免费的社区版,会开始自动下载6.进入这个界面可以手动下载(如果不能自动下载的话)二、安装1.点击下载程序,会显示这个界面 ...

2021-01-11 17:04:34 49

转载 引入Irvine32库

1.下载http://asmirvine.com/或者https://github.com/Eazybright/Irvine32也有个库下载后解压到C:\irvine2.创建asm项目(1)创建一个空C++项目,再创建一个test.asm的文件(2)右键项目-生成依赖项-生成自定义...(3)如果没有属性里没有Microsoft Macro Assembly右击已经建好的项目,添加项 选择c++文件,并将文件名设置为.asm后缀。 右击...

2021-01-09 21:35:26 34

转载 VS项目属性的一些配置项的总结

首先,解决方案和项目文件夹包含关系(c++项目):VS解决方案和各个项目文件夹以及解决方案和各个项目对应的配置文件包含关系,假设新建一个项目ssyy,解决方案起名fangan,注意解决方案包括项目,此时生成的最外层目录为fangan代表整个解决方案的内容都在这个文件夹内。在这个fangan文件夹内包含有fangan.sln的解决方案配置文件和一个ssyy文件夹,ssyy文件夹代表整个ssyy项目的所有内容都在这个文件夹内,这个文件夹内含有ssyy.vcproj的项目配置文件和.h头文件以及.cpp源文件

2021-01-08 11:55:56 92

原创 vs项目配置

Visual Studio项目目录和文件说明Visual Studio项目属性配置VS6.0以及之前的版本是非常旧了,跟VS2002以及之后的版本有非常大的差别。VS2002之后,虽然每个版本都有变化。但是思想上已经非常成熟了。vc5、6的工程文件是.dspvc2002-2008工程文件是vcprojvc2010之后是vcxprojvcproj和vcxproj都是xml格式的。我这里是使用VS2013的,内容可能跟其他版本有细微差别,但是都非常有参考价值了。VS使用方案

2021-01-08 11:19:01 150

转载 vs2015使用教程

一、启动 visual studio 2015稍等片刻,你就会看到这个界面:点击菜单:”文件”-“新建”-“项目”,会出现这个窗口:选择左侧的”Visual C++”下面的“win32”之后,选择右侧的”win32控制台应用程序”,项目名称随意填写,点击”确定”。按照Win32应用向导完成设置,“下一步”即可选择应用类型为“控制台应用程序”,附加选项为“空项目”,然后“完成”即可此时在“解决方案资源管理器”中看到所创建的项目之后,在”解决方案资源管理器”中,右键”源文件”,”添加”,”新建

2021-01-08 08:21:27 28

转载 CMake脚本编写

注意:1、对于每一个项目必定有一个CMakeLists.txt,我们称为主CMakeLists.txt;2、每一个项目主CMakeLists.txt中必须指定版本信息和项目信息;3、cmake脚本中可以指定生成可执行文件、静态库、动态库;4、cmake脚本不区分大小写,cmake自定义变量与linux保持一致,默认大写;5、编写完成CMakeLists.txt后,使用cmake或ccmake(带自定义选项开关的编译)生成makefile,进一步make后才能生成目标文件。cmak

2021-01-07 17:11:36 45

原创 CMake详解

CMake(cross platform make)是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后

2021-01-07 11:03:21 39

空空如也

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除