VC/MFC/C/C++
VC/MFC/C/C++
kim-2006
这个作者很懒,什么都没留下…
展开
-
记录一下 HTTPS 文件下载遇到的小问题
到这一步服务器已开始下发exe文件数据。原创 2022-08-01 00:35:32 · 812 阅读 · 0 评论 -
gethostbyname \ getaddrinfo 解析域名IP地址不安全的原因
运行以下测试代码就会发现域名已被指向假的服务器IP地址,会造成什么危害呢?导致软件轻易被破解,用户访问假的服务器后,导致用户数据被盗窃。假IP地址网站域名。原创 2022-07-25 03:03:01 · 583 阅读 · 0 评论 -
获取DPI函数返回值永远是96 | 获取DPI函数返回值不正确 | GetDpiForMonitor/GetDeviceCaps返回值不正确的原因
无论怎么调整系统缩放,使用GetDpiForMonitor/GetDeviceCaps获取DPI的返回值永远是96!在网上搜了个遍也没个正确的解决方案,排查了近一个小时才想到是这个原因!特此发贴以便后来人!其实原因很简单,就是之前测试时在程序的属性中设置了高 DPI 设置中的“程序 DPI”导致的,高DPI缩放替代也会有影响,具体的请看图!解决方法就不用说了吧!GetScaleFactorForMonitor 此函数不受以上设置的影响,但是此函数只支持WIN10/WIN11等系统。...原创 2022-06-15 19:50:57 · 1522 阅读 · 0 评论 -
VC/MFC 获取文件MD5值 获取大文件MD5值 命令行版
文件下载获取大文件MD5值Windows命令行版-CSDN下载使用方法1、打开CMD,2、CD到md5.exe所在目录(把MD5.exe放到System32下可省略步骤),3、CMD中输入命令: md5 文件路径(也可在输入md5空格后把文件拖进CMD),回车即可获得文件的MD5值。完整项目下载完整项目(源代码)-CSDN下载源代码/* 功能: Windows 系统获取大文件MD5值 编译环境: VS2017,字符集可随意切换 基于官方API示例封装*...原创 2022-04-17 01:46:40 · 1087 阅读 · 0 评论 -
获取系统当前的 日期/时期 的数据格式(显示格式)
有时需要编程获得系统当前的日期/日期的数据格式,查了一下没有相关的API,于是想到修改系统的 日期/时间 格式,然后到注册表中搜索相应的值,一搜果然在注册表中保存着。读取以下注册表项下的值即可获得注册表路径: HKEY_CURRENT_USER\Control Panel\International短日期格式: sShortDate长日期格式: sLongDate短时间格式: sShortTime长时间格式: sTimeFormatWin7/Win2008/Win10 通用原创 2022-01-29 02:04:06 · 1043 阅读 · 0 评论 -
VC/MFC 检查指定的文件是否存在 判断文件是否存在
#include <iostream>#include <windows.h>#include <tchar.h>/* 功能: 检查指定的文件是否存在 编译环境: VS2017, 字符集可随意切换*/// 函数功能: 检查指定的文件是否存在, 文件存在则返回 TRUE, 不存在则返回 FALSE// LPCTSTR lpszFile 要检查文件的绝对路径, 例: C:\\a.txt...原创 2022-01-18 03:42:27 · 2711 阅读 · 0 评论 -
VC/MFC 获取文件MD5值 获取大文件MD5值
可获取超大文件的MD5值,转载请注明出处!/* 功能: Windows 系统获取大文件MD5值 编译环境: VS2017,字符集可随意切换 基于官方API示例封装*/#include <iostream>#include <windows.h>#include <wincrypt.h>#include <tchar.h>#define BUFSIZE 1024#define MD5LEN 16// 功能:原创 2022-02-03 02:29:15 · 901 阅读 · 0 评论 -
fatal error C1083: 无法打开包括文件: “SDKDDKVer.h”: No such file or directory
报错信息目录报错信息原因解决方法x:\xx\项目名称\targetver.h(8): fatal error C1083: 无法打开包括文件: “SDKDDKVer.h”: No such file or directory原因原因是修改过“平台工具集”为 XP_141 版本,这个过程会自动修改 Windows SDK 版本为7.0,再把平台工具集改回 141 版本时,并不会自动把 Windows SDK版本改之前的 10.0解决方法非常简单,改完了平台工具集,原创 2022-01-11 17:34:16 · 3831 阅读 · 0 评论 -
界面库 界面相关的一些东西
https://github.com/duilib/duilibnetease-im/NIM_Duilib_Framework: 网易云信Windows应用界面开发框架(基于Duilib)Windows with C++: Windows Template Library 8.0 | Microsoft DocsWindows Template Library (WTL) download | SourceForge.net原创 2021-10-13 18:09:36 · 128 阅读 · 0 评论 -
VC/MFC HRESULT 类型 HRESULT 类型返回值正确判断方法
// 等于 0 表示成功,小于 0 表示失败, 大于 0 的值表示有其它错误, // S_OK、S_FALSE 都表示成功原创 2021-10-11 18:28:59 · 506 阅读 · 0 评论 -
c/c++ 浮点数正确的比较方法
#include<iostream>#include<math.h>using namespace std;int main(){ double a,b,c; a=2.0; b=(65*0.98-32*1.99)*100; c=65*98-32*199; cout.precision(16); if(a == fabs(c)) { cout<<" a 和 .原创 2021-09-13 11:11:24 · 286 阅读 · 0 评论 -
MFC CTime类 MFC日期时间格式化参数
/* VS 2017 CTime 时间日期格式化参数整理 2021-09-07 %A 星期(英文, Tuesday) %a 星期(缩写, Tue) %B 月份(英文, September) %b\%h 月份(缩写, Sep) %c 星期(英文缩写) 月(英文缩写) 日(0~31) 时(00-23):分(00-59):秒(00-59) 年(数字2021), 如: Tue Sep 7 19:00:00 2021 %Y\%G 年(4位数字, 2021) %y\%g 年(2位数字, 202.原创 2021-09-07 21:22:17 · 1498 阅读 · 0 评论 -
MFC CStatusBar类简单使用记录 MFC状态栏
// TODO: 在此添加额外的初始化代码 CTime time = CTime::GetTickCount();#if 1 // 不用到字串表添加ID,省事 // 自定义控件ID static const UINT IDS_CAPTION = 1000 + 101; // 自定义控件ID static const UINT IDS_DATE = 1000 + 102; // 指示器 ID 数组 static UINT indicators[] = { IDS_CAPTION, IDS..原创 2021-09-07 21:03:56 · 544 阅读 · 0 评论 -
Blend for Visual Studio 2017 最近的项目记录清理 项目历史记录清理
1、桌面右键—>新建—>快捷方式,输入路径:%USERPROFILE%\AppData\Local\Microsoft\Blend\2、打开第1步创建好的快捷方式VisualStudio,找到15.0_开头的文件夹,我的系统上是15.0_33d5230f,进入该文件夹。3、找到“ApplicationPrivateSettings.xml”文件,用记事本打开,找到CodeContainers.Offline这个节点,把value清空,清空后的节点是这样的:<collecti原创 2021-08-20 14:46:46 · 555 阅读 · 0 评论 -
MFC 修改CheckBox的文本颜色方法
设置主题这一步是必须的,不可省略。BOOL CMFCApplication1Dlg::OnInitDialog(){ CDialogEx::OnInitDialog(); // 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 // 设置主题 HWND原创 2021-08-11 20:44:55 · 1867 阅读 · 1 评论 -
VS2017 最近的项目记录清理 项目历史记录清理
1、桌面右键—>新建—快捷方式,输入路径:%USERPROFILE%\AppData\Local\Microsoft\VisualStudio\2、打开第1步创建好的快捷方式VisualStudio,找到15.0_开头的文件夹,我的系统上是15.0_33d5230f,进入该文件夹。3、找到“ApplicationPrivateSettings.xml”文件用记事本打开,找到CodeContainers.Offline这个节点,把value清空,清空后的节点是这样的:<collection原创 2021-08-08 18:32:27 · 1287 阅读 · 0 评论 -
无法打开源文件 ntstrsafe.h 解决方法
安装Windows 驱动程序工具包 (WDK)即可解决https://docs.microsoft.com/zh-cn/windows-hardware/drivers/download-the-wdk原创 2021-07-29 22:18:38 · 707 阅读 · 0 评论 -
C/C++/VC/MFC 通用字符串操作函数、通用字符串类型
/* // 字符串函数更安全的替代,Strsafe.h 官方文档: https://docs.microsoft.com/en-us/windows/win32/api/strsafe/ // 官方建议使用更安全的带_s的函数,官方文档: https://docs.microsoft.com/zh-cn/cpp/c-runtime-library/reference/itoa-s-itow-s?view=msvc-160 ANSI UNICODE 通用 (char.h) (wch.原创 2021-07-29 22:06:51 · 365 阅读 · 0 评论 -
Windows API CreateFile WriteFile 操作文件追加写入 解决中文乱码
// CreateFile.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include <windows.h>#include <tchar.h>// ErrorMessage support function.// Retrieves the system error message for the GetLastError() code.// Note: caller m.原创 2021-07-28 14:09:28 · 2107 阅读 · 0 评论 -
VC/MFC操作注册表 - 读写REG_MULTI_SZ类型的值
HKEY hk; CString szSubKey = _T("SOFTWARE"); if (RegOpenKeyEx(HKEY_CURRENT_USER, szSubKey, REG_OPTION_OPEN_LINK, KEY_ALL_ACCESS, &hk) != ERROR_SUCCESS) { AfxMessageBox(_T("打开注册表失败")); return; } CString szItemName = _T("DependOnService");...原创 2021-07-26 22:38:59 · 1237 阅读 · 0 评论 -
VC/MFC调用Golang编译的DLL的一些问题
最近在研究VC/MFC和Golang交互,用Go编译了一个AES加密解密的DLL给VC/MFC调用,中间遇到了一些问题,VC/MFC传参给DLL返回的结果不正确,Go中调用的结果却正常,调试了一两个小时才想到是编码的问题,VC/MFC中字符串是GBK编码,Golang中字符串是utf-8编码,于是就把DLL接收到的字符串编码转换为utf-8编码,至此问题解决。更多问题以后补充······...原创 2021-07-18 14:41:30 · 668 阅读 · 2 评论 -
52论坛的帖子,结构体保存到文件中的,读取文件中的结构体。
#include<iostream>#include<fstream>using namespace std;struct number{ char name[20]; int age;};int main(){ number a[] = { {"张三",12},{"李四",15} }; ofstream outfile; outfile.open原创 2021-07-08 16:29:03 · 173 阅读 · 0 评论 -
点击网页中无ID元素
原帖地址:https://www.cctry.com/thread-301087-1-1.html原创 2021-06-13 20:52:41 · 762 阅读 · 0 评论 -
干货《偏移》计算写法
#include <iostream>#include <windows.h>#define CSIZE(x) (sizeof(x) / sizeof(char))// 内联汇编实现计算 模块地址 + 偏移LPVOID Add(LPVOID lpModule, DWORD dwOffset){ LPVOID lpAddr; _asm { mov eax, lpModule add eax, dwOffset mov lpAddr, eax } re.原创 2021-03-14 17:31:33 · 1390 阅读 · 0 评论 -
C/C++/VC++ 命令行参数解析
#include <windows.h>#include <tchar.h>#if 0typedef struct _MYCMD{ TCHAR *Cmd[20] = { 0 }; int nLen = 0;}MYCMD, *LPMYCMD;MYCMD GetCmdLine(TCHAR *CmdLine){ TCHAR seps[] = _T(" ,\t\n"); TCHAR *token1 = NULL; TCHAR *next_token1 = NUL.原创 2021-03-11 22:31:50 · 638 阅读 · 0 评论 -
error C2760: 语法错误: 意外的令牌“标识符”,预期的令牌为“类型说明符” 解决方法及原因
//Win32 Dll项目中使用 CString 遇到的问题// #include <atlstr.h> CString 在 Win32 dll 中使用必须设置符合模式为 "否", // 否则报error C2760: 语法错误: 意外的令牌“标识符”,预期的令牌为“类型说明符”// 对于我这种强迫征来说,报错就是没做好,而不是改设置,// 解决方法就是Win32 DLL项目中不要使用CString, Win32 DLL中字符串尽量使用以下类型// LPCSTR/LPSTR/PCS..原创 2021-02-28 23:11:44 · 2894 阅读 · 0 评论 -
在Dll中导出资源文件 导出Dll/exe中的资源文件
导出Dll中的资源文件// ReleaseRes 导出 dll 中的资源文件// HMODULE hModule DllMain 的第一个参数// CString szFileName 要写出的文件名// WORD wResID 资源ID// CString szFileType 资源类型BOOL ReleaseRes(HMODULE hModule, CString szFileName, WORD wResID, CString szFileType){ // 创建文件 HAND原创 2021-02-28 20:18:06 · 950 阅读 · 2 评论 -
控制台程序使用时钟的方法
#include "windows.h"#include "stdio.h"VOID CALLBACK TimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime);int main(int argc, char* argv[]){ UINT_PTR nTimerID = SetTimer(NULL, WM_TIMER, 5000, (TIMERPROC)TimerProc); printf("Timer created..原创 2021-02-18 11:41:15 · 294 阅读 · 0 评论 -
atexit _onexit 善后工作
#include <iostream>char* szName;void onExit(){ std::cout << "onExit" << "\n"; std::cout << szName << "\n"; delete[]szName;}int onExit2(void){ std::cout << "onExit2" << "\n"; //std::cout...原创 2021-02-09 15:48:50 · 192 阅读 · 0 评论 -
将任意字符串中“连续的数字”取出并组合成“新的数”,放入一个新的数组中
#include<iostream>#include <regex>using namespace std;/* 论坛帖子 任意一串字符串{ "as65d4sa6d556sad6d16s5a165sf4fsdaf544" }, 将其中“连续的数字”取出并组合成“新的数”, 放入一个新的数组中,如 将65这个数放入a[0]中*/int main(){ char g[100] = { "as65d4sa6d556sad6d16s5a165sf4fsdaf544" .原创 2021-02-02 22:56:43 · 763 阅读 · 0 评论 -
MFC WebBrowser获取网面完整源码 WebBrowser获取网面完整HTML
反爬比较厉害的网站,用WebBrowser来获取网页源码,也可使用开源的浏览器来实现。#include <MsHTML.h>#include <atlconv.h>void CMFCApplication1Dlg::DocumentCompleteExplorer1(LPDISPATCH pDisp, VARIANT* URL){ CComDispatchDriver lpDisp = m_web.get_Application(); if (lpDisp == pD原创 2021-01-27 11:34:48 · 599 阅读 · 0 评论 -
IWinHttpRequest http https 请求实例
/* 编译环境 VS2017 原文 https://docs.microsoft.com/zh-cn/windows/win32/winhttp/iwinhttprequest-responsetext */#include <windows.h>#include <stdio.h>#include <objbase.h>#include <tchar.h>#pragma comment(lib, "ole32.lib")#pr.原创 2021-01-27 00:39:26 · 1007 阅读 · 0 评论 -
WinHttp.dll WinHttpCom.dll IWinHttpRequest 使用实例,控制台中文显示乱码的原因及解决方法
/* 编译环境 VS2017, 字符集随意 很久没写控制台程序,今儿发现控制台输出的中文字符串不能是宽字符, 即便项目属性中设置了Unicode字符集,网页源码中的文也一样会显示问号,刚开始还以为是网页编码的原因 wprintf_s(_T("%s\n"), _T("中文")); //输出问号 printf_s("%s\n", "中文"); //正常输出*/#include <windows.h>#include <tchar.h>#include <at.原创 2021-01-26 19:58:41 · 1374 阅读 · 0 评论 -
VC/MFC应用禁止多开
// VC/MFC应用禁止多开 // 编译环境:VS2017 // MFC在 InitInstance 中创建Mutex来防止多开 HANDLE hMutex; //hMutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, theApp.m_pszAppName); // 创建互斥体 hMutex = CreateMutex(NULL, FALSE, theApp.m_pszAppName); DWORD dwError = GetLastError()...原创 2021-01-21 12:25:53 · 605 阅读 · 0 评论 -
VC/MFC https请求实例
// 头文件 Winhttp.h 、afxinet.h 任选一个 // 编译环境:VS2017 多字符集 CInternetSession oSession; CHttpConnection* pConn = oSession.GetHttpConnection("www.baidu.com", INTERNET_FLAG_SECURE, (INTERNET_PORT)443); CHttpFile* pFile = pConn->OpenRequest(1, "/index...原创 2021-01-15 00:33:51 · 2537 阅读 · 2 评论 -
VC/MFC设置窗口、对话框标题的几种方法
// MFC设置窗口、对话框标题的几种方法 // 一、OnInitDialog()中设置(修改)对话框标题 // 1、theApp.m_pszAppName = L"标题文字"; // 2、SetWindowsText(L"标题文字") // 二、通过字串表内置ID设置标题 //ID: AFX_IDS_APP_TITLE (内置ID) //标题: 标题文字 // 三、假如工程名为“test”,App类名为“CtestApp”, // 可在App构造器实现处调用基类来设置...原创 2021-01-13 15:23:50 · 5580 阅读 · 0 评论