VC and C++
C++语言
sdhongjun
这个作者很懒,什么都没留下…
展开
-
VS2019引入M_PI、M_E、M_LN2等数学常量
`M_PI`、`M_PI_2`、`M_E` VS2019原创 2023-01-18 14:30:41 · 972 阅读 · 0 评论 -
Visual Studio 2022编译时自动显示隐藏输出窗口
显示/隐藏输出窗口用户点击View菜单中的Output项可实现Output窗口的显示与隐藏。编译时输出窗口自动显示设置Visual Studio 2022及其他版本,可能通过Tools->Options窗口中的Projects and Solutions->Show Output window when build start来设置编译时是否自动显示输出窗口。...原创 2022-05-20 16:51:42 · 3598 阅读 · 0 评论 -
C++ parallel_for_each匿名函数引用std::map项
若匿名函数中需要修改std::map项,其匿名函数参数中的key需要增加const关键字void Test(){ std::map<int, bool> mapItems; for (int i = 0; i < 4; ++i) { std::cout << i << std::endl; mapItems[i] = true; } parallel_for_each(mapItems.begin(),原创 2021-08-04 14:05:38 · 659 阅读 · 0 评论 -
Win10下编译libssh2 x86 x64动态库
目录软件准备下载源代码生成DLL文件批处理文件文件下载工程引用DLL文件LIB文件头文件参考资料软件准备编译libssh2需要用到以下软件,请自己准备并安装好。cmake – 生成工具 (2.8以上版本, 注意安装时勾选添加到环境变量项)VS2019 VC++ – 编译器动态库git软件 – 克隆源代码下载源代码使用git软件下载libssh2源代码 https://github.com/libssh2/libssh2生成DLL文件打开"cmd.exe"并切换到libssh2下载文件目原创 2021-03-09 15:27:46 · 3655 阅读 · 0 评论 -
COleDateTime的UTC转换实现
void ConvertDemo() { COleDateTime odtNow = COleDateTime::GetCurrentTime(), odtTmp; SYSTEMTIME stLocal, stUTC, stLocal2; odtNow.GetAsSystemTime(stLocal); //转换为UTC时间 TzSpecificLocalTimeToSystemTime(NULL, &stLocal, &stUTC); odtTmp = stUTC; //原创 2020-10-26 17:59:59 · 500 阅读 · 0 评论 -
全局变量应避免使用非原始类型变量
目录概述问题疑惑参考资料概述在程序中使用非原始类型全局变量,可能会因初始化顺序问题导致软件发生未知错误。问题在JsonCfg.cpp文件中,CJsonCfg类的构造函数设置了全局变量(std::string类型)的值,程序中在其他位置声明CJsonCfg的全局变量,因初始化顺序问题,导致已修改的变量被重新初始化为空。std::string g_sGUID;CJsonCfg::CJsonCfg(){ g_sGUID = MakeGUID();}在其他位置声明CJsonCfg全局变量原创 2020-06-28 16:10:14 · 270 阅读 · 0 评论 -
C++11 wstring与utf-8 转换
UTF-8转换/*************************************************************//* RFC 3629 defines the mapping as follows : * * Char. number range | UTF-8 octet sequence * (hexadecimal) |...转载 2018-03-22 17:29:06 · 7137 阅读 · 0 评论 -
引用Duktape
最近项目中需要使用JS引擎,在经历了V7引擎的正则表达式存在Bug、V8引擎实现多线程操作资源占用太大导致软件崩溃后,从网上找到Duktape引擎。Duktape 引擎对ECMAScript兼容性较好且项目比较活跃,授权协议为MIT。引用Dutape只需要将duktape.h、duktape.c 及duk_config.h 添加到VS工程即可。定义导出类class CLog{p原创 2016-08-21 19:27:30 · 3253 阅读 · 0 评论 -
通过粘贴板获取DOS窗口内容及发送终止消息
获取DOS窗口内容方法1. 将输出转存到文件先将结果保存到文件dir c:\>d:\out.txt然后程序读取指定文件内容2. 通用句柄重定向通过句柄重定向稍复杂一些,需要创建进程前先准备好输入、输出句柄创建进程执行DOS程序周期读取输入句柄的数量 示例代码:CString ExecuteExternalFile(CString csExeName, CString csArgumen原创 2016-08-26 23:44:55 · 1264 阅读 · 0 评论 -
How To Determine When a Page Is Done Loading in WebBrowser Control
https://support.microsoft.com/en-us/kb/180366Retired KB Content Disclaimer This article was written about products for which Microsoft no longer offers support. Therefore, this article is offered “as转载 2016-10-12 21:20:18 · 677 阅读 · 0 评论 -
CExplorer启用XP样式按钮
实现方式若使CExplorer控件启动xp样式按钮,必须借助COleControlSite派生类的IDocHostUIHandler::GetHostInfo函数来实现。HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::GetHostInfo( DOCHOSTUIINFO* pInfo ){ METHOD_PROLOGUE(原创 2016-10-17 21:28:25 · 1141 阅读 · 0 评论 -
V8定义全局对象
1.准备导出C++类class Point{public: Point(int x, int y) : x_(x), y_(y) { } int x_, y_;};2.设置JS访问类成员函数void GetPointX(Local<String> property, const PropertyCallbackInfo<Value>& info)原创 2016-08-07 13:16:01 · 2553 阅读 · 0 评论 -
简化版WinInet封装
CHttpHelper类具有添加附加头、添加Cookie及添加发送数据功能,发送结束后可以读取返回消息头、Cookie及返回消息内容。示例软件截图示例软件下载:打开下载页面HttpHelper.h#ifndef __HTTPHELPER_H__#define __HTTPHELPER_H__// Author : 葛红军// Date : 2016.06.26// Email原创 2016-06-26 20:51:51 · 909 阅读 · 1 评论 -
Base64 编码解码C++实现
Base64编码解码C++实现代码原创 2016-06-27 21:03:17 · 680 阅读 · 0 评论 -
排列组合n选m C++实现
排列组合n选m算法本代码实现http://blog.chinaunix.net/uid-20684578-id-1572099.html所介绍找10组合算法。 算法摘要: 本程序的思路是开一个n长度的数组,其下标表示为0到n-1,数组元素的值为1表示其下标代表的数被选中,为0则没选中,算法过程: -1)初始化,将数组前m个元素置1,表示第一个组合为前m个数 -2)然后从左到右原创 2016-05-22 15:31:55 · 12352 阅读 · 1 评论 -
CListCtrl消除闪烁
1 m_ctrlList.SetExtendedStyle(LVS_EX_DOUBLEBUFFER );2 m_ctrlList.SetRedraw(FALSE);3 更新数据4 m_ctrlList.SetRedraw(TRUE);5 m_ctrlList.Invalide();6 m_ctrlList.UpdateWindow();原创 2016-03-24 21:54:03 · 1042 阅读 · 0 评论 -
Win7 x64无法安装VS2010 SP1包解决方法
删除 HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\VSTO Designtime Setup\ 下的所有内容转载 2016-03-04 21:23:49 · 4970 阅读 · 0 评论 -
去除IE长时间运行脚本提示信息
//去除IE长时间运行Javascript出现提示信息HKEY hKey = NULL;LPTSTR strKey = L"Software\\Microsoft\\Internet Explorer\\Styles";DWORD dwDisp;if ((ERROR_SUCCESS!=::RegOpenKeyEx(HKEY_CURRENT_USER, strKey, NULL, KEY_A原创 2015-12-04 20:54:33 · 4629 阅读 · 0 评论 -
数字字符串四则运算
#include <stdio.h>#include <string>#define ASSERT(b) \ printf("%s : %s\n", #b, b ? "OK" : "Fail");using namespace std;class CNumber{ enum AlignZeroFlag { ALIGN_ZERO_LEFT, //对齐时左侧填原创 2016-01-18 20:08:47 · 863 阅读 · 0 评论 -
大整数相乘
程序思路直接模拟算式运算操作过程,通过嵌套for循环完成两个大整数相乘。bool BigIntMul(const char *num1, const char *num2, char **out){ typedef unsigned short ui16;//分配足够空间存储乘积加和 size_t nLen1 = strlen(num1); size_t nLen2原创 2016-10-28 20:11:40 · 510 阅读 · 0 评论 -
std::wstring_convert处理UTF8
转自:http://www.cppblog.com/mythma/archive/2012/09/11/wstring_convert_utf8.html 扔掉MultiByteToWideChar 吧,使用std::wstring_convert和 std::codecvt_utf8 来处理UTF8与WChar之间的互转。 VC和Clang都支持哦~#include <iostream>#i转载 2017-11-01 16:58:16 · 1956 阅读 · 0 评论 -
C语言实现itoa函数
/* A C++ program to implement itoa() */#include <iostream> using namespace std; /* A utility function to reverse a string */void reverse(char str[], int length) { int start = 0; ...转载 2019-05-26 19:42:29 · 4326 阅读 · 0 评论 -
使用代码关闭CTaskDialog窗口
Basic StepsSet the ·TDF_CALLBACK_TIMER· bit in TASKDIALOGCONFIG::dwFlags. This will invoke a callback (if specified) approximately every 200 ms.Assign a callback function to TASKDIALOGCONFIG::pfCal...转载 2019-04-11 16:43:54 · 370 阅读 · 0 评论 -
C#调用C++动态库回调函数
1.C++动态库导出函数定义typedef void(__stdcall* fnCB)(int);__declspec(dllexport)void __stdcall TestCB(fnCB fn, int val){ fn(val);}注意:需要在.def文件中声明导出函数名称LIBRARYEXPORTS TestCB2.C#调用动态库函数namespa...原创 2019-03-15 21:42:03 · 1256 阅读 · 0 评论 -
utf8与utf16转换
1.UTF8与UTF16编码转换std::string ConvertFromUtf16ToUtf8(const std::wstring& wstr){ std::string convertedString; int requiredSize = WideCharToMultiByte(CP_UTF8, 0, wstr.c_str(), -1, 0, 0, 0, 0...原创 2019-03-14 23:18:59 · 10064 阅读 · 0 评论 -
CComboBox增加水平滚动条
1. 添加WS_HSCROLL样式使用记事本打开.rc资源文件增加WS_HSCROLL样式(VS的资源编辑窗口中无法添加),如下图所示。2.添加如下代码void CXXXDlg::AddHScroll(UINT idComboBox){ CComboBox *pCB = (CComboBox*)GetDlgItem(idComboBox); if (nullptr == ...转载 2018-12-26 15:33:28 · 1061 阅读 · 0 评论 -
vsVim映射jj到<Esc>键
1.打开%USERPROFILE%目录按下Windows徽标键+R组合键在运行界面中输入%USERPROFILE%然后按回车键。2.新建_vimrc文件在%USERPROFILE%目录新建文本文件重命名为_vimrc。3.键入映射操作文本在_vimrc文件中添加如下行:imap jj <ESC>4.运行Visual Studio测试运行V...原创 2018-06-20 16:11:27 · 4731 阅读 · 1 评论 -
多文档视图MFC软件,在软件打开后同时打开不同视图方法
添加不同视图文档模板在XXX.h头文件添加变量:CMultiDocTemplate *m_pTimeWaveDoc;CMultiDocTemplate *m_pEngWaveDoc;CMultiDocTemplate *m_pMatchWaveDoc;在XXX.cpp源文件中的BOOL CXXXApp::InitInstance()函数中添加不同视图文档模板:m_p...原创 2018-05-27 20:36:53 · 1063 阅读 · 2 评论 -
如何禁用MDITab类型架构视图的关闭按钮
向导生成默认代码在·int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)`函数生成TAB样式视图默认代码CMDITabInfo mdiTabParams;mdiTabParams.m_style = CMFCTabCtrl::STYLE_3D_ONENOTE; // 其他可用样式...mdiTabParams.m_bActive...原创 2018-05-27 00:00:17 · 884 阅读 · 0 评论 -
从DLL生成LIB文件
设置VS2015运行环境在开始菜单打开Visual Studio 2015\Visual Studio Tools\Windows Desktop Command Prompts\VS2015 x86 x64 Cross Tools Command Prompt切换到DLL所在目录在命令窗口输入 cd /d "你的DLL目录"回车切换到对应目录。生成DEF文件dumpbin...原创 2018-04-27 17:48:55 · 12325 阅读 · 2 评论 -
std::map使用std::find_if算法
map&amp;lt;int, char*&amp;gt; mapItems;//填充数据操作auto it = find_if(mapItems.begin(), mapItems.end(), [&amp;amp;](const pair&amp;lt;int, char*&amp;gt; &amp;amp;item) { return item-&amp;gt;first原创 2018-05-10 10:21:48 · 5007 阅读 · 2 评论 -
Input32 动态库介绍
Introduction(概述)Parallel port is a simple and inexpensive tool for building computer controlled devices and projects. The simplicity and ease of programming makes parallel port popular in electronic...原创 2018-03-04 11:37:19 · 1022 阅读 · 0 评论 -
使用sqlite3动态库
下载SQLite3动态库及头文件头文件 下载 sqlite-autoconf-3210000.tar.gz提取其中的sqlite3.h及sqlite3ext.h文件。动态库 下载sqlite-dll-win32-x86-3210000.zip(64位系统请下载sqlite-dll-win64-x64-3210000.zip)提取其中的sqlite3.dll及sqlite3.def文件备用。原创 2017-11-13 07:37:24 · 1840 阅读 · 0 评论 -
c++、c#、Python、GO语言基本语法比较
c++、C#、Python、GO语言基本语法比较原创 2015-10-07 17:15:11 · 3479 阅读 · 0 评论 -
浮点数取整运算
摘自《你必须知道的495个C语言问题》int dbl2Int(double val){ return (int)(val < 0 ? val - .5 : val + .5);}//保留指定精度取整int dbl2Int(double val, double precision){ return int((val / precision + .5)*precision);}转载 2015-07-02 08:14:43 · 1745 阅读 · 0 评论 -
使Visual Assist X V10.8.2029.0工具支持HTML、Javascript等语言
Visual Assist X 从10.8.2001.0版本开始不默认支持HTML、Javascript等语言,需要手动修改注册表开启对HTML、Javascript等语言的支持:将"HKCU \ Software \ Whole Tomato \ Visual Assist X \ <IDE spec> \ RestrictVaToPrimaryFileTypes" 由01修改为00即可原创 2014-03-08 13:49:54 · 3915 阅读 · 1 评论 -
4bit典型格雷码转换
4bit典型格雷格转换公式:二进制:b3 b2 b1 b0格雷码:g3 g2 g1 g0g0 = b1^b0g1 = b2^b1g3 = b3^b2g4 = 0^b3 auto conver = [&](int n) { int bPre; int bCur; int nGray = 0; nVal &= 0x0F; for (int i=0原创 2013-10-27 21:49:39 · 4602 阅读 · 0 评论 -
crc16校验
WORD crc16(CArray& aData) { WORD crcRet = 0xFFFF; WORD crcClib= 0xA001; //校正数字 for (int i=0; i<aData.GetSize(); i++) { byte curVal = aData[i]; byte bLByte = (crcRet & 0xFF) ^ curVal; crcRet原创 2013-06-06 22:29:37 · 1399 阅读 · 1 评论 -
C/C++ 字符编码的转换(ut8、gb2312)
转自:点击打开链接 //这是个类strCoding (strCoding.h文件)#pragma once#include #include #include using namespace std;class strCoding{public: strCoding(void); ~strCoding(void);转载 2013-05-03 18:39:19 · 1610 阅读 · 0 评论 -
Detecting System Requirements()
转自http://msdn.microsoft.com/zh-cn/library/bb164659%28v=vs.110%29.aspxA VSPackage cannot function unless Visual Studio is installed. When you use Microsoft Windows Installer to manage the ins转载 2013-01-21 18:01:35 · 939 阅读 · 0 评论