自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (2)
  • 收藏
  • 关注

原创 全局钩子的安全退出

全局钩子安全注销

2023-05-17 16:54:15 546

原创 Qt绘图技巧

Qt绘图

2023-01-17 15:53:04 839

原创 【无标题】

Qt打包编译

2023-01-04 17:50:10 135

原创 *.pro文件的配置

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command + Z重做:Ctrl/Command + Y加粗:Ctrl/Command + B斜体:Ctrl/Command + I标题:Ctrl/Command + S

2022-08-20 18:12:42 241

原创 Qt国际化

1、在main函数中注册QString lanQm = QString(“:/qm/widget_lan_zh.qm”);QTranslator translator;translator.load(lanQm);app.installTranslator(&translator);2、重写changeEvent,在translator.load(lanQm);的时候,会捕获这个消息void widget::changeEvent(QEvent *evt){switch (evt-&

2022-04-06 15:15:09 360

原创 vs2017创建一个QWidget窗口

记录一下创建一个QWidget的过程。1、右键项目 -> 添加 -> Add Qt class -> Qt Widgets class -> Add -> next。2、修改类名...3、编译QtWidgetsClass.ui4、在QtCreater中设置布局(主要记录一下设置的时候经常忘记的错误)...

2021-10-28 14:54:18 1288 4

原创 Qt线程-moveToThread

直接贴代码://1、创建线程QThread *thread = new QThread; //2、主要工作类 VoiceUpdate *worker = new VoiceUpdate(this); //3、将工作类加入到线程 worker->moveToThread(thread); //4、线程结束时,释放工作类 connect.........

2021-10-28 11:25:53 707

原创 HEAP CORRUPTION DETECTED: after Normal block

背景:今天在学习计排序算法时,遇见一个HEAP CORRUPTION DETECTED: after Normal block的问题,如图所示:一直纳闷,我使用了new之后,使用delete[]为什么会出现这样的错误,于是求助度娘。解决方法:在申请内存的时候,申请大一些,就能解决这个问题。参考的方法是这个博主的:https://www.cnblogs.com/pengkunfan/p/3828874.html代码如下:void CCountSort::sort(vector&l

2021-05-25 11:03:30 270

原创 利用postman生成代码技巧

背景对文本信息做摘要处理,需要调用服务器资源。服务器端值给了一个连接和一张postman的截图,需要使用vc++实现。说明之前做过libcurl的一些东西,但是还没有尝试过发送raw模式的,我还以为这个raw的意思是直接发送二进制流呢。我查阅了之前的一些实例,发现有两种在body里面发送数据的方式。一种是key-value的形式(百度的一个demo):还有一种是采用直接发送的方式(讯飞的一个demo):可是,我对这两个demo进行了修改之后,依然没有调用...

2021-05-11 16:11:43 810 1

原创 vs2013在使用git保存修改内容之后不再显示修改文件的问题解决方法

记录一下在vs2013中使用git的一些问题1、背景最近在vs2013中使用git仓库保存项目源码时,发现修改后的文件一旦保存,在vs2013的团队资源管理器-更改中就不再显示修改的文件。2、可能的原因(1)在gitee上创建仓库的时候,仓库中含有“-”。例如,我创建的名称是DataManager,gitee默认将仓库的链接改成data-manager。此时需要将data-manager手动改成datamanager。(2)在使用clone仓库时使用了重命名,例如,git clone h

2021-05-07 10:58:44 984

原创 控制台程序打印不同颜色的字体

最近在做一个类ftp的程序,我写界面实在是太垃圾了,所以选择用控制台程序实现。调试服务端和客户端时,总是会出现各种问题,于是只好将可能出现错误的地方打印出来。随着日志打印的越来越频繁,Console窗口显示太多的内容,都是黑底白字,想找到错误的日志真是一件费力的事情。于是我就想,是不是可以在打印日志的时候,将错误提示的日志使用红色区分,这样就不用在茫茫的日志中苦苦找寻自己想要的那一条。还好,Windows提供了API对Console的打印内容设置不同的字体颜色和背景颜色:API:BOOLSet.

2021-04-16 17:15:12 548

原创 MFC自定义绘图

重点内容:1、绘图过程放在计时器里面,这样可以防止集中刷新时的闪烁。2、重写OnMouseMove函数,记录鼠标与各控件的位置。3、虽使用MFC绘图,但是为了使界面美观,所以将资源视图->需要修改的窗口->属性->外观->Border的值改成None。4、重写OnLButtonDown函数,这里面设置哪些部分为标题栏,可以进行拖动。可以使用这个设置::PostMessage(m_hWnd, WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM

2021-02-06 15:27:58 476

原创 Duilib中的TitleLayoutUI控件修改成横向滑动展示(以Troy的DuiLib_Ultimate为例)

Duilib中的TitleLayoutUI默认是竖向滚动展示,以Troy的DuiLib_Ultimate为例,如图显示现在想做成横向滑动显示,如下图:下面说一下修改的方法,其实很简单,就是将CTileLayoutUI::SetPos函数中的所有的x改成y,y改成x;top和bottom改成left和right,left和right改成top和bottom;Hor改成Ver,Ver改成Hor就可以了,因为源码已经写的很好了。下面是修改后的代码://头文件#pragma o.

2020-11-05 17:16:39 553 4

原创 Duilib控件字体设置

duilib有自带的字体设置,在xml中定义字体,例如:<Font id="16" name="微软雅黑" bold="false" size="16" italic="false" shared="true" default="true"/>在用的地方只需要引用字号16就可以。但是,这样设置有不方便的地方就是需要些大量的定义。例如:我需要设置10种字体名称、size也需要设置10,这样就需要10*10=100种定义。如果需要设置的东西更多的话,可能写在xml里面都不好查找。下面

2020-09-21 17:22:28 1821

原创 回调函数错误问题

先说错误原因吧:传参的时候是使用1的函数指针,而在函数中使用2进行强转。1、typedef void(*TRANSFORM)(const char *szResult, IflyAPI nWhichAPI, void *pC);2、typedef void(*TRANSFORM)(const char *szResult, void *pC); 今天在调试代码的时候,出现对象已经常见过来(在构造和析构函数中都设置了断点),但是当数据回调回来的时候,总是显示“0xC00...

2020-09-02 10:48:53 1696

原创 curl 上传multipart/form-data

上传文件说明:1、使用图中最后一行的上传方式。2、错误示范:刚开始不会使用,将文件已二进制文件读出来,然后作为body的其中一项使用下面的方法上传,但总是报错

2020-08-19 17:48:57 2305

原创 ubuntu20.04获取动态ip

2020-07-27 20:18:50 1680

转载 宿主机能ping通虚拟机,虚拟机不能ping通宿主机的解决方法

标题 我在Windows10系统安装了虚拟机,设置的主机与虚拟机的连接方式是桥接,安装好后,发现虚拟机ping不通主机,但是主机可以ping通虚拟机。我的操作是:关闭防火墙,发现虚拟机可以ping通主机了。说明是Windows10防火墙阻止了。现在存在的问题是:如果我一直关闭防火墙也不是个事啊?这样做会影响我的电脑安全的。于是我想我

2020-07-10 09:57:46 2811 1

原创 Ubuntu 20.04版本配置静态ip的要点、操作步骤和常见错误

要点:1、root权限;2、打开 /etc/netplan/01-network-manager-all.yaml3、修改内容如下:操作步骤:1、切换到指定路径 /etc/netplan/,找到文件01-network-manager-all.yaml2、切换到root权限,sudo su root,然后输入密码3、打开文件01-network-manager-all.yaml,严格按照图中填写4、应用,如果没有打印提示信息就是执行成功了,执行的命令如下.

2020-07-07 16:53:13 21869 7

原创 系统时钟修正

在使用duilib开发使用计时器时,总觉得计时器的时间不准确(特别是计时器的时间间隔越小时),这时可以使用系统时钟来进行时间的修正。windows提供了获取系统时钟的API GetTickCount();该函数返回系统启动到当前的毫秒数。...

2020-06-12 10:49:26 390

原创 sqlite3加密实战中出错(切记不可再犯),sqlite3_key在sqlite3_open之后调用

使用wxSQLite3封装的sqlite3的加密过程中,一直报“file is encrypted or is not a database”。找了很久一直没有解决,直到想起学习sqlite3加密时,文档中说过sqlite3_key放在sqlite3_open之后调用,这才想起在这两个函数之间还调用了其他的。直接看源码吧:错误的代码:修改后的代码:...

2020-06-02 10:41:05 2579

原创 sqlite3命令

基本命令:1、打开数据库:"sqlite3 test.db"或者 "sqlite3" + "attach database 'test.db' as test;"。2、查看数据库:".database"。3、查看表:".tables"。4、帮助命令:".help"。5、退出:".quit"或者".exit"。视图:1、创建视图e.g.2、删除视图:DROP VIEW view_name;e.g. sqlite> DROP VIEW compan...

2020-05-30 18:04:14 785

原创 vs2013编译加密版sqlite3(附带源码)

说明:本实例使用的是wsSQLite3的封装版。下载说明:本实例下载的是wxsqlite3.3.3.1版本。编译环境:vs2013。配置执行流程:1、新建一个Win32程序,命名为demo,在项目根目录demo同级创建lib和include文件夹;2、将下载的wxsqlite3.3.3.1解压包里面的sqlite3\include\sqlite3.h文件拷贝到demo工程include文件夹下面;3、将下载的wxsqlite3.3.3.1解压包里面的sqlite3\secure\ae

2020-05-29 17:10:06 451

原创 切记,不要在线程中使用duilib

问题:在线程中使用Duilib创建的控件,结果在mciSendCommand总是出问题。需求:想做一个音频小文件合并成大文件的功能。需要在控件中显示当前的合并进度。方法一:直接在主线程中做合并,通过回调的方式通知进度条刷新显示进度,文件合并能成功,但是进度条(使用CProgressUI控件)一直没有变化。于是,想在线程中合并调用合并函数方法二:创建线程,在线程中调用合并函数,结果合并失败。方法二的出错点:由于默认打开播放第一个小文件(使用mciSendCommand),所以在合并前需要关

2020-05-28 10:34:07 433

原创 判断sqlite3库中是否有该表

SELECT count(*) as cnt FROM sqlite_master WHERE type = 'table' AND name='表名';如果cnt=0表示表不存在。

2020-05-27 13:32:19 697

原创 vs2013编译sqlite3

1、进入http://sqlite.org/download.html下载sqlite-amalgamation-3320000.zip和sqlite-dll-win32-x86-3320000.zip,解压。2、创建一个空的Win32 dll项目,将解压后的文件sqlite3.c、sqlite3.h、sqlite3ext.h和sqlite3.def四个文件添加进来。编译,没有报错,但是只生成sqlite3.dll而没有sqlite3.lib文件。3、项目属性 - 配置属性 - 连接器 - 输入 -

2020-05-26 12:29:34 521

原创 ShellExecute

在C:\tmp\目录下面存在文件test.txt打开这个目录可以使用ShellExecute,代码如下:ShellExecute(NULL,_T("open"),_T("explorer.exe"),_T("C:\\tmp\\"),NULL,SW_SHOWNORMAL);如果,在此基础上增加“选中文件”的功能,只需要将上面的目录的名称换成文件的名称,并在前面加上"/select,"即可...

2020-04-12 15:41:16 300

原创 成员变量与临时变量

错误的实例:1、临时变量在使用Duilib::CRichEditUI::SetText时,在底层的某个线程中不断回调需要展示的内容。在调用SetText之前,将需要展示的内容放在一个临时变量str中。当程序运行时会偶尔崩溃,并提示访问冲突。如下图所示:查资料说0xC0000005的错误一般是指针错误导致的。于是将临时变量str改成成员变量m_str,就没有出现这个中断了。...

2020-03-23 10:52:02 493

原创 git提交时有冲突,但是没有显示进入解决冲突的连接

问题:在vs2013中提交修改代码之后,拉取远程代码时提示有冲突,但是又没有进入冲突的链接。只是提示如下内容:An error was raised by libgit2. Category = 21 (MergeConflict).解决:使用命令行,命令如下:git commit -a -m "提示内容"git pull origin master然后再到vs2013...

2020-03-12 14:04:27 1275

原创 mciSendCommand

打开文件:mciSendCommand(NULL, MCI_OPEN,MCI_OPEN_ELEMENT, (DWORD_PTR)&mciParamsOuter);//阻塞一直使用这个方法调用,直到某次在使用Duilib库创建窗口的InitWindow中调用该函数,程序一直阻塞在该函数处。但是在窗口创建成功之后,再调用该函数是没有问题的。之后查资料发现在第三个参数中添加一个MCI...

2020-03-09 11:04:02 293

原创 关于使用Duilib控件实现滚动效果

在开发过程中可能需要实现动态的滚动效果,这里记录一个Duilib控件实现滚动的例子。上图中的每一条显示和每一组时间都是一个Label控件。其中,竖线的实现方法是创建一个Label控件,然后设置该控件的SetFixedHeight属性和SetBkColor属性。至于滚动效果2和3有所不同。3的滚动效果原理,将后一个控控件的高度赋值给前一个控件,最后一个控件则使用传入的值。2的滚动效果...

2020-02-13 17:28:55 1190 6

原创 Duilib在控件中包含xml的两种方法

方法一:在xml中使用Include,具体代码如下<Container> <Include source="abc.xml"/></Container>方法二:自定义控件1、将上面的xml替换成下面的样式<Container> <MyAbc /></Conta...

2019-09-21 17:09:45 738

原创 设置窗口最顶层

HWND_TOPMOST可以设置窗口最顶层,设为窗口A,但是如果存在窗口B也设置了HWND_TOPMOST属性,根据微软官方的文档可知,窗口A和窗口B都可以覆盖对方成为最顶层窗口。如果想保持窗口A一直在最顶层,可以在计时器中通过调用:::SetWindowPos(m_hWnd, HWND_TOPMOST, x, y, nWidth, nHeight, SWP_SHOWWINDOW);保持窗...

2019-09-17 10:04:17 3327

原创 WS_EX_TOOLWINDOW的问题

在创建窗口时为窗口设置WS_EX_TOOLWINDOW属性,当窗口(令为A窗口)与其他软件的窗口(令为B窗口)以及一个最大化的窗口(令为C窗口)在层叠显示时(A和B窗口的前后位置无关,且都在C窗口的前面),点击B窗口的最小化之后A窗口会被隐藏在C窗口之后。代码如下:Create(NULL,_T("A窗口"), UI_WNDSTYLE_DIALOG, WS_EX_STATICEDGE | W...

2019-09-17 09:39:53 3339

原创 MFC窗口点击标题栏图标显示或隐藏窗口

添加WS_MINIMIZEBOX属性。具体可使用代码可参考:LONG nStyle = ::GetWindowLong(*this, GWL_STYLE);nStyle |= WS_MINIMIZEBOX;::SetWindowLong(*this, GWL_STYLE, nStyle);

2019-09-17 09:38:44 531

原创 Duilib自定义控件

方法一:1.1 继承IDialogBuilderCallback类,重写CreateControl函数。1.2 在使用该控件的类中继承OnCreate函数,代码如下: CDialogBuilder builder; CDialogBuilderCallbackEx cb; CControlUI* pRoot = builder.Create...

2019-09-17 09:38:01 545

原创 Duilib中的DoEvent

自定义控件时,可以使用重写DoEvent函数给指定的窗口(CPaintManagerUI*对象所在的窗口)发送消息,消息也可以是自定义的。可以参考Duilib库中的click消息,该消息在在EVENTTYPE_UI枚举(UIManager.h)中没有,但是存在于duilib定义的消息(#define DUI_MSGTYPE_CLICK (_T("click")))...

2019-09-15 23:37:30 1000

原创 Duilib自定义控件name属性设置问题

使用Duilib自定义控件时,在xml中使用该自定义控件,并且设置name的值,如例句:<MyButton name="btnDown" text="向上" width="40" foreimage="dest='12,7,28,23' res='menu/icon.png'" textpadding="0,0,0,5" align="center" valign="bottom" st...

2019-09-14 23:04:39 272

sqlite3_encryption_demo.zip

使用wxSQLite3编译生成的sqlite3的库文件,创建一个加密后的数据库,加密后的数据库不能被SQLiteStudio打开,能很好的保护本地数据安全。sqlite3_encryption_demo.zip是一个已经实现加密之后的源码demo。

2020-05-29

nsis-2.46.5-Unicode.zip

nsis-2.46.5-Unicode-setup.exe在打包时能包含中文字符而不会出现乱码。使用与Win所有系统的打包。

2019-09-20

空空如也

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

TA关注的人

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