- 博客(68)
- 资源 (6)
- 收藏
- 关注
原创 Windows下使用iconv
资源下载官网资源: https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.16.tar.gz环境配置编译环境:Win7 64位系统 VS2015创建一个VS2015项目,应用程序类型使用静态库,注意取消勾选“使用预编译头”;将资源[libiconv-1.16\lib]文件夹下的所有文件,全部复制到第一步创建的工程目录下,并找到config.h....
2019-11-18 00:47:05
7290
1
原创 MFC单文档项目如何禁止右键菜单
VS2015生成一个MFC单文档项目,想要禁止右键菜单。直观想法就是,找到右键响应函数,然后禁止相关代码。也就是禁止OnRButtonUp中OnContextMenu()函数调用,但是结果却还是无法禁止右键菜单。但是如果禁止OnContextMenu()函数中的内容,就能正常禁止右键菜单,应该MFC框架内部有调用ON_WM_CONTEXTMENU()事件,从而调用OnContextMenu()函...
2019-04-15 14:31:10
1337
原创 UML之六种类图关系
一、概述对于大型项目,一般需要先利用UML绘制类图关系。学习设计模式,也需要清除的知道类与类之间的关系。类与类之间的关系分为三大类:泛化,实现,关联(组合、聚合、普通关联、依赖)二、详细1、泛化泛化关系发生在继承类之间。子类继承父类的所有非私有属性和方法,并根据自有的特性进行扩展,这就属于泛化,使用实线空心箭头表示,如下图所示2、实现3、关联3.1、组合3.2、聚合3.3、普...
2019-04-14 23:57:23
634
原创 MFC中控件比较多的对话框弹出速度很慢真相
问题描述VS2015环境,MFC单文档开发的绘图软件当软件运行一段时间后,会出现其中几个控件比较多的界面显示弹出速度很慢,而且会越来越慢。一直怀疑是不是由于内存增大造成显示过慢,或者是,由于对话框初始化过慢造成。经过反复验证,终于找到问题。解决方案由于是绘图软件,使用的GDI对象比较多,而且容易忽略释放,造成GDI对象泄漏,一直增加,当增加到一定程度时,界面显示就会变得很缓慢。所以关键点是...
2019-04-12 17:09:05
2551
1
原创 vs2015 C1xx :fatal error c1038:无法打开源文件“stdafx.cpp":no such file or driectory
Win7系统,VS2015新创建的项目编译出现C1xx :fatal error c1038:无法打开源文件“stdafx.cpp":no such file or driectory错误。解决方法:找到VS2015的图标,然后鼠标右键,选中“属性”,如下图红框所示设置即可,将“以兼容模式运行这个程序”前面的勾取消掉...
2019-04-02 09:56:17
2261
2
转载 C++中模块(Dll)对外暴露接口的几种方式
转载自:https://www.cnblogs.com/weiym/archive/2012/08/29/2662559.html总结下C++中模块(Dll)对外暴露接口的方式:(1)导出API函数的方式这种方式是Windows中调用DLL接口的最基本方式,GDI32.dll, User32.dll都是用这种方式对外暴露系统API的。这种方式的优点是导出函数没有语言限制,什么语言都能调用;...
2019-04-01 08:54:03
3209
原创 VS2015-MFC生成的执行文件exe所依赖动态库详解
一、依赖动态库说明运行环境:VS2015、Win7 x64利用VS2015平台创建MFC工程,生成的exe,所依赖的动态库总结如下:编译环境依赖DLLDebug-使用MFC动态库-C运行库MDdmfc140ud.dll, msvcp140d.dll, vcruntime140d.dll,ucrtbased.dll, api-ms-win-core-timezone-l1...
2018-12-13 13:43:17
4834
原创 MFC中单文档和多文档的工具栏停靠问题
一、MFC单文档中添加自定义工具栏项目环境:VS2015,MFC单文档工程,项目类型Visual Studio1.1、添加ToolBar资源打开资源视图,添加ToolBar,命名IDR_TOOLBAR1,然后随便创建几个工具图标。2.1、在项目中添加新增的ToolBar打开主框架文件MainFrm.cpp,找到OnCreate函数,在系统工具栏创建代码的下面添加新工具栏的创建。// M...
2018-12-11 14:21:50
1572
原创 C/C++中结构体中的冒号-位域
C++中位域的形式:struct st1{ unsigned int a:2; unsigned int b:3; unsigned int c:4;};struct st2{ int a:16; int b:17;};struct st3{ int a:2; int b:3; int c:4;}...
2018-11-27 15:15:19
1305
原创 VS中编译项目出现找不到目标exe的错误
无论是在VS或者QtCreator等IDE中,肯定会出现“无法找到执行文件exe”的错误,一般造成这种错误的原因是,有正在运行的exe,形成冲突,关闭这个exe即可。但有时候,你会发现即使没有正在运行的exe,也还是出现这个错误,无论重新编译,还是关闭项目后再编译,也无法解决,经过多次验证,发现是由于360杀毒软件将第一次生成的exe当成病毒隔离了,然后后面再就无法在这个目录中生成exe,所以就...
2018-11-16 08:42:00
5869
原创 Qt5.9.0导入lib库出现LNK1104错误
Qt5.9.0中出现 LNK1104:无法打开文件“xxxx.lib”错误。检查.pro文件中的lib导入路径都正确,但是怎么构建,都会出现上面的错误。Windows系统中,建议导入lib库时,统一采用全路径的方式,这样避免出错:LIBS += $$PWD/3rdparty/lib/dxflib.lib //$$PWD当前工程目录// 或 LIBS += D:Myproject/3r...
2018-11-14 09:34:18
15430
9
原创 一维码和二维码开源库zint学习
一、资源下载二、环境搭建三、简单示例四、开发应用1、zint_symbol解析zint_symbol结构体的定义位于zint.h文件中,详细说明见如下表格变量名称类型含义默认值symbologyinteger条码类型(详细见zint.h声明)BARCODE_CODE128heightinteger条码的高度 ,详细参考注意第一点50whi...
2018-11-07 10:57:23
5121
3
原创 VS2015同一个项目的多个子工程按依赖关系同时编译
包含多个子工程的项目,其中一个主项目,依赖其余数个子项目的库文件,我们希望每次只需要编译主项目,就能自动编译依赖项目。在VS2015项目中,选中“解决方案”的属性,如下图所示,【通用属性/项目依赖项】,“项目”一栏,选择为主项目,“依赖于”一栏选择主项目依赖的项目。设置完成后,再编译主项目,就会先编译依赖的项目,然后编译主项目。...
2018-11-06 14:37:24
7095
原创 显示调用DLL出现126错误
显示调用DLL,特别要注意的是,DLL的路径和函数的名称。如果DLL的路径没有问题,还是出现126错误(未指定的模块),一般可能是该DLL需要依赖某些其他DLL库,特别是MFC类型的DLL,当采用动态编译时,就会因为缺少mfc140u.dll和msvcp140.dll(VS2015 DEBUG编译环境)库而出现失败。...
2018-10-24 16:43:31
8929
原创 LibreCAD Windows编译问题集
运行环境:win7系统,QT5.9.0(MSVC2015 32bit)下载资源LibreCADBoost说明:下载最新版本即可(当时下载的的版本为:LibreCAD 2.2.0,Boost 1.53.0)。编译生成几个功能库文件:dxfrw.lib、jwwlib.lib、muparser.libdxfrw.lib:用于读写文本格式或二进制格式的DXF文件jwwlib.lib:mup...
2018-10-04 23:49:12
2830
原创 用正则表达式去掉C++中的注释内容
C++中的注释内容,有两种样式: // 和 /* */ 针对这两种样式,正则表达式可以为\/\*[\s\S]*\*\/|\/\/.*\/\*[\s\S]*\*\/可以识别/* */整块注释, \/\/.*可以识别//单行注释 在支持正则表达式替换的编辑器(VS, Source Insight4.0)中,将匹配这段正则表达式的内容替换为空格,即可!...
2018-09-10 13:05:25
3141
2
原创 LineDDA函数使用
一、 LineDDA函数1、作用沿着定义的起始点与结束点组成的直线,重复执行指定的LINEDDAPROC回调函数。2、声明及参数说明语法BOOL LineDDA( _In_ int xStart, _In_ int yStart, _In_ int xEnd, _In_ int yEnd, _In_ LINEDDAPROC lpProc, _In_opt_ L...
2018-05-04 12:38:52
1258
5
原创 区分const char* p,char* const p
我们从常规的指针开始,char* p = new char[5]; //在内存中申请5个字节的空间,并将空间地址赋给指针变量p指针变量p可以保存一个内存地址值,还可以去操作这个内存地址对应位置的内容,使用解引用操作符*,用*p表示。由此可见,通过指针变量p,就可以对内存进行读写操作。有时候,我们只需要读取某个内存的内容,而不需要去改变它,这样我们可以通过const修饰符去限定,以免造...
2018-05-03 14:21:57
703
原创 C++父子类中关于继承的一些问题
一、 子类能够从父类继承哪些内容?除了父类的构造函数和析构函数外,其余public和protected作用域的成员都能被子类继承:子类不能从父类继承的有:普通构造函数、拷贝构造函数、析构函数;子类能够从父类继承的有:静态成员变量、静态成员函数、友元函数、赋值操作符重载函数。二、关于静态成员的几个问题1. 子类如何调用父类的静态成员? 父类名::成员 子类名:成员 子对...
2018-05-03 11:33:54
905
原创 一个简单的Win32程序
一、Windows消息机制1、 消息是什么Windows程序的运行是依靠外部的事件来驱动。换句话说,程序不断等待,等待任何可能的输入,然后做出判断,再做适当的处理。前面的“输入”是指操作系统发送给程序的消息。消息,其实就是系统内设的一种数据结构。typedef struct MSG{ HWND hwnd;//hwnd 是窗口的句柄,这个参数将决定由哪个窗口过程函数对...
2018-04-27 22:25:13
3385
原创 基于UDP的winsock同步通讯
一、代码实现服务端#include "stdafx.h"#include <iostream>#include <Winsock2.h>#include <WS2tcpip.h>#pragma comment(lib, "ws2_32.lib")using namespace std;int main(){ WSADATA w...
2018-04-24 22:19:13
506
原创 静态链接库和动态链接库的区别
一、静态链接库的使用静态连接库就是把(lib)文件中用到的函数代码直接链接进目标程序,程序运行的时候不再需要其它的库文件。 在VS2015平台上,创建一个静态库(.lib)项目方案,选择【创建项目/Win32/Win32控制台应用程序/静态库(.lib)】,如下图所示, 生成项目后,创建两个项目文件staticdll.cpp和staticdll.h,并添加如下代码,//stat...
2018-04-23 20:45:30
7472
2
原创 strcpy函数实现
strcpy函数实现strcpy函数的原型为:char* strcpy(char* _Dest, const char* _Source);//实现1char * strcpy(char* _Dest, const char* _Source){ //检查传入参数的有效性 assert(NULL != _Dest); assert(NULL != _Sour...
2018-04-15 23:24:45
25655
5
原创 QT动态编译后,缺少各种dll文件
QT动态编译后,执行文件时,会发现缺少各种与Qt相关的dll运行库文件。 对于这种情况,Qt提供了一个工具windeployqt.exe,去为用户自动查找exe所需的dll文件。 第一步,在“所有程序”中打开Qt的控制台操作程序,如图所示, 第二步, 进入到exe的目录下,执行windeployqt ####.exe,然后就会在exe的目录下产生许多依赖的dll文件,如下图所示, ...
2018-04-12 10:59:19
1652
原创 VS2015编译QT程序,丢失ucrtbased.dll文件
利用VS2015编译QT程序,出现丢失ucrtbased.dll文件的错误。 直接下载ucrtbased.dll,百度网盘密码:vkhq。 然后将其放置到系统目录(C:\Windows\System32)中。再重新编译即可。...
2018-04-12 10:41:23
2527
原创 信号和槽基本特点
信号和槽机制是 QT 的核心机制,要精通QT编程就必须对信号和槽有所了解。一、使用方法1. 为控件添加信号和槽手动添加//MyDlg.h#pragma once#include <QtWidgets/QDialog>#include <QtWidgets/QLabel>#include <QtWidgets/QLineEdit&...
2018-04-11 23:48:56
1757
原创 EXCEL中实现16进制MAC的下拉
一般我们都只会EXCEL进行10进制的下拉自动增长,但是如果是16进制数,如何进行下拉呢? EXCEL截图: 计算公式为:=REPT(0,$C$3-LEN($B$3))&$B$3&REPT(0,$C$4-LEN(DEC2HEX(HEX2DEC($B$4)+ROW(1:1)-1)))&DEC2HEX(HEX2DEC($B$4)+ROW(1:1)-1)解读:...
2018-04-09 16:52:18
10927
原创 SQL高级查询之分组查询
1. GROUP BY假如有如下一张表inoutinfo, status number spend 正在车场 粤BS8120 10 已出车场 粤BS8120 15 已出车场 粤BS8120 20 正在车场 粤BS8121 25 已出车场 粤BS8121 30 已出车场 粤BS812...
2018-04-09 14:10:03
78330
5
原创 SQL Server 2008中某个字段设置为自动增长后,如何显示插入
--创建表格,pid为自动增长create table Product( pid int not null primary key IDENTITY(1, 1), productname varchar(50), cid int)GO--插入数据insert into Productvalues( 1, '夹克', 1),( 2, '单西', 1),( ...
2018-04-09 11:42:19
2323
原创 三种排序算法(直接插入、冒泡、快速)的C++实现
直接插入基本思想:将整个队列分为有序区和无序区,然后依次从无序区中选择一个数,按大小顺序插入到有序区中去。图解示意如下, 代码实现//从小到大排序void InsertSort(int arr[], int len){ int temp = 0; //作为对比的临时数据 //无序区遍历 for (int i = 1; i < len; i++)...
2018-04-08 11:50:55
625
原创 socket同步通讯客户端和服务端简单实现
客户端// SocketTest.cpp : 定义控制台应用程序的入口点。/**@brief 同步socket客户端流程:初始化,创建socket,连接服务器,发送,接收*/#include "stdafx.h"#include <iostream>#include <Winsock2.h>#pragma comment(lib, "ws2_32.li...
2018-04-07 22:13:44
1846
原创 获取WORD的高位字节和低位字节
在WinDef.h中有这样两组宏定义:#define LOBYTE(w) ((BYTE)(((DWORD_PTR)(w)) & 0xff))#define HIBYTE(w) ((BYTE)((((DWORD_PTR)(w)) >> 8) & 0xff))LOBYTE(w)的作用是,获取WORD的低位字节;HIBYTE(w)的作用,获取WORD...
2018-04-07 19:14:27
6059
原创 Windows下进程与线程
进程1. 进程的概念进程就是操作系统上一个正在运行的程序的一个实例。由两部分构成:一个内核对象,操作系统用来管理进程;一个地址空间,包含所有可执行文件或DLL模块的代码和数据。另外还包含,动态内存分配(线程堆栈和堆的分配)。2. 线程的概念线程是位于进程中的执行单元,它是CPU调度的基本单元。与进程一样,也包含两个部分:内核对象,操作系统用来管理线程;线程栈, 用...
2018-04-06 00:04:31
979
原创 自定义String类模型
//MyString.h#pragma once#include <iostream>class MyString{public: MyString(const char* str = nullptr); MyString(const MyString& other); MyString& operator=(const My...
2018-04-05 23:10:10
277
原创 strcpy函数在VS2015中无法使用
微软认为strcpy函数的安全性比较差,容易出现内存泄露,所以强制要求使用strcpy_s函数代替strcpy函数。但是,微软还是提供了使用strcpy的办法,根据错误提示:“To disable deprecation , use _CRT_SECURE_NO_WARNINGS”,意思是我们可以不进行兼容性检查,常见的两种解决方法: 1. 我们可以在项目-属性-配置属性-c/c++-预处理器-...
2018-04-05 22:36:29
4429
原创 C++实现单向链表的增加、删除、读取功能
链表相比于数组的优势有: 1. 增加和删除元素效率非常高; 2. 可以不需要预先知道存储元素的数量。 相比于数组的劣势有: 1. 查找元素的效率低; 2. 由于存储额外节点指针,带来的空间消耗。采用C语言形式实现插入和删除两个函数//插入元素bool InsertNode(Node* p, int index, int data){ Node* pCur = p;...
2018-04-05 22:16:45
2354
原创 从Qt Console Application到Qt GUI Application
在桌面开发中,总的来说,包含两种类型的应用程序:无界面的Console程序和有界面的GUI程序。Qt也不例外,包含Qt Console Application和Qt GUI Application。一、Qt Console Application在VS2015中创建一个Qt Console Application,默认会生成一个main.cpp源文件,代码如下,#include &...
2018-04-02 21:53:15
7224
转载 VS2015安装破解版Visual Assist X
VS2015安装破解版Visual Assist X原文地址:http://www.chinapyg.com/thread-79995-1-1.html下载资源和谐补丁仅支持官方原版,若使用其他破解版请先卸载后安装VAX官方原版。 如何卸载VAX: VS菜单 [工具>>扩展和更新>>点击(Visual Assist)>>卸载] VA_X云盘下载...
2018-03-31 20:17:20
30745
4
原创 VS2015中添加QT5.9.0插件
VS2015中添加QT5.9.0插件下载资源VS2015中文版32位百度云盘下载地址,提取密码:7k6s QT5.9.0 windows 32位下载地址,提取密码:gpym软件安装VS2015安装,按照提示安装即可。QT5.9.0安装的时候,记得把“msvc2015”和“msvc2015_64”安装上,如下图所示, 环境搭建打开VS2015,在菜单栏中选择“...
2018-03-31 13:47:49
14514
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人