- 博客(67)
- 资源 (6)
- 问答 (1)
- 收藏
- 关注
原创 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
232
原创 MFC给编辑框(Edit)控件增加文件拖入的支持
如果需要多文件同时拖入,要自行改造。这里提供的是仅编辑框(Edit)控件接受文件拖入,而不是整个窗口去接受文件拖入。上述.h里面也说了,引入后添加控件变量,需要在OnInitDialog里面添加消息允许之类的。类似文章也有很多,本文原始代码也是来自网络的整理。下面提供源码,使用说明包含在源码的头文件里。
2024-10-12 09:39:52
596
原创 windows通过命令行设置防火墙来禁止指定程序联网
action表示规则的动作,其中block表示禁止,allow表示允许,bypass表示绕过防火墙;(allow仍然需要经过防火墙,受到防火墙的其他安全检查,bypass表示完全绕过防火墙)如果想了解更多的规则,比如指定端口,指定地址,指定协议,将规则应用于服务等等,可以自行到命令行查看,命令行给出了示例以及说明。name表示规则的名字,规则名字可以重复但是尽量不要重复,因为后续修改和删除规则都依赖于规则名字;dir表示控制的方向,其中out表示出站(向外发送),in则表示入站(自己接收);
2024-07-31 12:21:53
1162
原创 无标题栏窗口通过消息模拟拖动窗口时,无法拖动的一个原因
在使用DUI库或者web控件来做窗口和UI时,常常遇到一个问题:整个窗口如果设置了CAPTION区域,那么在CAPTION区域中,web页面的内容无法正常响应鼠标事件,如果不设置CAPTION区域,那么对于窗口的拖动又有影响。简单来讲,就是js里面监听对应元素的mousemove事件,然后判断鼠标是按下状态,就调用c++代码(或者通知c++),把js里面event.movementX和event.movementY也顺便带给c++,c++里面去移动窗口即可。而且跟随窗口跟随的也很完美。
2024-07-30 18:14:53
405
原创 vcpkg或者命令行需要设置代理时如何设置
当然,如果有git的图形化程序,比如tortoisegit,那么直接在它的setting-network里面,手动设置也可以。这样就可以临时生效。如果这个cmd窗口关闭了,那么代理设置也就无效了。
2024-07-22 14:56:27
1209
原创 使用vcpkg编译curl
最后,其实vcpkg在windows上非常好用,许多原本需要交叉编译或者跨平台编译的库,如果vcpkg支持,都可以考虑直接用vcpkg来编译。定制编译特性大致和上面的curl差不多。前言:curl目前写这边文章的时候,已经是8.8.0版本了。在win上面编译一份支持各种特性的不是特别容易。因此偷懒使用下vcpkg来编译,方便又快捷。
2024-06-12 18:08:48
911
原创 mac系统安装steam报错-解决办法
今天给虚拟机装了个苹果系统,然后想装个steam,从steam的官方下载安装steam_osx.dmg时,总是报“steam_osx已损坏,无法打开,请移动到废纸篓“。双击steam_osx.dmg时,弹出一个弹窗,左边是steam的图标,右边是applications,然后你双击左边的steam图标,提示“steam_osx已损坏,无法打开,请移动到废纸篓“。这个时候不要动弹窗和提示,在底部的工具条中,找到steam的图标,右键它,右键菜单里面选 选项-在程序坞中保留。
2024-05-08 17:13:27
5815
1
原创 给EmEditor添加自定义外部工具DuilibPreviewer
2.左侧选择 显示,右侧就看到主题了,建议主题下拉框里直接选择MinimalZen,挺省事的,想要自己折腾配色方案的,自己去根据下边的条目一点一点设置就行了。duilib是一款xml描述UI布局的优秀的c++开源界面库,为了方便开发布局UI,有网友制作了预览工具DuilibPreviewer,源码链接。3.点 按下新的快捷键 下发的编辑框,按下你想用的快捷键,比如ALT+F10,编辑框出现你按下的快捷之后,点分配。4.看到快捷键到 当前键 下边的框里,然后点确定,就设置好了,可以自己按快捷键试试。
2023-11-20 11:23:43
397
原创 记录win10安装visualAssistX无反应的一种情况
解决办法:强制结束安装进程,关闭vs2008,右键文件属性,然后兼容性标签页,选择以兼容模式运行这个程序,兼容性选win7就行。应用-确定,再次双击运行就正常显示安装界面了。找了个va_X_2366的安装包,运行后没反应,界面不出来,还以为闪退了,查看任务管理器发现有进程在,只是内存占用48K后没动静了。项目原因,要用vs2008,没有VA_X写起代码来太难用了。
2023-07-28 09:32:46
2518
4
原创 c/c++使用ffmepg库获取视频信息(宽高时长等)
备忘一个使用ffmepg获取视频的宽高时长等信息的代码,是使用ffmepg的api不是通过exe命令行的方式。至于用的ffmepg库和头文件等,我传github和优快云各一份。
2023-05-08 11:21:03
1417
原创 c/c++代码获取网络时间(从NTP授时服务器获取)
有时候需要获取网络时间,有没有自己的服务器去返回,那么可以考虑从NTP授时服务器获取,windows的同步网络时间就是从NTP授时服务器获取的。代码比较粗糙,比如没有加winsock2.h等头文件,比如没有WSACleanup()等,NTP授时服务器协议采用UDP,端口一般为123,下面给出从github上整理的代码,代码我是在win下面跑的,一切正常。linux和unix下,稍微改改也可以跑。,授时服务器地址选用的是阿里云的公共NTP服务器。
2022-08-20 09:50:03
5674
原创 win11上读取操作系统名称
操作系统的名称可以从注册表中读取。查找这个信息的思路是先运行msinfo32命令,或者直接运行C:\Windows\System32\msinfo32.exe,就能查看系统信息了,然后找到自己想要的读取的信息,运行regedit打开注册表,在注册表里面搜索对应的信息,可以多搜几处,选取比较合理的位置来读取。其他比如系统名称,系统型号,系统sku,都是可以找到它们的...
2022-06-16 15:47:00
1795
转载 Edge 无法翻译此页面
之前用edge还不错,尤其是翻译功能,还有pdf,甚至朗读功能,都非常强。插件商店也好用。最近突然翻译不能用了,一直都是无法翻译此页面,那么自己手动选个单词去翻译,也是一样翻译失败,请重试。终于在某乎找到大佬的解决办法了,22-03-018 目前为止亲测可用。IP地址已更新。原链接里面的IP地址不能用的,请使用本文中的IP地址。如何解决Edge浏览器无法翻译及下载/同步扩展问题https://zhuanlan.zhihu.com/p/457789773下面直接把解决办法也转过来,给不想跳转的同学用。
2022-03-03 11:26:29
21003
12
转载 windows应用商店或者其他微软应用打不开的修复办法
最近突然发现微软自带的那个便笺打不开了,想在应用商店里面重装一下,又发现windows store也变成灰色的,并且有个小叹号,打不开了。右键这个store,设置里面重置也没用。最后在某乎上面看了个回答,照着试了试,发现可以了。这里把步骤记录下,用作备忘,有类似问题的也可以试试。1.打开Windows Powershell,记得右键用管理员权限打开。2.输入 get-appxpackage *store* | remove-Appxpackage,然后回车执行。3.执行完后,手动重启系统。4
2022-01-17 09:58:26
3882
原创 duilib 动态多语言支持
最近又有朋友问我duilib多语言的支持,干脆做个demo,顺便简单写个介绍,大家仅供参考,有更好的方案页欢迎交流。demo地址:https://github.com/juhuaguai/duilib/tree/master/MultiLanguagDemo上图是demo的效果,不用重启应用程序,直接切换,界面直接就更新了。原理就是依赖于duilib里PaintManager里面的多语言接口。核心是%{i},i是整型,可以认为是ID。1.设置控件的文本内容为%{0};2.通过CPa.
2021-12-29 17:34:34
1156
原创 获取CPU型号和序列号
主要参考文章:关于CPU序列号的问题,以及如何获取×64下CPU的ProcessorID_fudong071234的博客-优快云博客前几天经过查资料,得到网络上获取CPU序列号的方法是错误的,首先我找到了一篇论文,这篇论文里面是这么说的:这篇论文是错误的。这篇是错误的这篇是错误的!!!!!!!!!2、CPU序列号CPU序列号是一个建立在处理器内部的、唯一的、不能被修改的编号。它由96位数字组成。高32位是CPUID,用来识别CPU类型。低64位每个处理器都不同,唯一地代表了该处理器。CPU号可以用来识别h
2021-09-24 16:14:58
4438
原创 服务进程里面去创建带窗口的进程(备忘)
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
原创 再谈duilib控件自绘
之前写过一篇duilib自绘,其中主要介绍了PostPaint。这个由于机制原因,会导致一直绘制在本窗体最上层(当然还是比子窗口级别低的),这样有时候切换tab页之类的,会出现自绘的东西还在,不能完美跟随控件。下面重新介绍下duilib的绘制流程。先介绍Paint,DoPaint,PaintBkcolor,PaintBkImage,PaintStatusImage,PaintText,PaintBorder,DoPostPaint 这些paint函数的大致作用以及调用的时机。Paint函数是源头,从
2021-09-10 16:59:13
1631
原创 github使用Personal access tokens的方法
已经2021年9月份了,不知道还有朋友遇到这个问题没。最近再次向github提交代码,突然提示:Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.大致意思就是2012.08.13之后,输入账号密码的方式来向github仓库提交代码等行为不再被支持。请使用personal access token方式来替代。具体操作方法:0.直
2021-09-06 11:19:05
5611
1
原创 win10系统关机再开机与重启,某些服务表现不同的一个原因
之前同事分析过LSP插件重置命令,再某些机器上执行之后,关机再开机,LSP插件仍然没有被清理,被某些系统组件加载。重启却能正常被清理。 找了下原因,发现是win8之后的新特性:快速启动。最近群里又有大佬遇到服务关机再开机不启动,选择重启却一些正常。最后发现仍然是:快速启动这个导致的。下面简单介绍下快速启动,内容来之网络(大部分来自知乎https://zhuanlan.zhihu.com/p/45590515,若侵,私我删)。快速启动原理和休眠类似,但是所有用户进程(比如你开的记事本,浏览器之.
2021-03-25 14:30:03
1271
原创 GDI+缩放拉伸旋转图片时出现黑边黑框等问题
之前用GDI+做图片旋转,发现图片旋转后会漂移,偏离原中心位置几个像素。后来发现用GDI+的InterpolationModeHighQualityBicubic高质量模式去缩放或者拉伸图片时,可能会出现边缘少几个像素或者黑边问题。解决方法:Gdiplus::Bitmap dstBmp(nCW, nCH);Gdiplus::Graphics gdip(&dstBmp);gdip.SetInterpolationMode(Gdiplus::InterpolationModeHigh
2021-03-02 19:22:26
1307
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
1870
原创 duilib里面隐含的一个可能递归的bug
duilib的容器的滚动条是根据子控件来判断是否展示的。如果父控件可以根据情况在SetPos里面动态调整子控件的大小,在这个条件下,存在这样一种情况:1.滚动条一开始不展示。2.容器控件SetPos里面自动计算出子控件需要展示滚动条,ProcessScrollBar里面展示了滚动条并重新调用SetPos来重新计算子控件位置。3.滚动条展示后,SetPos里面重新调整了子控件的大小,计算了滚动范围等,ProcessScrollBar里面发现新的子控件大小算出来的范围又不需要滚动条了,于是不展示滚动
2021-02-25 19:44:18
193
原创 HEAP CORRUPTION DETECTED 内存错误的一个原因
今天写demo代码的时候,忽然free释放时候的报错。错误内容大致是:HEAP CORRUPTION DETECTED: after Normal block (#577) at 0x02F01BA0.CRT detected that the application wrote to memory after end of heap buffer.示例代码大概是这样wchar_t* ptr = (wchar_t*)malloc(8*sizeof(wchar_t));wcscpy(ptr,
2021-02-25 19:28:39
597
原创 duilib支持apng,gif支持文字、背景、图片的file/source/dest/xtiled/ytiled/mask等
duilib官方库提供了个gif控件,用的是gdi+解析和绘制的,同时没有接入duilib控件本身的背景色,文本等绘制,包括图片的source/dest/xtiled/ytiled/mask等属性也都没有做支持。可以满足基本的使用需求。我需要一些效果比较好的动态图来做展示,gif显然不行,另外的动图就是webP和Apng,最决定先支持apng,webP后续有需求的话,再研究支持。源码仓库地址:https://github.com/juhuaguai/duilib其中关于gif和apng的改动
2020-12-31 16:41:26
719
原创 程序运行时提示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
52350
21
原创 修改TTF文件或者otf文件或者woff文件内的字体名称
使用软件为FontCreator,我这里用的版本为12,官网为http://www.high-logic.com/,是收费软件,但是有pojie版。1.打开FontCreator,将ttf文件拖到FontCreator打开。2.菜单项选择Font=》Properties,打开Font Properties弹窗。3.在弹窗里面看到有几个子标签页,其中Identification标签页里面的 Font Family即为字体的英文名,自行修改成自己需要的值。4.在Custom标签页里面,可以看到.
2020-12-08 16:54:15
5611
原创 duilib直接加载HBITMAP作为背景图
很简单,利用CPaintManagerUI的方法即可。const TImageInfo* AddImage(LPCTSTR bitmap, HBITMAP hBitmap, int iWidth, int iHeight, bool bAlpha, bool bShared = false);该函数作用是添加位图到自己的资源里面参数说明:bitmap:图片名,类似于xxx.png等...
2020-03-04 18:05:08
1209
原创 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
1031
原创 git设置代理,win命令行设置代理
git设置代理,参考文章:https://blog.youkuaiyun.com/tanningzhong/article/details/52817399//socks5的代理设置如下:git config --global http.proxy 'socks5://127.0.0.1:1080'git config --global https.proxy 'socks5://127.0.0....
2019-12-30 10:01:07
1090
转载 根据乱码分析编码错误原因
名称 示例 特点 产生原因 古文码 鐢辨湀瑕佸ソ濂藉涔犲ぉ澶╁悜涓? 大都为不认识的古文,并加杂日韩文 以GBK方式读取UTF-8编码的中文 口字码 ����Ҫ�¨²�ѧϰ������ ...
2019-08-21 14:42:15
12976
转载 (转载)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
原创 不定义大量的消息宏实现事件与处理关联起来(避免写很多消息宏定义和消息映射)
标题也许不恰当,不必在意。本文主要是记录一种 消息(事件)==》消息响应(事件处理)的映射方式,避免使用大量的消息宏定义。对于传统的win32窗口、或者mfc窗口、或者duilib窗口等,常见的使用场景比如:工作线程执行某个函数处理=》处理完毕通知主线程(UI线程)=》主线程收到通知做出对应的处理在这个过程中,通知主线程通常使用PostMessage或者SendMessage等函数来发...
2019-07-31 16:30:14
368
原创 子窗体不会触发WM_LBUTTONDOWN,只会触发WM_LBUTTONUP消息的原因
这里感谢下https://blog.youkuaiyun.com/wyy1991990/article/details/19629831文章的作者,要不是这篇文章,我简直要怀疑人生了。子窗口无法响应WM_LBUTTONDOWN消息,但是响应WM_LBUTTONUP,原因是和父窗口处理WM_NCACTIVATE相关。下面是另外一篇文章的关于这个消息的说明,不确定是否准确当WM_NCACTIVAT...
2019-07-22 15:47:11
2753
原创 编译兼容xp系统的libcurl:MT编译+动态库
目标:编译出libcurl动态库,使用MT编译选择不依赖运行时库,能够在xp系统中调用,支持gzip和https编译的目标库和版本:brotli-1.0.7、c-ares-1.14.0、libssh2-1.9.0、nghttp2-1.39.1、openssl-1.1.1c、zlib-1.2.11、curl-7.65.1简单给出了各个库的编译流程和编译好的dll+libgithub仓库地...
2019-07-10 10:05:58
1459
原创 windows窗口取消贴屏幕上边自动最大化的方法
1.对于固定大小的窗口,直接取消掉WS_SIZEBOX属性即可。LONG styleValue = ::GetWindowLong(hWnd, GWL_STYLE);styleValue &= ~WS_SIZEBOX;::SetWindowLong(hWnd, GWL_STYLE, styleValue);这样有一个问题,就是对于可以拖拽边框自由调整窗口大小的需求,满足不了,...
2019-06-27 16:03:46
2124
获取托盘图标信息的工具
2018-06-22
windows查看端口占用
2017-10-26
duilib中将TabLayout的子页面封装为container的Demo
2015-04-28
中文版的Learn_iphone_and_ipad_cocos2d_game_development
2013-11-05
Qt中,到底如何实现主窗口和子窗口之间的通信?
2013-11-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人