自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 资源 (7)
  • 收藏
  • 关注

原创 windows 线程一般用法

目录一. 线程说明1. 概念 2. 线程与进程 3. 执行二. windows下的各种线程 1. win32线程 (1) CreateThread (2) _beginthreadex (3) 如何选择使用哪个线程函数 2. mfc线程 (1) 工作线程:AfxBegin...

2021-07-27 01:44:26 1449

原创 常见设计模式

一. 用于创建对象的设计模式1. 工厂模式 (1) 说明:需要生产大量对象,且对象具有多态特性。 (2) 类图结构 (3) 工厂模式分为"简单工厂"和"抽象工厂",这里说一下抽象工厂,eg, 要生产不同品牌的电池,简单工厂就能解决,如果还要生产不同品牌的主板呢?那么就需要再增加一个工厂类来生产,抽象工厂类就是这么来的。 (4) 实际工程中,工...

2021-07-19 23:29:17 459

原创 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 677

原创 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 365

原创 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 556

原创 gdi编程基础

一. DC 1. 概念 设备上下文:通俗来说就是,我们在绘图时用来响应软,硬件消息的媒介。MFC为我们封装了CDC类,那我们就结合MSDN来学习,就显得不会那么乱了。 2. CDC,CPaintDC, CClientDC, CWindowDC,CMetaFileDC CDC:DC的基类。 CPaintDC:跟进下源代码,发现本质上调用了BeginPaint()和E...

2021-07-08 16:38:56 3304

原创 MFC小例子说明

