C++
走好每一步
读万卷书,行千里路。
展开
-
c++类添加一个成员变量导致异常
修改成非初始化列表,并且安装类成员变量赋值,一切恢复正常!最终反复看了代码,发现c++初始化列表和构造函数内部赋值混用了!怀疑是库编译没及时更新,重新全编译还是单步到读取成员变量值崩溃。反复看了我的成员变量,添加都是符合规则的。而且初始化列表没按照类成员变量的顺序。原创 2023-02-20 11:33:07 · 435 阅读 · 0 评论 -
2种把子窗口的消息传给父窗口处理的办法
把消息回传给父窗口,返回TRUE,子窗口不做消息处理,如下例子,把滚轮的消息抛回去给父窗口处理。通过PostMessage或者SendMessage传送回给父窗口。这种网上文章太多了,这里不再展开。原创 2022-09-30 16:20:12 · 906 阅读 · 0 评论 -
CFormView和CScrollView动态设置滚动条
另外,view下创建的对话框尺寸也需要MoveWindow大于客户区尺寸。当Scroll的尺寸大于客户区尺寸时,滚动条就会出现。这样就实现了滚屏的效果。原创 2022-09-29 14:37:27 · 431 阅读 · 0 评论 -
IT生涯随笔
但是我总感觉编程是个别扭的活,因为我英文不是特别好,而且属于逻辑思维能力强,记忆力特别差的人,敲代码的时候经常打错字,或者是打漏一些标点符号,所以我编程的过程,大部分时间都是在纠正自己错误,而并不是编程本身。所以笔者看来,假如你看经典的书籍产生疑惑,困扰时,你不如找一个稍有规模的项目,参与进去,踏踏实实干个2~3年,你会发现许多别人一直强调的东西,是如此的真知灼见!我还记得当初安卓刚活起来的时候,很多人只是去参加了十来天的培训班,就敢开价10k一个月,甚至更高,你说他编程的水平有多高,这倒是不见得!...原创 2022-07-23 16:03:05 · 200 阅读 · 0 评论 -
VS2012 编译mupdf v1.1
MuPDFMuPDF - the lightweight PDF, XPS, and E-book viewerhttps://www.mupdf.com/releases/index.html 原本工程是VS2010的工程,会提示升级,点确认升级即可原创 2022-07-12 15:47:32 · 415 阅读 · 0 评论 -
MFC CString 陷阱
MFC CString的陷阱 重载运算符 += 陷阱原创 2022-07-11 11:32:30 · 274 阅读 · 0 评论 -
MFC对话框对控件失去焦点和获取焦点的统一处理,WM_KILLFOCUS消息失败
如上图,我实现了WM_KILLFOCU的映射,但是对话框除了第一次会进去下面的消息函数后,再也没有进来过来我在对话框上摆放的Edit控件失去焦点也不会进来 后面无意中看到一篇文章,正确的处理方式应该是这样重载虚函数,OnCommand 所有编辑控件的获取焦点和失去焦点,上面都可以监控到了同理,监控按钮的获取焦点和失去焦点就是BN_SETFOCUS和BN_KILLFOCUS......原创 2022-06-10 16:08:49 · 2876 阅读 · 1 评论 -
c++无参构造调用有参构造陷阱
不能在构造函数体中调用其他的构造函数,这等于是临时构造了一个Teacher后又丢弃了它。可以使用默认参数来实现无参构造函数调用有参构造函数#include <iostream>using namespace std;class Base{public: Base() { cout<<"construct Base"<<endl; } ~Base() { cout<<"distruct Base"<<endl;原创 2022-03-31 11:47:35 · 1530 阅读 · 0 评论 -
使用openssl实现AES CBC 128 pcks7加密
1、参考代码openssl evp 对称加密(AES_ecb,ccb) - cocoajin - 博客园//加密int kk_encrypt(unsigned char *plaintext, int plaintext_len, unsigned char *key, unsigned char *iv, unsigned char *ciphertext){ EVP_CIPHER_CTX *ctx; int len; int cip原创 2022-01-07 17:27:16 · 1985 阅读 · 0 评论 -
MFC GDI+入门
1、GDI和GDI+区别GDI GDI+ 的区别 - DoubleLi - 博客园GDI+是GDI的下一个版本,它进行了很好的改进,并且易用性更好。GDI的一个好处就是你不必知道任何关于数据怎样在设备上渲染的细节,GDI+更好的实现了这个优点,也就是说,GDI是一个中低层API,你https://www.cnblogs.com/lidabo/p/3701252.html2、MFC 初始化GDI+MFC 初始化 GDI+_jiangqin115的专栏-CSDN博客1. 在stdafx.h文件中原创 2021-12-17 11:38:13 · 2019 阅读 · 0 评论 -
AES cbc加密开源库收集
1、openssl加密OpenSSL中AES加密的用法 - 游蓝海2017 - 博客园《OpenSSL中AES加密的用法》 作者: 游蓝海 原文链接: http://blog.csdn.net/you_lan_hai/article/details/50992719 转载请注明出处使用https://www.cnblogs.com/ygxsk/p/7693978.html...原创 2021-12-14 15:19:15 · 2967 阅读 · 0 评论 -
c++http和https
libcurl连接http非常简单C++使用libcurl做HttpClient_星空漫野-CSDN博客_c++ libcurl当使用C++做HTTP客户端时,目前通用的做法就是使用libcurl。其官方网站的地址是http://curl.haxx.se/,该网站主要提供了Curl和libcurl。Curl是命令行工具,用于完成FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP的命令的请求及接收回馈。libcurl提供给开发者,用于使用C原创 2021-10-29 15:18:37 · 1379 阅读 · 0 评论 -
VS打开项目卡顿的解决方案,正在扫描#includes 寻找其他文件
Menu->Tools->Options->TextEditor->C/C++->AdvancedDisableIntelliSense设为TrueVA source of c/c++ content原创 2021-01-27 13:49:46 · 709 阅读 · 0 评论 -
Linux 使用system不安全,有时触发,有时不触发,替代函数如下
int my_system(const char * cmd){ FILE * fp; int res = 0; char buf[1024] = {0}; if (cmd == NULL) { printf("my_system cmd is NULL!\n"); return -1; } if ((fp = popen(cmd, "r") ) == NULL) { perror("p.原创 2020-09-25 19:54:01 · 650 阅读 · 0 评论 -
QtChart x坐标轴是时间坐标
#pragma execution_character_set("utf-8")#pragma once#include <QWidget>#include <QtCharts>#include "ui_QtChartTimeAxis.h"#include <QDateTime>#include <QDateTimeAxis>class QtChartTimeAxis : public QWidget{ Q_OBJECTpublic.原创 2020-08-28 17:13:27 · 6615 阅读 · 1 评论 -
linux精确分析函数运行时间
网上大部分用clock函数,在线程中计算某个函数运行时间,很不精确#ifndef PROFILER_H#define PROFILER_H#include <time.h>#include <sys/time.h>#include <stdio.h>#include <stdlib.h>class profiler{public: profiler(const char* func_name) {原创 2020-07-31 13:58:18 · 387 阅读 · 0 评论 -
MFC 查找文件夹内指定后缀的文件名
vector<CString> FindFiles(const CString dir, const CString ext = _T("yuv")){ vector<CString> fileList; CString strFileToFind; strFileToFind.Format(_T("%s\\*.%s*"), dir, ext);...原创 2020-01-16 12:15:57 · 1322 阅读 · 0 评论 -
多线程无锁循环队列
转自:https://blog.csdn.net/weixin_40825228/article/details/807838601、Lamport提出的无锁SPSC队列。在其论文【论文】中证明了,在遵守【顺序一致性】内存模型的计算机中,单生产者单消费者(SPSC)先进先出队列中的锁是可以去除的,从而得到了一个无锁队列,并第一次给出了并发无锁先进先出(Concurrent Lock-fre...转载 2018-08-04 11:22:14 · 2060 阅读 · 0 评论 -
推荐书籍
C++ PrimerC++ 设计语言(特别版)大规模C++程序设计Head First JavaHeadFirst设计模式HP-Socket-TCP-&-UDP-通信框架开发指南windows程序设计(第五版)大话设计模式代码大全重构_改善既有代码的设计走出软件作坊...原创 2019-02-19 14:32:14 · 112 阅读 · 0 评论 -
C++获取指定目录下的所有文件
转自:https://www.jb51.net/article/116009.htm需要包含的头文件#include <io.h> #include <string> #include <vector> #include <fstream>转载 2019-07-18 16:18:03 · 1520 阅读 · 0 评论 -
Effective C++ 自己不足的地方摘要
08、别让异常逃离析构函数~A(){ 这里吐出异常}DoSomethins{vector<A> vec; // 好多个对象析构, 实际因为异常只释放了一个}09、不要在构造、析构函数里调虚函数11、operate=处理自我赋值不注意的话,很有可能把内容给删掉13、提倡使用智能指针来管理开辟内存auto_ptr,sha...原创 2019-09-09 10:37:31 · 120 阅读 · 0 评论 -
QT保存文本为ANIC和Unicode
原创 2019-09-17 16:24:08 · 674 阅读 · 0 评论 -
C++ 日志 log
//可按日期生成多个日志, 还可分年月日频率生成文件名//这个代码我用工业现场24X7值守的程序纪录各种信息, 简单易用;//一般用一个全局日志对象, 有临界排斥可以多线程安全使用。//有两个类//class LogFile;//用户定义日志文件名//class LogFileEx;//有日志文件名自动生成功能 , 可分年月日频率生成文件名, 可指定日志存放的目录//LogFile转载 2016-09-10 09:25:47 · 2808 阅读 · 0 评论 -
c++虚函数实现原理
前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不...转载 2018-08-04 09:09:24 · 6665 阅读 · 3 评论 -
TabCtrl重载
#pragma once#include <list>// CTabCtrlExclass CTabCtrlEx : public CTabCtrl{ DECLARE_DYNAMIC(CTabCtrlEx)public: CTabCtrlEx(); virtual ~CTabCtrlEx();public: int currentIndex() { ret...原创 2018-05-04 08:24:53 · 247 阅读 · 0 评论 -
C#调用c动态库,Java调用c动态库
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Runtime.InteropServices;namespace TestDll{ class Program {原创 2018-01-26 19:40:29 · 507 阅读 · 0 评论 -
MFC dll 类型是 共享 规则 导出对话框函数使用出错解决办法
这是因为资源没有切换的原因, 可以用下面的代码切换, 如果规则是静态和扩展dll,就不存在需要切换资源的问题,原因暂时未深究HINSTANCE oldInstance = AfxGetResourceHandle();HINSTANCE hInst = GetModuleHandle(_T("..//Debug//Dll2.dll"));AfxSetResourceHandle原创 2017-02-15 10:55:39 · 509 阅读 · 0 评论 -
MFC MainFrame中的 OnShowWindow一个bug
由于bcg的记忆功能,导致保存框架状态后,MainFrame中的 OnShowWindow只在关闭程序的时候响应了。正常应该是打开程序响应一次,关闭程序响应一次才对的。需要做界面的更改,请把相关函数移到 Create函数中。原创 2017-01-22 10:43:46 · 988 阅读 · 0 评论 -
VC连接SQLite3的方法(MFC封装类) 一个bug
资源在CSDN里搜索http://download.csdn.net/detail/akof1314/2753306DbSqlite封装确实好用,但是有个致命的错误。MFC设置为Unicode的时候, Bind文本的时候修正如下boolCSqlStatement::Bind(int pos_zero_indexed, LPCTSTR value){ bo原创 2017-01-10 11:38:39 · 717 阅读 · 0 评论 -
CLog做了些许改进
对CLog做了一些改进andy 2016-9-11 shenzhen原文来自:http://blog.csdn.net/sunflover454/article/details/49758801// Main.cpp : Defines the entry point for the console application.//#include "stdafx.h"#i原创 2016-09-11 17:14:40 · 651 阅读 · 0 评论 -
base64编码和aes加密和解密配置文件
如果需要加密配置文件,或者某些文件的,请到上面gitub上去下。有什么意见,大家提一下。采用的base64加上AES16字节秘钥加密,安全非常高,比较实用的程序,接口也很简单。#pragma onceenum EncError{ ENC_OK = 0, ENC_FILE_ERR = 1, ENC_MEMORY_ERR = 2,};//---------------原创 2016-08-25 02:25:40 · 1635 阅读 · 0 评论 -
sscanf的用法误区 导致越界访问
struct DATA{BYTE a;BYTE b;BYTE c;BYTE d;};char *str = "fd";DATA data;sscanf(str, "%02x", &data.a);乍一看,程序没有什么毛病,笔者测试发现,上面这段程序实际上已经导致结构体变量b,c,d都被操作赋值了。原因在于sscanf的参数为"%d" "%x"原创 2015-07-29 15:20:21 · 4827 阅读 · 4 评论 -
如何理解回调函数 CallBack
如果是初次接触Windows程序的人,一般理解回调函数觉得非常困难,笔者下面非常简单的程序剥开回调函数的真面目。笔者使用的编译器是VS2008,所以有这行代码 #include "stdafx.h",// TestConsole.cpp : Defines the entry point for the console application.//#include "stda原创 2016-05-05 11:00:26 · 1296 阅读 · 0 评论 -
线程同步的3种实现方法 互斥对象 临界资源 事件对象
给懒的重新打代码的人用。原创 2015-05-22 13:37:26 · 729 阅读 · 0 评论 -
CWinApp::SetRegistryKey 路径后面加了工程名 如何修改
用记事本开 .rc文件把这个宏定义改成 AFX_IDS_APP_TITLE NewApp假如你SetRegistryKey("Test")那么GetProfileInt的路径就是 HKEY_CURRENT_USER\Software\Test\NewApp原创 2017-02-16 10:44:53 · 473 阅读 · 0 评论 -
VC++ 防火墙 Win7 XP MFC
// Firewall.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include #include #pragma comment( lib, "ole32.lib" )#pragma comment( lib, "oleaut32.lib"原创 2016-09-20 01:38:18 · 2266 阅读 · 2 评论 -
MFC Unicode文件读取 分割字符串
MFC Unicode文件读取 分割字符串原创 2017-03-10 09:36:29 · 556 阅读 · 0 评论 -
QT html转excel
#include "mainwindow.h"#include "ui_mainwindow.h"#include #include #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this);转载 2017-11-04 18:42:28 · 602 阅读 · 0 评论 -
QT中文乱码的本质
相关文章:http://blog.csdn.net/dbzhang800/article/details/7542672如果你使用的是QT5以上的编译器,恭喜你,你几乎不会遇到中文乱码这个问题。如果你使用的是VS + QT的方式,那应该会遇到的这个问题。QT5新建一个cpp文件,默认的文件编码是UTF-8 (如果对文件编码不熟悉的人,可以下一个UltraEdit,切换下编码保存原创 2017-11-12 17:17:04 · 274 阅读 · 0 评论 -
c++ 判断json字符串是否有效。
bool IsJsonData(std::string strData){ if (strData[0] != '{') return false; int num = 1; for (int i=1; i<strData.length(); ++i) { if (strData[i] == '{') { ++num; } else if (strData[i原创 2017-06-29 00:14:35 · 4824 阅读 · 2 评论