C++接口工程实践:有哪些实现方法?
简介: 程序开发的时候经常会使用到接口。众所周知,C++语言层面并没有接口的概念,但并不意味着C++不能实现接口的功能。相反,正是由于C++语言没有提供标准的接口,导致实际实现接口的方法多种多样。那么C++有哪些实现接口的方法呢,不同的方法又适用于哪些场景呢?本文分享在C++接口工程实践上的一些探索心得。
一 接口的分类
接口按照功能划分可以分为调用接口与回调接口:
调用接口
一段代码、一个模块、一个程序库、一个服务等(后面都称为系统),对外提供什么功能,以接口的形式暴露出来,用户只需要关心接口怎么调用,不用关心具体的实现,即可使用这些功能。这类被用户调用的接口,称为调用接口。
调用接 ...
Android 创建和删除桌面快捷方式
判断是否已经创建了快捷方式(在某些机型中需要判断)
12345678910111213private boolean hasShortcut(){ boolean isInstallShortcut = false ; final ContentResolver cr = activity.getContentResolver(); final String AUTHORITY = "com.android.launcher.settings" ; final Uri CONTENT ...
VC++删除老版本软件的桌面快捷方式及源码
删除桌面快捷方式其实是删除桌面上的快捷方式文件,那我们如何去删除桌面快捷方式文件呢?软件可能已经发布过多个版本,其中的一些版本的快捷方式文件名称可能了多次改动,程序中不可能记录每个版本的快捷方式名称,没法直接去删除快捷方式文件。本文就给出一种有效的处理办法,能很好地满足实际的需求。
实现思路
删除指定程序的桌面快捷方式的具体思路是,先获取桌面的完整路径,然后遍历桌面文件夹中的所有.lnk快捷方式文件,然后通过IShellLink COM接口去获取快捷方向的exe名称,通过比对exe名称,确定是我们软件的桌面快捷方式。找到快捷方式文件,删除即可。一般情况下,软件的exe程序是不怎么变动的,所 ...
仅需要头文件的c++库
FMT
github
C++格式化字符串一直是个老大难,要么用系统API,要么用C库函数,要么自己写。最近std::format终于在C++20来了。。。cpp在一边不停加入新特性,实用的东西还是不少,比如cpp11的多线程支持,cpp17的filesystem等等,而网络库还不知道在哪。但是这些东西似乎来得太迟。cpp的现状却是很惨。其它语言很快崛起很大的原因就是基础库很全,你可以烂,可以不好用,但你不能没有啊。什么轮子都要自己造。吐槽完毕。
而vs2019仍然没有加入std::format支持,所以先自己用fmt::format。当然这个库可以编译成动态静态库,也可以header-only ...
开源多媒体播放器盘点
媒体播放器
自己动手让VISUAL STUDIO的WIN32向导支持生成对话框程序
文章来源 https://www.freesion.com/article/730931766/
Visual Studio的MFC向导可以生成基于对话框的程序,而win32向导却不支持,是不是很不给力呢?虽然VAX可以直接插入对话框的代码段,但还是没有直接生成来得爽,下面就动手来改造吧。
本文所做的修改仅在自己的VS里测试通过,大家修改之前请备份原文件。
那我们需要改什么呢?看图吧:
首先,找到"VS安装目录\VC\VCWizards\AppWiz\Generic\Application",如我电脑上的目录就是
“D:\Program Files\Microsoft V ...
c++ 日志库之 —— SPDLog
简介
SPDLog 是一个开源的、快速的、仅有头文件的C++11 日志库,它提供了向流、标准输出、文件、系统日志、调试器等目标输出日志的能力。它支持的平台包括Windows、Linux、Mac、Android;有一下特性:
非常快,性能是它的主要目标;
仅包括头文件;
日志的格式化处理使用开源的fmt库;
可选的printf语法支持;
非常快的异步模式(可选),支持异步写日志;
自定义格式;
条件日志;
多线程/单线程日志;
各种日志目标:可对日志文件进行循环输出;可每日生成日志文件;支持控制台日志输出(支持颜色);系统日志;Windows debugger;较容易扩展自定义日志目标;
支持 ...
将Libcef打造为win32控件(非MFC)
初识Libcef
Libcef 的完整发行包中自带示例代码,可以用cmake生成工程后编译运行。我的目的将cefclient编译为DLL,由它与libcef打交道,最终的exe与所有dll互无编译依赖,通过 GetProcAddress 动态对接。
参考:notepad++插件、miniblink-wke控件的实现。
首先,编译 cefclient.exe,记得关闭“treat warning as error”。关闭这种选项在项目设置里的"all options"中搜索即可。
编译成功后,显示出有几个按钮、一些菜单的简单浏览器界面。
2020年了,LIBCEF的演示项目一 ...
常见的Shell 与 释伴(#!) Shebang 符号
常见的Shell
shell 介绍
Linux 是一个开源的操作系统,由分布在世界各地的多个组织机构或个人共同开发完成,每个组织结构或个人负责一部分功能,最后组合在一起,就构成了今天的 Linux。例如:
Linux 内核最初由芬兰黑客 Linus Torvalds 开发,后来他组建了团队,Linux 内核由这个团队维护。
GNU 组织开发了很多核心软件和基础库,例如 GCC 编译器、C语言标准库、文本编辑器 Emacs、进程管理软件、Shell 以及GNOME 桌面环境等。
VIM 编辑器由荷兰人 Bram Moolenaar 开发。
Windows、Mac OS、Android 等操作系统 ...