
C/C++
文章平均质量分 67
很菜但努力
C++爱好者,技术控~~~
展开
-
librdkafka 封装的C++类
kafka就不介绍了, 可以参考kafka的c/c++高性能客户端librdkafka简介,下面说下librdkafka的编译:下载地址:https://github.com/edenhill/librdkafka,下载zip包解压。解压后找到目录下的win32目录, 里面是vs工程。这里还不能编译,因为缺少openssl,需要编译openssl。下载ActivePerl:http://www.activestate.com/activeperl/注意64位和32位, 如果你要编译64位的.原创 2021-02-22 14:07:37 · 513 阅读 · 0 评论 -
windows API更改系统分辨率支持扩展屏
前面介绍了如何使用api更改widnows系统的分辨率。只能更改主屏幕分辨率,这节介绍如何更改多个屏幕的分辨率要更改多个屏幕的分辨我们需要使用如下函数:WINUSERAPI LONG WINAPI ChangeDisplaySettingsEx( _In_opt_ LPCWSTR lpszDeviceName, _In_opt_ DEVMODEW* lpDevMode, _Reserved_ HWND hwnd, _In_ DWORD dwflags, _I原创 2021-02-05 14:14:49 · 1304 阅读 · 0 评论 -
windows API更改系统分辨率
通常更改分辨率可以通过windows显示设置去更改,然而有些时候需要我们使用API进行修改。下面介绍这个函数的使用方法。WINUSERAPI LONG WINAPI ChangeDisplaySettings( _In_opt_ DEVMODEA* lpDevMode, _In_ DWORD dwFlags);该函数用户更改分辨率相关设置,参数1是设备名称,每一个显示其都有一个唯一标识的名称。lpDevMode:指向一个描述转变图表的DEVMODE的指针。DEVMODE的dm原创 2021-02-05 14:05:10 · 2764 阅读 · 0 评论 -
Qt 集成miniblink浏览器库之5 支持独立窗口和子窗口
前面使用GDI绘制解决了集成到Qt的系统冲突和QWebEngineView的冲突,但仅支持作为qt的子窗体,现在将其修改为支持独立窗口的创建。首先判断create接口传入的父窗口句柄是否是空,为空表示创建一个独立窗口,代码如下: _hWnd = CreateWindow(wkeWebViewClassName, 0, WS_CAPTION | WS_VISIBLE | WS_BORDER | WS_MINIMIZEBOX |...原创 2020-12-25 10:27:19 · 1321 阅读 · 1 评论 -
Qt 集成miniblink浏览器库之4 解决兼容性问题
之前介绍了如何miniblink集成到qt,采用wkeCreateWebWindow来创建一个浏览器窗口,wkeCreateWebWindow有三种方式typedef enum _wkeWindowType { WKE_WINDOW_TYPE_POPUP, WKE_WINDOW_TYPE_TRANSPARENT, WKE_WINDOW_TYPE_CONTROL} wkeWindowType;WKE_WINDOW_TYPE_POPUP 创建一个弹出式窗体,模态窗体。W...原创 2020-12-02 17:54:49 · 1715 阅读 · 4 评论 -
菜鸟学ffmpeg音视频技术之三实现命令录制(细节相关)
前面我使用video=screen-capture-recorder实现了录制的相关功能,这一节来讨论下我踩的坑。1.screen-capture-recorder只能录制主屏幕,如果电脑连接了扩展屏,想要录制扩展屏只能让扩展屏设置成主屏才能2.screen-capture-recorder无法设置录制的起始位置和大小,只能录制整个屏幕,想要录制某个区域只能先录制整个屏幕在使用ffmpeg命令来裁剪,这个跟组合录制一样。启动一个进程来完成即可。3.注意设备的类型,如果是dshow一定要设置d原创 2020-11-20 14:32:52 · 782 阅读 · 1 评论 -
Qt 集成miniblink浏览器库之3 C++ js相互调用
上一节已经将miniblink集成到qt,实现了浏览器得基本调用接口,这一节介绍如何实现通信。1.C++调用jsminiblink接口wkeRunJSW可以实现C++调用js例如我们在js中写一个绑定到window的函数openDialog就可以这样调用wkeRunJSW("window.openDialog()");这跟cef,QtWebEngine完全一样2.js调用C++首先我们写一个测试的html如下:<html><head>..原创 2020-11-13 15:18:47 · 1747 阅读 · 0 评论 -
Qt 集成miniblink浏览器库之2封装
前面一节已经介绍了如何编译miniblink库以及如何在qt下使用,但是创立的是个独立窗体,应用中我们经常用到的是作为一个子窗体嵌入到其他窗体之中,类似QWebengnieView,本节将实现这个功能。首先参考前一节将需要的库文件,头文件引入工程。1.创建一个类QMiniblinkWebView继承自QWidget2.初始化initialize接口由于miniblink使用需要先初始化,这里设计在构造函数中处理这个问题,多个QMiniblinkWebView只需要初始化一次,所以这里定义两个原创 2020-11-06 14:44:21 · 1781 阅读 · 4 评论 -
Qt 集成miniblink浏览器库之1编译使用
1.miniblink简介miniblink是一款精简小巧的浏览器控件,由龙泉寺扫地僧基于chromium精简而成,是市面上最小巧的chromium内核控件没有之一。它仅10余M大小,只需一个dll,几个纯C接口即可轻松调起,并嵌入到任何软件内使用。你可以用来显示网页、做软件的界面框架、做爬虫等功能。它内置了各种网络拦截接口,可以方便的替换网络资源;解除了跨域访问限制,方便本地开发测试等。如果你使用过cef、wke的话,相信很容易理解。miniblink采用的接口和wke几乎一模一.原创 2020-10-30 16:27:32 · 2344 阅读 · 0 评论 -
Qt opengl自绘制Agora,zego(YUV)视频(支持Windows,mac)
集成Agora或者zego得都知道,这两者都支持自绘制或者让SDK绘制,SDK绘制有缺陷:1.改变大小由于未能及时通知agora绘制得视频会闪烁2.sdk同时只能在一个窗口绘制拿到agora采集得数据自己绘制可以解决上面得缺陷。声网支持两种方式,一种是集成接口方式,一种是设置一个回调接口。两种方式都一样。接口如下:(zego也一样)bool onCaptureVideoFrame(VideoFrame& videoFrame) override;bool onRenderV.原创 2020-05-12 18:20:10 · 852 阅读 · 0 评论 -
C++面试题整理
1.写一个string该题主要考察赋值class String{public: String(const char *str = NULL); //通用构造函数 String(const String &str); //拷贝构造函数 ~String(); //析构函数 Strin...原创 2019-09-24 14:49:34 · 777 阅读 · 0 评论 -
Qt面试题整理
1、Qt信号槽机制的优势(1)类型安全。需要关联的信号和槽的签名必须是等同的,即信号的参数类型和参数个数同接收该信号的槽的参数类型和参数个数相同。不过,一个槽的参数个数是可以少于信号的参数个数的,但缺少的参数必须是信号参数的最后一个或几个参数。如果信号和槽的签名不符,编译器就会报错。(2)松散耦合。信号和槽机制减弱了Qt对象的耦合度。激发信号的Qt对象无需知道是哪个对象的哪个槽需要接收它发出的...原创 2019-09-24 13:56:23 · 54436 阅读 · 2 评论 -
Qt 在Mac下无边框后无法最大化和最小化解决方案
Qt 5.0以上mac版本一致存在这个bug,网上也有解决方案,一个是修改Qt源码重新编译,这个比较费事,另一个是将文件改为.mm后缀,使用oc代码: NSView* view = (NSView*)this->winId(); NSWindow* wnd = [view window]; [wnd miniaturize:nil];这句代码好像在qt5.2中可以解决,然后我测试了之后的所有...原创 2018-03-28 10:38:25 · 6587 阅读 · 9 评论 -
浅谈C/C++ 开发Excel插件之自定制ribbon菜单
要实现ribbon菜单只需实现IRibbonExtensibility接口,此接口在程序库Microsoft Office 12.0 Object Library 中找到(名称的版本号会随Office安装版本的不同而略有区别)。(方法跟上一节添加接口的流程一样这里就不在啰嗦了)。1.实现接口。将继承声明中的&LIBID_Office改为&__uuidof(__Office),在stdafx原创 2016-09-06 16:04:54 · 4755 阅读 · 1 评论 -
浅谈C/C++ 开发Excel插件之操作excel
想在加载项中访问并操作Excel,需要在stdafx.h中加入如下语句,注意实际路径和本机安装Office的路径相关#import "C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\VBA\\VBA6\\VBE6EXT.OLB"#import "D:\\Program Files (x86)\\Microsoft O原创 2016-09-06 16:28:28 · 4620 阅读 · 1 评论 -
浅谈VC中使用Qt库之一
Qt作为一款夸平台的UI库 已经在各个领域取得了成功,它的简单,便捷是快速开发界面的首选,MFC, C#等等在我看来都没有它方便。假如你在一个VC项目中你想使用Qt怎么办呢,其实网上有很多使用qtwinmigrate来实现这样的功能,但是qt更新版本是不兼容的,使得只要Qt有升级qtwinmigrate也得跟着升级,遗憾的是qtwinmigrate已经在几年前终止了升级,只能在5.0以下使用,不过原创 2016-09-06 17:02:26 · 6559 阅读 · 2 评论 -
浅谈VC中使用Qt库之三
前面我们讲到在VC中直接使用Qt,这种方法将Qt和VC代码混在一起,感觉不伦不类,更好的方法是将这些界面封装在库中,vc通过加载dll的方式来使用。1.首先创建一个win32 项目-》选择动态库-》完成将前面工程的EdbParamaUi.h EdbParamaUi.cpp moc_EdbParamaUi.cpp拷贝到该工程中并加入工程。2. 编写导出函数原创 2016-09-06 17:57:46 · 1462 阅读 · 0 评论 -
浅谈VC中使用Qt库之四
前面几节已经成功的将Qt在vc中使用,但都是各自独立的,其实我们将Qt的父窗口设置为VC的窗体。代码如下:m_pEdbParamaUi = new EdbParamaUi();m_pEdbParamaUi->setFixedSize(100, 200);::SetParent((HWND)m_pEdbParamaUi->winId(), m_hWnd);m_pEdbParama原创 2016-09-07 17:00:04 · 919 阅读 · 0 评论 -
浅谈C/C++ 开发Excel插件之任务窗格
Excel的任务窗格非常友好,开发Excel也避免不了,Choice在其插件实现了弹出对话框和任务窗格供用户选择。如何在C++中创建任务窗格呢。1.在CConnect类中添加ICustomTaskPaneConsumer接口,方法同前修改为public IDispatchImpl Vs会自动添加要实现的接口STDMETHOD(CTPFactoryAvailable)(ICTPFa原创 2016-09-07 16:39:21 · 2171 阅读 · 0 评论 -
cocos2D-x在windows下实现隐藏默认标题栏,并实现拖动
COCOS2D是移动端开发游戏的免费引擎,功能非常强大,由于在移动端没有标题栏不存在问题,在windows下会有默认的标题栏,如果做得游戏为了在windows下也有统一的游戏风格,修改标题栏就必不可少。1.隐藏标题栏CCEGLView类中有一个获取窗口句柄的接口CCEGLView::sharedOpenGLView()->getgetHWnd();所以实现去掉标题栏非常简单,LONG原创 2017-03-28 10:52:04 · 1531 阅读 · 0 评论 -
OSG中使用Qt做界面
最近使用OSG做三维引擎开发,在外层使用Qt做主框架,三维渲染使用OSG,但是在OSG中想快速写出UI设计师设计的界面有时就显得吃力,OSG提供了osgQt来支持Qt嵌入OSG,那么如果能在OSG中直接使用Qt做界面必定事半功倍,于是在网络一顿胡搜,结果令人沮丧,大多标题写着osg嵌入Qt却干着Qt嵌入OSG的事。于是想到OSG的例子,进去也是一顿乱搜,不知道是我没找到还是真没有,本人反正没有收到原创 2017-06-05 15:14:50 · 10379 阅读 · 3 评论 -
QGIS学习之-环境搭建
1.从OSGeo4w获取开发包2.自己编译编译的博客一大推,不再啰嗦,要有耐心 要有耐心 要有耐心 重要的事情说3遍。开发环境: QtCreator1.首先将设置QtCreator编译器,如果是下载的,目前官方使用的是Qt4.8.5编译的,所以应设置qmake路径类似:E:\OSGeo4W64\bin\qmake2.设置导出宏 由于下载的开发包内并未定义,所以在pro文原创 2017-07-28 10:41:52 · 2163 阅读 · 0 评论 -
使用Zlib对文件和目录进加密打包和解包
zlib就不做解释了,本人使用的是1.2.7版本,并用C++进行了封装,用到了Qt。功能:1.使用线程,不会卡死界面支.2.支持递归目录,目录和单个文件。3.可以同时进行多项任务。4.返回每项任务的任务进度。5.打包和解包的详细过程信息。6.支持从包文件中只解压一个文件。步骤:1.下载zlib压缩包并解压。2.找到zlib解压目录下的zlib-1.2.7\c原创 2017-08-23 10:43:03 · 6268 阅读 · 2 评论 -
使用librdkafka 封装的 C++类
kafka就不介绍了, 可以参考kafka的c/c++高性能客户端librdkafka简介,下面说下librdkafka的编译:下载地址:https://github.com/edenhill/librdkafka,下载zip包解压。解压后找到目录下的win32目录, 里面是vs工程。这里还不能编译,因为缺少openssl,需要编译openssl。下载ActivePerl:http原创 2017-08-29 12:49:54 · 7869 阅读 · 2 评论 -
浅谈C/C++ 开发Excel插件之创建项目
Excel应用之广泛,出现了各种各样特定功能的插件,目前使用最多的开发语言是C#其次是VB, 使用VS开发已经为这2种语言做了向导,C++由于其复杂性导致程序员们在选择语言上将其抛在了较低的位置,一直COM难于理解,而是C++这方面的资料较少,但C++并不是一无是处,相比C#无需部署,无需管理framework升级以及各个Windows版本等问题。也就是说C++开发难但易于使用。这也是我选择C++开发的原因,期望能跟大家共同学习进步。原创 2016-09-05 20:46:06 · 4210 阅读 · 0 评论