
VC
只要思想不滑坡
这个作者很懒,什么都没留下…
展开
-
win8系统信息获取与系统版本的判断
实际判断建议加上build的版本号dwBuildNumber,不管是通过读kernel.dll的文件版本,还是通过api获取,当前面是6.1时,那么可以认为是win7。当前面是6.2时,要判断build版本号,如果build>9000(或者说>=9200),同时build<10000时,就认为是win8。根据文档里面的说明,win10是10.0,win8是6.2,win7是6.1,实测发现win10获取到的也是6.2,因此如果依赖这个去判断系统版本然后做兼容性处理,那是大坑。网上包括微软的api文档上面。原创 2025-03-13 12:02:59 · 233 阅读 · 0 评论 -
vcpkg或者命令行需要设置代理时如何设置
当然,如果有git的图形化程序,比如tortoisegit,那么直接在它的setting-network里面,手动设置也可以。这样就可以临时生效。如果这个cmd窗口关闭了,那么代理设置也就无效了。原创 2024-07-22 14:56:27 · 1221 阅读 · 0 评论 -
使用vcpkg编译curl
最后,其实vcpkg在windows上非常好用,许多原本需要交叉编译或者跨平台编译的库,如果vcpkg支持,都可以考虑直接用vcpkg来编译。定制编译特性大致和上面的curl差不多。前言:curl目前写这边文章的时候,已经是8.8.0版本了。在win上面编译一份支持各种特性的不是特别容易。因此偷懒使用下vcpkg来编译,方便又快捷。原创 2024-06-12 18:08:48 · 918 阅读 · 0 评论 -
记录win10安装visualAssistX无反应的一种情况
解决办法:强制结束安装进程,关闭vs2008,右键文件属性,然后兼容性标签页,选择以兼容模式运行这个程序,兼容性选win7就行。应用-确定,再次双击运行就正常显示安装界面了。找了个va_X_2366的安装包,运行后没反应,界面不出来,还以为闪退了,查看任务管理器发现有进程在,只是内存占用48K后没动静了。项目原因,要用vs2008,没有VA_X写起代码来太难用了。原创 2023-07-28 09:32:46 · 2538 阅读 · 4 评论 -
vc++保存和另存为对话框,打开文件对话框
windows系统常见的打开文件,保存文件,保存目录时用到的弹出窗口代码。原创 2023-03-02 15:51:02 · 924 阅读 · 0 评论 -
c/c++代码获取网络时间(从NTP授时服务器获取)
有时候需要获取网络时间,有没有自己的服务器去返回,那么可以考虑从NTP授时服务器获取,windows的同步网络时间就是从NTP授时服务器获取的。代码比较粗糙,比如没有加winsock2.h等头文件,比如没有WSACleanup()等,NTP授时服务器协议采用UDP,端口一般为123,下面给出从github上整理的代码,代码我是在win下面跑的,一切正常。linux和unix下,稍微改改也可以跑。,授时服务器地址选用的是阿里云的公共NTP服务器。原创 2022-08-20 09:50:03 · 5684 阅读 · 0 评论 -
win11上读取操作系统名称
操作系统的名称可以从注册表中读取。查找这个信息的思路是先运行msinfo32命令,或者直接运行C:\Windows\System32\msinfo32.exe,就能查看系统信息了,然后找到自己想要的读取的信息,运行regedit打开注册表,在注册表里面搜索对应的信息,可以多搜几处,选取比较合理的位置来读取。其他比如系统名称,系统型号,系统sku,都是可以找到它们的...原创 2022-06-16 15:47:00 · 1807 阅读 · 0 评论 -
获取CPU型号和序列号
主要参考文章:关于CPU序列号的问题,以及如何获取×64下CPU的ProcessorID_fudong071234的博客-优快云博客前几天经过查资料,得到网络上获取CPU序列号的方法是错误的,首先我找到了一篇论文,这篇论文里面是这么说的:这篇论文是错误的。这篇是错误的这篇是错误的!!!!!!!!!2、CPU序列号CPU序列号是一个建立在处理器内部的、唯一的、不能被修改的编号。它由96位数字组成。高32位是CPUID,用来识别CPU类型。低64位每个处理器都不同,唯一地代表了该处理器。CPU号可以用来识别h原创 2021-09-24 16:14:58 · 4444 阅读 · 0 评论 -
服务进程里面去创建带窗口的进程(备忘)
DWORD WINAPI GetActiveSessionId(){ HMODULE hInstKernel32 = LoadLibrary (L"Kernel32.dll" ); if (!hInstKernel32 ) { return 0; } HMODULE hInstWtsapi32 = LoadLibrary (L"Wtsapi32.dll" ); if (!hInstWtsapi32) { return 0; } typedef DWORD (WINAPI *..原创 2021-09-17 17:40:54 · 329 阅读 · 0 评论 -
GDI+缩放拉伸旋转图片时出现黑边黑框等问题
之前用GDI+做图片旋转,发现图片旋转后会漂移,偏离原中心位置几个像素。后来发现用GDI+的InterpolationModeHighQualityBicubic高质量模式去缩放或者拉伸图片时,可能会出现边缘少几个像素或者黑边问题。解决方法:Gdiplus::Bitmap dstBmp(nCW, nCH);Gdiplus::Graphics gdip(&dstBmp);gdip.SetInterpolationMode(Gdiplus::InterpolationModeHigh原创 2021-03-02 19:22:26 · 1308 阅读 · 1 评论 -
Gdiplus::Bitmap转HBITMAP与HBITMAP转Gdiplus::Bitmap
虽然已经有很多文章介绍两者互转了,但是实际使用过程中,仍然可能遇到问题。这里再提取一下过程及核心代码。Gdiplus::Bitmap转HBITMAP,直接上代码 LPBYTE pBmpBits = NULL; BITMAPINFO bimpi = {0}; bimpi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); bimpi.bmiHeader.biWidth = nCW; bimpi.bmiHeader.biHeight = -nCH;原创 2021-03-02 19:11:25 · 1873 阅读 · 0 评论 -
程序运行时提示This application failed to start because no Qt platform plugin could be initialized.
包含QT的程序,运行的时候可能会遇到This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.Reinstarlling...这个报错。大致意思就是qt平台插件初始化失败了。如图:解决办法:qt5的库里包含的有个plugins文件夹,点开之后里面是bearer、iconengines原创 2020-12-10 16:37:52 · 52408 阅读 · 21 评论 -
AlphaBlend失败,错误码87
如题,写测试程序的时候遇到了AlphaBlend函数失败,使用getlasterror获取错误码是87。找错找了好久,下面记录下。1.源DC的位图不是32位的。源DC就是指该函数的第二个HDC,第一个是目标DC,这个在微软的BLENDFUNCTION结构体说明(见msdn)里有提到。排查起来也容易,利用BITMAP bmp;GetObject(hBitmap, sizeof(BIT...原创 2020-03-04 17:30:42 · 1032 阅读 · 0 评论 -
一点WM_ACTIVATE消息的说明记录
转自:http://blog.youkuaiyun.com/guoqiang721029/archive/2005/03/18/322758.aspx消息: WM_ACTIVATE参数: fActive = LOWORD(wParam); // activation flagfMinimized = (BOOL)HIWORD(wParam); // minimized flaghwndPr...转载 2015-12-08 10:46:20 · 1000 阅读 · 0 评论 -
Error code of Media server (MediaPlayer内核异常码说明)
Error code of Media serverHRESULTDescription0x000D0000The requested operation is pending completion.%00x000D0001The requested operation was aborted by转载 2015-12-08 10:59:05 · 14428 阅读 · 2 评论 -
CreateProcess 创建带命令行参数的进程时,报错或者提示内存位置无效的可能的一个原因
可能的一个原因:命令行参数使用了常量。例如:CreateProcess(NULL, "notepad",NULL,NULL,FALSE,CREATE_NO_WINDOW,NULL,NULL,&si,&pi);解释:pszApplicationName和pszCommandLine分别表示进程使用的可执行文件名和向其传递的命令行字符串,注意pszCommandLine是PTSTR原创 2017-07-15 15:25:07 · 3289 阅读 · 1 评论 -
GDI+拉伸或者缩放图片并另存为
其实就绘制一个图片然后存为文件,同理也可以自己作画,然后保存为文件。直接上代码,这里只是另存为了png格式,如需另存为其他格式,请自行查询。void Saveimg(const wstring& strsrcImg,const wstring& strdstFile,const int& nDstX,const int& nDstY){ Bitmap ...原创 2019-06-25 18:42:48 · 1365 阅读 · 0 评论 -
获取固定到任务栏的快捷方式的图标
这是之前不知道从哪里找到的demo代码,是获取固定到任务栏的快捷方式的图标信息的。也就是将此程序锁定到任务栏后,通过下面的代码可以获取到锁定到任务栏的信息。相信也可以实现锁定到任务栏,我这里仅仅是搬运过来备忘。代码实测可以运行。#include <stdio.h>#include <stdlib.h>#include <locale.h>#inclu...转载 2019-06-24 10:44:22 · 1176 阅读 · 0 评论 -
windows窗口取消贴屏幕上边自动最大化的方法
1.对于固定大小的窗口,直接取消掉WS_SIZEBOX属性即可。LONG styleValue = ::GetWindowLong(hWnd, GWL_STYLE);styleValue &= ~WS_SIZEBOX;::SetWindowLong(hWnd, GWL_STYLE, styleValue);这样有一个问题,就是对于可以拖拽边框自由调整窗口大小的需求,满足不了,...原创 2019-06-27 16:03:46 · 2136 阅读 · 0 评论 -
不定义大量的消息宏实现事件与处理关联起来(避免写很多消息宏定义和消息映射)
标题也许不恰当,不必在意。本文主要是记录一种 消息(事件)==》消息响应(事件处理)的映射方式,避免使用大量的消息宏定义。对于传统的win32窗口、或者mfc窗口、或者duilib窗口等,常见的使用场景比如:工作线程执行某个函数处理=》处理完毕通知主线程(UI线程)=》主线程收到通知做出对应的处理在这个过程中,通知主线程通常使用PostMessage或者SendMessage等函数来发...原创 2019-07-31 16:30:14 · 368 阅读 · 0 评论 -
(转载)VC的内存泄漏检查
原文链接:https://blog.youkuaiyun.com/psbeond/article/details/99546363日期: 2016-12-20参考:MSDN:ms-help://MS.MSDNQTR.v90.chs/dv_vsdebugnative/html/cf6dc7a6-cd12-4283-b1b6-ea53915f7ed1.htm通过在MSDN中输入:DEBUG_NEW,可...转载 2019-08-14 10:46:25 · 295 阅读 · 0 评论 -
根据乱码分析编码错误原因
名称 示例 特点 产生原因 古文码 鐢辨湀瑕佸ソ濂藉涔犲ぉ澶╁悜涓? 大都为不认识的古文,并加杂日韩文 以GBK方式读取UTF-8编码的中文 口字码 ����Ҫ�¨²�ѧϰ������ ...转载 2019-08-21 14:42:15 · 12978 阅读 · 0 评论 -
记录一个try catch没有生效的原因,以便备忘
为了测试方便,直接建立的MFC对话框工程,直接选择Release编译。在代码中测试发现,添加了try catch之后,运行程序出现异常时仍然报错,而没有catch到,也没有进入catch的处理。测试代码如下,在一个按钮的响应函数中做的:void CTestMFCDlg::OnBnClickedButton3(){ // TODO: 在此添加控件通知处理程序代码 OutputDebu...原创 2015-09-11 11:59:44 · 3293 阅读 · 0 评论