- 博客(55)
- 资源 (7)
- 收藏
- 关注
原创 windows 线程一般用法
目录一. 线程说明1. 概念 2. 线程与进程 3. 执行二. windows下的各种线程 1. win32线程 (1) CreateThread (2) _beginthreadex (3) 如何选择使用哪个线程函数 2. mfc线程 (1) 工作线程:AfxBegin...
2021-07-27 01:44:26
1536
原创 常见设计模式
一. 用于创建对象的设计模式1. 工厂模式 (1) 说明:需要生产大量对象,且对象具有多态特性。 (2) 类图结构 (3) 工厂模式分为"简单工厂"和"抽象工厂",这里说一下抽象工厂,eg, 要生产不同品牌的电池,简单工厂就能解决,如果还要生产不同品牌的主板呢?那么就需要再增加一个工厂类来生产,抽象工厂类就是这么来的。 (4) 实际工程中,工...
2021-07-19 23:29:17
547
原创 SQL server + Hyper-V配置安装
一. Hyper-V安装win7系统 1. 安装虚拟机原因:在虚拟机上安装和配置SQL server,把它当作数据库服务器,本地系统环境编写客户端,实现简单的连接和操作请求; 2. 虚拟机有很多,比如我们常用的VMware(收费), 选择Hyper-V是因为懒,win10系统自带虚拟机Hyper-V,这样就不用去下载了。 3. Hyper-V安装步骤: (1) 打开“控制面板”------“程序和功能”------“启用和...
2021-07-15 15:41:18
917
原创 python3.9 + vs2013环境配置
1. python下载地址:https://www.python.org/downloads/ 安装时最好自定义安装,方便配置vs环境2. vs插件下载地址:https://github.com/Microsoft/PTVS/releases/v2.2.2 默认安装就好了3. vs 配置新建python项目对着"python Environments"右键,选择"view all python Environments" 进入界面 选择"config", 然后根据自己安装的p..
2021-07-11 09:27:48
450
原创 qt5.7 + vs2013配置
1. qt下载qt官方地址:https://www.qt.io/zh-cn/download 有收费也有开源,根据需求选择 如果线上安装速度慢或一直网络错误的可以下载完整包:https://download.qt.io/new_archive/qt/ 我们要集成到VS,所以选择:qt-opensource-windows-x86-msvc2013_64-5.7.0.exe2. vs插件下载下载地址:https://marketplace.visualstudio.com/searc...
2021-07-10 19:42:05
634
原创 gdi编程基础
一. DC 1. 概念 设备上下文:通俗来说就是,我们在绘图时用来响应软,硬件消息的媒介。MFC为我们封装了CDC类,那我们就结合MSDN来学习,就显得不会那么乱了。 2. CDC,CPaintDC, CClientDC, CWindowDC,CMetaFileDC CDC:DC的基类。 CPaintDC:跟进下源代码,发现本质上调用了BeginPaint()和E...
2021-07-08 16:38:56
3562
原创 MFC小例子说明
一. 枚举窗口EnumDialog1. 枚举方式 (1) 方式一:GetWindow HWND hChildWnd = ::GetWindow(GetDesktopWindow()->GetSafeHwnd(), GW_CHILD); while (hChildWnd) { //Do something hChildWnd = ::GetWindow(hChildWnd, ...
2021-07-05 13:51:22
1345
原创 MFC基础控件说明
目录一. button 控件 1. CButton类 2. CSplitButton类3. CMFCButton类4. CMFCColorButton类5. CMFCMenuButton类 6.CRadioButton类 7. CCheckBox类二. StaticText 1. CStatic类 2.CLinkCtrl类三. ...
2021-07-03 00:33:09
3981
2
转载 makefile的使用
参考资料:https://blog.youkuaiyun.com/zong596568821xp/article/details/81134406
2021-03-03 21:10:03
132
1
原创 观察者模式的通用性调用
1.通用框架接口#ifndef _OBSERVERIMP_H__#define _OBSERVERIMP_H__#include "stdafx.h"#include <map>#include <vector>template <typename ReturnT, typename ParamT>class ReceiverImplBase;template <typename ReturnT, typename ParamT>c
2021-02-25 02:31:48
345
原创 vlc + Duilib编写本地播放器
一.vlc部分 1.vlc的环境搭建:https://blog.youkuaiyun.com/zhoumin4576/article/details/78166198 2.vlc的功能封装主要参考了Alberl大神封装的代码:https://www.cnblogs.com/Alberl/p/3407726.html 3.对vlc部分没有读过源码,只是使用了其简单的功能实现,在实现过程中也遇到了一些问题,在这里进行说明: (1)如果播放一个较大的文件,退出时要等待很长时间:强制指定demu...
2020-12-21 16:24:02
808
原创 std::chrono获取UTC
1.durationduration:自定义时间间隔单位 std::chrono::hours hs(2);//2小时 std::chrono::minutes mns(4);//4分钟 std::chrono::seconds ss(1);//1秒钟 std::chrono::milliseconds mls(5);//5毫秒 std::chrono::microseconds mcs(7);//7微秒 std::chrono::nanoseconds nns(8);//8纳秒du
2020-11-30 22:14:02
2067
原创 STL比较常见的算法
头文件:#include <algorithm> sort:数列排序=============is_sorted:是否按规则排序 std::vector<int> vecArray = { 4, 1, 6, 9, 3, 1, 4 }; std::sort(vecArray.begin(), vecArray.end());//1, 1, 3, 4, 4, 6, 9 默认升序 std::sort(vecArray.begin(), vecArray.end(), [](int
2020-11-25 17:28:22
271
1
原创 async替代线程函数
async原型:template<class Fn, class... Args>future<typename result_of<Fn(Args...)>::type> async(launch policy, Fn&& fn, Args&&...args);线程创建策略:std::launch::async 实时创建线程====================std::launch::deferred 延迟创建线程,直到..
2020-11-25 01:47:55
204
原创 可变模板参数
基本语法: template <typename... T>void f(T... args); 参数个数: template<typename... T> void PrmCount(T... Prm) { printf("prm count:%d \n", sizeof...(Prm)); } 参数包的展开:递归方式和逗号表达式 (1)递归方式:参数包展开的函数和一个递归终止函数,两个条件必须满足 template<ty...
2020-11-24 13:51:40
212
原创 move和forward完美转发
产生条件:一个右值引用参数作为函数的形参,在函数内部再转发该参数的时候它已经变成一个左值------>std::move和std::forward应运而生; move vs forward:move----->无条件转换为右值;forward----->保持原参数属性,即完美转发; 举例说明:#ifndef _TRANS_H__#define _TRANS_H__#include "stdafx.h"class CTrans{public: template<
2020-11-16 16:41:04
598
原创 元组:tuple
元组tuple:make_pair的泛化,固定大小不同类型值集合的容器,基本功能跟结构体相似;但又不仅仅限于此,配合模板编程可以生成强大的组件; 赋值: //方式1 std::tuple<int, int, std::string> tuData1(1, 2, "35");//直接赋值 //方式2 std::tuple<int, int, std::string> tuData2; tuData2 = std::make_tuple(1, 2, "abc");取值:
2020-11-16 02:48:00
128
原创 初始化列表:initializer_list
变长容器STL的初始化:本质是依赖initializer_list的模板类来实现。 std::vector<int> vecArray = {2, 3, 4, 5, 6}; std::map<std::string, int> mapArray = { {"张三", 4}, {"李四", 6}, {"孙六", 7} };成员:size(), begin(), end(); 构造或成员函数初始化入参#include "stdafx.h"#include <ini
2020-11-13 16:37:48
268
原创 别名using和typedef
定义一个map:一个key需要映射两个value---------typedeftypedef std::map<std::string, int> mapList;typedef std::map<std::string, std::string> mapList1;使用模板类:-------------typedeftemplate<typename T>struct ST_MAP{ typedef std::map<std::string,
2020-11-10 02:47:55
121
原创 自动类型推导(auto,decltype)
auto:在编译时期确定待定义的变量类型;decltype:在编译时期推导一个表达式(不一定要定义)的类型(在满足auto功能的基础上) 应用场景:多用在泛型编程应用中(stl,模板等) typeDerivate.hpp#ifndef _TYPEDERIVATE_H__#define _TYPEDERIVATE_H__#include "stdafx.h"#include <vector>class CTypeDerivate{public: void Func()
2020-11-10 02:04:28
352
原创 文件拖放
1.MFC的文件拖放:https://blog.youkuaiyun.com/zhoumin4576/article/details/1029262172.win32文件拖放:https://blog.youkuaiyun.com/leehong2005/article/details/86094783.Duilib文件拖放思路:https://blog.youkuaiyun.com/Skilla/article/detai...
2020-04-19 13:45:42
191
原创 windows高DPI总结
windows的高DPI的一些总结:https://blog.youkuaiyun.com/chenlycly/article/details/53142098
2020-04-17 19:46:49
804
原创 C++11 右值引用
1.识别方法:可对表达式用“&”取值,为左值;否则,为右值。左值可以看作是“对象”,右值可以看作是“值”。左值和右值的区分int iVar;iVar = 5;//(iVar + 3) = 7; 解析:iVar是临时变量,&iVar可获取到地址,在寄存器上有确定的存储地址,直到离开作用域时,才销毁! &(iVar +...
2020-01-10 03:25:33
174
原创 C++11 lambda表达式
1.作用:可以方便的定义和创建匿名函数,以更直接的方式去写程序,具有更好的可读性和可维护性。2.语法形式:[ capture ] ( params ) -> ret { body }3.变量捕获:[] 不截取任何变量[&} 截取外部作用域中所有变量,并作为引用在函数体中使用[=] 截取外部作用域中所有变量,并拷贝一份在函数体中使用[=, &foo] 截取外...
2020-01-08 06:12:21
287
原创 C++11:function和bind
1.std::function 作为函数,函数对象,函数指针和成员函数的包装器 #include <functional>普通函数void Test(){ printf("Test Call\n");}... ...std::function<void()> pfnTest = Test;pfnTest();成员函数:需要...
2020-01-08 05:09:10
366
原创 智能指针
C++11引用了智能指针来解决内存泄漏的问题,特别在大型项目中new和delete频繁使用后,导致后期维护成本的持续走高。智能指针可以很好解决这一问题,但智能指针的使用也存在一些陷阱,只有熟练使用之后才能让它成为利器。为了更好地反应问题现象,先封装一个检测内存泄漏的API来进行测试,下面就shared_ptr,unique_ptr,weak_ptr进行说明。内存检测api#ifndef _...
2019-12-26 19:58:44
589
原创 新增关键字default, delete, final, override
详细说明:https://www.ibm.com/developerworks/cn/aix/library/1212_lufang_c11new/index.html
2019-12-24 12:40:51
170
原创 模板类的使用
1.目的:使用模板的目的就是能够让程序员编写与类型无关的代码。 注:模板的声明或定义只能在全局,命名空间或类范围内进行。2.通式:class 或 typename类:template<class形参名,class形参名,…>class类名{ ... }; 函数:template<class形参名,class形参名,......>返回...
2019-12-18 20:22:45
1715
原创 C++ 内存泄漏的处理
关于C++ 的内存泄漏问题一直是项目后期调试时的拦路虎,特别是项目的深度扩展和迭代,造成大量的内存问题。1.使用vld可以比较精准地定位到内存泄漏的程序申请点,方便快速处理问题; 缺点是当项目的new或mallolc调度深度太大时,直接无法检测到内存泄漏,小项目可以,大项目不推荐用 关于VLD的安装和使用请参考:https://blog.youkuaiyun.com/hust_bochu_xuch...
2019-11-24 00:16:03
587
原创 C++ 工厂模式的一点构想
1.工厂需求2.代码实现schoolfactory.h#ifndef _SCHOOLFACTORY_H__#define _SCHOOLFACTORY_H__#include <map>#include <vector>#include <string>class CSchool;typedef CSchool* (*Creat...
2019-11-14 18:30:45
171
原创 C++ mysql的安装和使用
1.mysql的安装和密码修改:https://blog.youkuaiyun.com/qq_41848006/article/details/882959732.cmd使用“管理员身份”登陆dos: cd E:\mysql-8.0.11-winx64\bin,常见操作:登陆操作流程:1.打开网络:net start mysql2.登陆数据库:mysql - u root - p3.输入...
2019-11-06 18:26:09
692
原创 ini配置文件
1.适合作为界面的配置文件(小)使用。2.原子操作读写文件函数,具体如下:#define SETPRM_INI_PATH_EX _T(".//setParam.ini")#define WRITE_INI_FILE(mod, wid, str)\do {\ CString strWidgetID;\ strWidgetID.Format(_T("%d"), wid);\ ::...
2019-11-06 09:14:36
218
原创 给控件添加文件或文件夹拖放功能
1.控件“属性”的“消息列表”给WM_DROPFILES添加消息处理函数OnDropFiles2.在函数void CImgAnalysis::OnDropFiles(HDROP hDropInfo)中获取文件的路径void CImgAnalysis::OnDropFiles(HDROP hDropInfo){ CString strFilePath; m_vectorFilePat...
2019-11-05 22:59:38
371
原创 tinyxml2使用的基本方法
1.tinyxml2的下载和维护地址:https://github.com/leethomason/tinyxml22.要使用的文件tinyxml2.h和tinyxml2.cpp,下面做了一下简单的封装,目前项目够用注意:tinyxml2里的指针返回全部使用的"0",而非"nullptr",所以检测指针是否为空时用“0”来判断xml.h#ifndef _XML_H__#defi...
2019-11-05 19:51:29
904
原创 MFC使用button选择文件(夹)的实现
1.打开文件 CFileDialog ObjFile(TRUE, NULL, NULL, OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY,_T("图片文件(*.png; *.jpg; *.jpeg; *.bmp)|*.png; *.jpg; *.jpeg; *.bmp|所有文件(*.*)|*.*||"), NULL); if (IDOK == ObjFile...
2019-10-29 04:41:47
1431
原创 字符间的相互转换
1. CString 与 char *的转换/*-=======================CString==>char *==========================*/ USES_CONVERSION; CString strData = _T("abcdedfg"); char *pcData = T2A(strData.GetBuffer(0)); //安全转...
2019-10-22 16:14:19
151
原创 下位机下的UTC与本地时间的转换
time.h#ifndef __TIME_H_#define __TIME_H_/*#ifdef __cplusplus extern "C" {#endif */#ifdef WIN32#include <windows.h>#endiftypedef unsigned char uint8_t;#define DEF_MIN...
2019-10-22 09:45:36
438
原创 linux下带超时控制的消息队列模板
#ifndef _MSGQUEUE_H__#define _MSGQUEUE_H__#include "./Protocol/Common.h"#if WIN32#include <Queue>#else#include <queue>#include <time.h>#include <semaphore.h>#endif...
2019-10-22 07:27:40
672
原创 Linux下的调试宏
在linux下与下位机进行调试#ifndef _DEBUG_H__#define _DEBUG_H__#include <time.h>#include <stdio.h>#define TIME_SAVE_SIZE (28)#define FILE_PREFIX_SIZE (65)#define DEBUG_BUF_SIZE (4096)#de...
2019-10-22 07:21:57
422
原创 MFC添加控制台
MFC添加控制台:在循环多线程运行调试时,添加打印信息1.申请控制台/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ FILE *pStdIn = NULL; FILE *pStdOut = NULL; //申请控制台 AllocConsole();...
2019-10-20 11:21:24
479
Desiger.rar
2021-07-19
EnumDialog.rar
2021-07-05
ZMplayer.rar
2020-12-21
vlc + duilib + vs2013
2020-12-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人