VC++
文章平均质量分 72
智渝
生无路而勤为径
展开
-
Visual Studio(VS)启用更新的 __cplusplus 宏
/Zc:__cplusplus 编译器选项启用 __cplusplus 预处理器宏以针对最新的 C++ 语言标准支持报告更新的值。 默认情况下,Visual Studio 始终为 __cplusplus 预处理器宏返回值“199711L”。从 Visual Studio 2017 版本 15.7 开始便已提供 /Zc:__cplusplus 选项,该选项在默认情况下处于禁用状态。如果启用 /Zc:__cplusplus,则 __cplusplus == _MSVC_LANG。CMake中启用:if原创 2020-06-06 23:22:13 · 1587 阅读 · 1 评论 -
Visual Studio 2017, 2019 官网下载地址
VS2017:社区版地址:https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=Community&rel=15专业版地址:https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-v...原创 2019-12-16 15:00:15 · 5999 阅读 · 0 评论 -
C++自定义编译期警告和错误信息
1 MSVC编译器:注意:C++标准并不支持 #pragma message,但是msvc支持/** Transform expression \a _exp_ to string format. */#define __AUX_STR_EXP(_exp_) #_exp_/** Transform \a _exp_ to string format. ...原创 2019-12-01 02:41:06 · 3244 阅读 · 1 评论 -
_MSC_VER值对应的Visual Studio版本
微软官网链接:Predefined macros截至目前[2019-11-28]:Visual Studio version_MSC_VERVisual Studio 6.01200Visual Studio .NET 2002 (7.0)1300Visual Studio .NET 2003 (7.1)1310Visual Studio 2005 ...原创 2019-11-28 23:04:51 · 4119 阅读 · 1 评论 -
如何将C++玩成中文编程
以下代码仅供娱乐,切勿用于生产环境,以免被人追着打。测试环境:vs2017#include <iostream>#define 整数 int#define 返回 return#define 打印 std::cout#define 换行 std::endl#define 符号加 +#define 左括号 (#define 右括号 )#define 赋值 =#...原创 2019-11-22 12:28:39 · 1317 阅读 · 0 评论 -
c++/c 获取cpp文件行号跟文件名
c++/c 获取cpp文件行号跟文件名编译器内置宏:先介绍几个编译器内置的宏定义,这些宏定义不仅可以帮助我们完成跨平台的源码编写,灵活使用也可以巧妙地帮我们输出非常有用的调试信息。ANSI C标准中有几个标准预定义宏(也是常用的):__LINE__:在源代码中插入当前源代码行号;__FILE__:在源文件中插入当前源文件名;__DATE__:在源文件中插入当前的编译日期...转载 2018-12-28 10:37:47 · 536 阅读 · 0 评论 -
VS编译log4cpp-v1.1.3
记录各VS版本编译log4cpp-v1.1.3(Windows10系统下)遇到的问题及解决方案。log4cpp主页链接:http://log4cpp.sourceforge.net/ 一 VS2008 & log4cpp-v1.1.31.1 问题描述 使用vs2008打开log4cpp中msvc7目录下的msvc7.sln,此时会自动进行项目升级,...原创 2019-01-08 10:01:29 · 950 阅读 · 0 评论 -
VC++ error C2375 重定义错误的解决方式,Winsock2.h Winsock.h
一、项目属性 -- C/C++ -- 预处理器 -- 预处理器定义 手动添加一个宏:WIN32_LEAN_AND_MEAN原创 2019-01-24 19:21:09 · 1437 阅读 · 0 评论 -
GPS坐标两点距离计算
double dGPSDistance( double dLat1, double dLon1, double dLat2, double dLon2 ){ double R = 6371; // km double PI = 3.14159265358979323846; // Use Haversine formula to calculate distanc...原创 2019-01-14 21:02:15 · 739 阅读 · 0 评论 -
C++ 字符、字符串转十六进制(支持中文字符串转换)
#include <string> // std::string#include <sstream> // std::stringstream/** * #purpose : 字符转十六进制 * #note : 不适用于汉字字符 * #param ch : 要转换成十六进制的字符 * #return : 接收转换后的字符串 */s...原创 2018-12-07 14:08:05 · 13282 阅读 · 0 评论 -
C++判断字符大小写,大小写转换
// 判断字符是否为小写字母bool isLower(char ch){ return ch >= 'a' && ch <= 'z';}// 判断字符是否为大写字母bool isUpper(char ch){ return ch >= 'A' && ch <= 'Z';}// 判断字符是否为数字bool isDig...原创 2018-12-06 14:43:56 · 14414 阅读 · 0 评论 -
C++如何去除数组中的特定值(删除数组中特定的元素)?
/* * @Abstract : 去除数组中的特定值 * @Crete Date : 11/10/2018. * @Author : shaoguang. */#include <math.h> // fabs/** * @param pArray : 要去除数据的原数组。 * @param nLen : 要去除数...原创 2018-10-11 12:47:40 · 20675 阅读 · 0 评论 -
VC++判断文件夹是否存在,不存在则创建文件夹
方法挺多的,_access和_mkdir算是比较古典了,不过很好用。// 判断文件夹是否存在bool IsDirExist(const char *pszDir){ if (pszDir == NULL) return false; return (_access(pszDir, 0) == 0); // io.h}// 创建目录bool CreateDirectory...原创 2018-09-06 21:16:09 · 2304 阅读 · 0 评论 -
windows C++ WMI获取系统硬件信息
转自: https://blog.csdn.net/u010352603/article/details/51400769官网找到一个例子,根据例子修改下可以获取很多信息#define _WIN32_DCOM#include <iostream>using namespace std;#include <comdef.h>#include <Wbem...转载 2018-09-12 14:45:51 · 4033 阅读 · 0 评论 -
C++ std::string字符串替换
直接上代码了! // 字符串替换函数#include <string>/** * 字符串替换函数 * #function name : replace_str() * #param str : 操作之前的字符串 * #param before : 将要被替换的字符串 * #param after : 替换目标字符串 * #retu...原创 2019-02-25 10:54:37 · 6869 阅读 · 0 评论 -
VC++ 给Windows服务添加描述信息
#include <windows.h>/** * 更新(添加)服务描述。 * @param serviceName : 服务名称。 * @param serviceDescription : 服务描述。 */bool updateServiceDescription(const char *serviceName, LPTSTR serviceDescription)...原创 2019-03-17 00:01:12 · 856 阅读 · 0 评论 -
VC杀死进程自己
HANDLE hself = ::GetCurrentProcess(); ::TerminateProcess(hself, 0);原创 2019-03-26 00:57:01 · 375 阅读 · 0 评论 -
windows的dierent.h
github传送门:https://github.com/tronkko/dirent将dirent.h拷贝至如:C:\Program Files\Microsoft Visual Studio 9.0\VC\include.目录下。/* * Dirent interface for Microsoft Visual Studio * * Copyright (C) 1998-20...原创 2019-09-28 10:06:55 · 420 阅读 · 0 评论 -
微软开源C++标准库(STL)
近日,在 CPP 2019 大会上,微软 VC 团队宣布,把将C++ 标准库的实现开源!方便了C++程序员深层次学习STL。Github传送门:https://github.com/microsoft/STL原创 2019-09-21 15:50:31 · 1621 阅读 · 0 评论 -
VC++实现快速截屏
// 截取全屏#include <windows.h>#include <GdiPlus.h>#include <atlimage.h> // CImage#pragma comment(lib, "GdiPlus.lib")int main(){ HDC hdcSrc = GetDC(NULL); int nBitPerPixel = ...原创 2019-09-06 11:02:56 · 2015 阅读 · 0 评论 -
C++ GB2312与UTF-8之间的相互转换(Windows)
#include <windows.h>#include <sstream>#include <string>// UTF-8转GB2312std::string UTF8ToGBEx(const char *utf8){ if (!utf8 || strlen(utf8) < 1) return ""; std::stringst...原创 2019-07-16 12:45:34 · 2670 阅读 · 0 评论 -
C++ 获取键盘事件
原文地址:https://www.runoob.com/w3cnote/c-get-keycode.html一 Windows 系统下的 vs 中可以使用 _kbhit() 函数来获取键盘事件,使用时需要加入 conio.h 头文件,例:#include <conio.h>#include <iostream> using namespace st...转载 2019-07-09 14:53:00 · 5062 阅读 · 1 评论 -
【VC++实战项目】No.03 RGB颜色值和十六进制颜色代码转换工具
心血来潮写了个小工具:GitHub传送门:https://github.com/shaoguangwu/ColorConversionTool这里主要列举几个主要的小知识点:1. VC++设置剪贴板内容。2. MFC设置控件背景颜色。3.Unicode编码下,CString转char*的方法。4. RGB颜色值与十六进制颜色值的互转算法。软件截图:...原创 2019-04-09 22:06:35 · 855 阅读 · 0 评论 -
VC++控制台去掉黑窗口,去掉黑窗口后停止程序的方法(windows后台进程)
控制台程序去掉黑窗口,加入如下代码:// disable console#pragma comment(linker, "/subsystem:\"Windows\" /entry:\"mainCRTStartup\"")如果没有效果,则将项目(属性-链接器-所有选项-子系统)改为“窗口”。如果程序是循环结构,那么如何停止这个程序呢?当然可以通过任务管理器强制结束进程,但这种方法往...原创 2019-03-28 20:55:25 · 2123 阅读 · 0 评论 -
C++矩阵模板类的实现
/***************************************************************** Matrix template class.**** By shaoguang @ 2019-04-01.***************************************************************/#ifndef...原创 2019-04-01 17:21:01 · 1096 阅读 · 0 评论 -
VC获取屏幕分辨率,物理大小和刷新频率
#include <stdio.h> #include <math.h> #include <windows.h> #include <cstdlib>int main(int argc, char *argv[]){ // 物理尺寸 int nScreenPhysicsWidth = 0, nScreenPhysicsHei...原创 2019-04-06 15:51:32 · 2104 阅读 · 0 评论 -
Visual Studio 2015干净卸载工具
重装Visual Studio 2015,结果安装位置死活更改不了,想想肯定是没卸载干净,还好找到了干净卸载工具,确实不错,推荐一下:GitHub地址:https://github.com/Microsoft/VisualStudioUninstaller/releases 用法: 下载TotalUninstaller.zip,以管理员身份运行Setup.ForcedUnin...原创 2018-09-03 21:41:17 · 7237 阅读 · 0 评论 -
MFC保证程序只有一个实例运行
在CxxxAPP类中添加一个成员函数和成员变量:virtual int ExitInstance();HANDLE m_hMutex;接下来在InitInstance函数中添加:BOOL CxxxApp::InitInstance(){ // 创建互斥量 m_hMutex = CreateMutex(NULL, FALSE, _T("Mutex名,任意名...原创 2018-09-11 15:09:07 · 668 阅读 · 0 评论 -
MFC获取exe文件所在路径
strrchr()函数头文件: string.h CString xxxDlg::GetExePath(){ CString strPath; // 获取路径 char pszFilePath[MAX_PATH]; memset(pszFilePath, 0 , sizeof(pszFilePath) * sizeof(char)); GetModuleFileName(NULL...原创 2018-09-04 19:54:51 · 1076 阅读 · 0 评论 -
VC++交换鼠标左右键
MFC界面设计两个Button,一个Static Text: 首先应检测是否有鼠标或者鼠标按键是否已交换,类中声明IsMouseButtonSwap()函数:注意,笔记本电脑的触摸板也会被系统认为是鼠标。// 检测鼠标左右键是否交换,返回-1表示未检测到鼠标,返回0表示未交换,返回1表示已交换int CSwapMouseButtonDlg::IsMouseButtonSwa...原创 2018-07-25 22:23:07 · 628 阅读 · 0 评论 -
VC++获取磁盘驱动器卷标和序列号并将之存储到CStringList中
获取磁盘驱动器主要使用GetLogicalDriveStrings()函数,获取磁盘序列号主要使用GetVolumeInformation()函数。需要提醒一下大家的是,CStringList没有重载操作符“=”,故不能直接将CStringList作为返回值或者函数参数,应该使用“引用”或者“指针”的方式。 // 获取磁盘驱动器void CGetDiskSerialDlg::Get...原创 2018-07-25 22:04:44 · 2028 阅读 · 0 评论 -
VC++获取CPU时钟频率
先通过执行两条汇编语句得到执行两条汇编语句所使用的相对时间刻度,然后继续执行这两条汇编语句获取一个时间刻度减去先前的相对时间刻度就是CPU时钟频率。inline UINT64 CGetCPUTimeDlg::GetCount(){ _asm _emit 0x0f; _asm _emit 0x31;} // 获取CPU时钟频率CString CGetCPUTimeDlg::...原创 2018-07-25 20:44:58 · 2480 阅读 · 0 评论 -
关于CFile读取文件末尾多几个乱码字符的问题解决
最近用MFC做文件IO,发现使用CFile类读取文件数据到char *时,末尾总会多几个莫名奇妙的乱码字符。解决方法如下,char * 申请空间时,多new一个,读取文件后,最后一个值赋值为'\0',这样就i不会有末尾的乱七八糟的乱码了。 ………… ………… if ( bOpen ) // CFile::Open的返回值 { ULONG nLen = f...原创 2018-07-20 11:51:39 · 1243 阅读 · 0 评论 -
VC++获取CPU序列号 CPU ID
主要用到获取CPU ID值的汇编指令:CString CGetCPUIDDlg::GetCPUID(){ CString strCPUID; unsigned long s1, s2; __asm{ mov eax, 01h xor edx, edx cpuid mov s1, edx mov s2, eax } strCPUID.Format(...原创 2018-07-25 20:21:58 · 6227 阅读 · 1 评论 -
VC版本与VS版本对应关系
Visual Studio 6 : vc6 Visual Studio 2003 : vc7 Visual Studio 2005 : vc8 Visual Studio 2008 : vc9 Visual Studio 2010 : vc10 Visual Studio 2012 : vc11 Visual Studio 2013 : vc12 Visual Studi...原创 2018-07-25 16:50:22 · 2180 阅读 · 0 评论 -
MFC 给DLL中添加的CDialog对话框添加OnInitDialog()初始化函数
新建MFC DLL项目,添加Dialog对话框之后,对话框实现文件里找不到对话框的初始化函数OnInitDialog(),这时,需要我们手动的添加重写函数。步骤如下:项目【类视图】中右键单击对话框类--->属性--->重写---->添加 OnInitDialog、添加好后,就可以看到此函数了。...原创 2018-07-13 10:50:14 · 1728 阅读 · 0 评论 -
关于本人下载频道Visual Studio 2015企业版和专业版离线安装包资源失效的说明
近期整理百度网盘,不小心把这两个资源弄不见了(手贱),另外重新上传了一份,大家注意不要下载了无用资源,特此说明。2018年07月18日 原资源(已失效):Visual Studio 2015专业版离线安装包(百度网盘):https://download.csdn.net/download/wu9797/10050089Visual Studio 2015企业版离线安装包(百度网...原创 2018-07-18 21:47:44 · 663 阅读 · 0 评论 -
MFC中文件操作(C、C++流、CFile)
MFC三种文件操作方式 目 录一、C语言方式文件操作 11. 打开文件: 12. 获取文件字节长度(文件大小) 23. 读取文件 34. 向文件写入数据 35. 清除读写缓冲区 36. 关闭文件 4二、 C++方式文件操作 51. 打开文件 52. 获取文件长度 53. 读取文件 64. 写入文件 65. 关闭文件 6三、 使用CFile类进行文件操作 71. 打开文件 72. 获取文件字...原创 2018-07-06 11:20:53 · 4095 阅读 · 0 评论 -
MFC获取计算机所有可用串口并将之设置到CCombo Box控件上
函数可直接调用,记得先在头文件中声明。// 查找计算机可用串口并将串口号设置到Combo Box控件上void Cxxxxxxxxx::FindCommPort( CComboBox *pComboBox ){ HKEY hKey;#ifdef _DEBUG ASSERT( pComboBox != NULL ); pComboBox->AssertValid();#e...原创 2018-07-18 10:44:04 · 3396 阅读 · 0 评论 -
MFC设置Edit Ctrl控件多行输入、显示、滑动条
设置Edit Ctrl属性:vertical Scroll --> TrueMultiline --> TrueWant Return --> True原创 2018-07-17 12:46:57 · 2030 阅读 · 0 评论