一. 枚举窗口EnumDialog1. 枚举方式 (1) 方式一:GetWindow HWND hChildWnd = ::GetWindow(GetDesktopWindow()->GetSafeHwnd(), GW_CHILD); while (hChildWnd) { //Do something hChildWnd = ::GetWindow(hChildWnd, ...

2021-07-05 13:51:22 1101

原创 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 3632 2

转载 makefile的使用

参考资料:https://blog.csdn.net/zong596568821xp/article/details/81134406

2021-03-03 21:10:03 101 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 308

原创 vlc + Duilib编写本地播放器

一.vlc部分 1.vlc的环境搭建:https://blog.csdn.net/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 673

原创 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 1854

原创 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 211 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 165

原创 可变模板参数

基本语法: 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 172

原创 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 554

原创 元组: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 89

原创 初始化列表: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 222

原创 别名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 88

原创 自动类型推导(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 273

原创 文件拖放

1.MFC的文件拖放:https://blog.csdn.net/zhoumin4576/article/details/1029262172.win32文件拖放:https://blog.csdn.net/leehong2005/article/details/86094783.Duilib文件拖放思路:https://blog.csdn.net/Skilla/article/detai...

2020-04-19 13:45:42 151

原创 windows高DPI总结

windows的高DPI的一些总结:https://blog.csdn.net/chenlycly/article/details/53142098

2020-04-17 19:46:49 526

原创 C++11 右值引用

1.识别方法:可对表达式用“&”取值,为左值;否则,为右值。左值可以看作是“对象”,右值可以看作是“值”。左值和右值的区分int iVar;iVar = 5;//(iVar + 3) = 7; 解析:iVar是临时变量,&iVar可获取到地址,在寄存器上有确定的存储地址,直到离开作用域时,才销毁! &(iVar +...

2020-01-10 03:25:33 128

原创 C++11 lambda表达式

1.作用:可以方便的定义和创建匿名函数,以更直接的方式去写程序,具有更好的可读性和可维护性。2.语法形式:[ capture ] ( params ) -> ret { body }3.变量捕获:[] 不截取任何变量[&} 截取外部作用域中所有变量,并作为引用在函数体中使用[=] 截取外部作用域中所有变量,并拷贝一份在函数体中使用[=, &foo] 截取外...

2020-01-08 06:12:21 216

原创 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 317

原创 智能指针

C++11引用了智能指针来解决内存泄漏的问题,特别在大型项目中new和delete频繁使用后,导致后期维护成本的持续走高。智能指针可以很好解决这一问题,但智能指针的使用也存在一些陷阱,只有熟练使用之后才能让它成为利器。为了更好地反应问题现象,先封装一个检测内存泄漏的API来进行测试,下面就shared_ptr,unique_ptr,weak_ptr进行说明。内存检测api#ifndef _...

2019-12-26 19:58:44 524

原创 新增关键字default, delete, final, override

详细说明:https://www.ibm.com/developerworks/cn/aix/library/1212_lufang_c11new/index.html

2019-12-24 12:40:51 140

原创 模板类的使用

1.目的:使用模板的目的就是能够让程序员编写与类型无关的代码。 注:模板的声明或定义只能在全局,命名空间或类范围内进行。2.通式:class 或 typename类:template<class形参名,class形参名,…>class类名{ ... }; 函数:template<class形参名,class形参名,......>返回...

2019-12-18 20:22:45 1564

原创 C++ 内存泄漏的处理

关于C++ 的内存泄漏问题一直是项目后期调试时的拦路虎,特别是项目的深度扩展和迭代,造成大量的内存问题。1.使用vld可以比较精准地定位到内存泄漏的程序申请点,方便快速处理问题; 缺点是当项目的new或mallolc调度深度太大时,直接无法检测到内存泄漏,小项目可以,大项目不推荐用 关于VLD的安装和使用请参考:https://blog.csdn.net/hust_bochu_xuch...

2019-11-24 00:16:03 543

原创 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 148

原创 C++ mysql的安装和使用

1.mysql的安装和密码修改:https://blog.csdn.net/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 632

原创 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 162

原创 给控件添加文件或文件夹拖放功能

1.控件“属性”的“消息列表”给WM_DROPFILES添加消息处理函数OnDropFiles2.在函数void CImgAnalysis::OnDropFiles(HDROP hDropInfo)中获取文件的路径void CImgAnalysis::OnDropFiles(HDROP hDropInfo){ CString strFilePath; m_vectorFilePat...

2019-11-05 22:59:38 327

原创 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 825

原创 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 1360

原创 字符间的相互转换

1. CString 与 char *的转换/*-=======================CString==>char *==========================*/ USES_CONVERSION; CString strData = _T("abcdedfg"); char *pcData = T2A(strData.GetBuffer(0)); //安全转...

2019-10-22 16:14:19 119

原创 下位机下的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 369

原创 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 566

原创 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 382

原创 MFC添加控制台

MFC添加控制台:在循环多线程运行调试时,添加打印信息1.申请控制台/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ FILE *pStdIn = NULL; FILE *pStdOut = NULL; //申请控制台 AllocConsole();...

2019-10-20 11:21:24 394

threadTest.rar

关于win32,mfc,c++11线程说明

2021-07-30

Desiger.rar

关于C++ 常用设计模式的小例子 ,例子说明:https://mp.csdn.net/mp_blog/creation/editor/118857124

2021-07-19

gditest.rar

gdi编程基础例子

2021-07-08

EnumDialog.rar

MFC小例子: 1. 枚举窗口 2. 按钮激活:利用枚举窗口和EnableWindow实现 3. 星形密码查看器:利用WM_GETTEXT实现 4. 图片浏览器:包含gdi+ 播放. gif例子 5. 模拟键鼠消息:使用SendInput实现 6. 屏幕放大器:gdi编程,StretchBlt 7. 屏幕截图:给未截图区域添加了灰色遮罩 8. 控件提示框:CTooltipCtrl 9. 半透明异形窗口:UpdateLayeredWindow并且能在异形窗口上显示窗口控件 10. 托盘图标:实际QQ闪烁效果,并添加双击弹出,右键菜单功能

2021-07-05

MFCCtrlPlay.rar

把MFC上的所有控件的基本用法进行归纳总结,方便自己使用时查找。

2021-07-03

ZMplayer.rar

release可以查看实现效果 如果编译不通过,须要修改下duilib的生成路径,本人使用了几处环境变量, 主要功能实现如下: 1.基本功能的实现:停止,播放/暂停,快进/快退,音量设置/静音,全屏/取消全屏; 2. 播放屏幕:单击 播放/暂停,双击 全屏/取消全屏; 3.播放屏幕:在屏幕上添加自定义控件及控件响应:eg.鼠标进入:控件显示 -----鼠标离开:控件隐藏 4.实现OLE的文件/文件夹的拖放播放; 5.在播放屏幕和播放列表上分别添加右键菜单(各自只实现了一个示例,须自行扩展)

2020-12-21

vlc + duilib + vs2013

请务必把debug里的skin替换到release,不知道怎么重新上传 如果编译不通过,须要修改下duilib的生成路径,本人使用了几处环境变量, 主要功能实现如下:      1.基本功能的实现:停止,播放/暂停,快进/快退,音量设置/静音,全屏/取消全屏;      2. 播放屏幕:单击 播放/暂停,双击 全屏/取消全屏;      3.播放屏幕:在屏幕上添加自定义控件及控件响应:eg.鼠标进入:控件显示 -----鼠标离开:控件隐藏      4.实现OLE的文件/文件夹的拖放播放;      5.在播放屏幕和播放列表上分别添加右键菜单(各自只实现了一个示例,须自行扩展)。

2020-12-21

空空如也

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

TA关注的人

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