背景 因为自己协同工具用win32开发,自己想加载一个?图标,如果直接加载bitmap非常简单,直接添加资源,然后设置bitmap的资源id即可,但我想加载一个png,因为Png可以支持透明,而且显示png也是一个非常常见的需求 解决思路 google一下基本全部都是用gdi+ 渲染到子控件中 直接渲染的话,如果控件被遮挡是不会显示的,所以这个必须控件子类化,在wm_paint进行渲染png 代码 简单封装一个基类,方便渲染子类化 #include "pch.h" #include "…
背景 因为自己协同工具用win32开发,自己想加载一个?图标,如果直接加载bitmap非常简单,直接添加资源,然后设置bitmap的资源id即可,但我想加载一个png,因为Png可以支持透明,而且显示png也是一个非常常见的需求 解决思路 google一下基本全部都是用gdi+ 渲染到子控件中 直接渲染的话,如果控件被遮挡是不会显示的,所以这个必须控件子类化,在wm_paint进行渲染png 代码 简单封装一个基类,方便渲染子类化 #include "pch.h" #include "…
背景 自己用jsoncpp已经几年了,一直都用 toStyledString来转换字符串,但这种格式化字符串,但如果用来传递数据,那么有许多多余数据,所以我一直想找到压缩的字符串,网上找了一些关键词基本都没有找到,突然有一天我直接看一下jsoncpp的源代码。 过程 查看toStyledString 代码 std::string Value::toStyledString() const { StyledWriter writer; return writer.write( *this ); } 题外话:用vsco…
背景 用vs2019 c++开发软件,发行版本需要运行库,因为别的电脑不一定安装运行库,所以要特别处理 方案 编译的exe,c++运行库设置MT(静态模式),代码集成在你的exe中 导致exe变大 其他第三方库可能冲突【可能第三方库需要改变编译模式】,常见冲突在这里 存在多份运行库代码,增大安装包体积 简单 需要动态库DLL 放在exe执行目录 需要复制多个DLL,所以要知道依赖哪些库 安装运行库 增加安装包体积 安装运行库万一冲突,还可能失败【对于阉割系统,太多麻烦的事情】 增加安装时间 选择 主流方案都选择第二…
背景 POCO 是一款全面的c++开发框架,基本设计大部分常见使用功能,但没有直接std::string to utf8 string代码,网上找了好久找到(有Unicode std::wstring 转换utf8 std::string) 代码 Poco::Windows936Encoding cp936; Poco::UTF8Encoding utf8; Poco::TextConverter converter(cp936, utf8); std::string src = "你好"; s…