为什么SetParent会失败

SetParent是Windows提供的设置窗口父窗体的API,函数原型比较简单: 1234HWND SetParent( [in] HWND hWndChild, [in, optional] HWND hWndNewParent);

Windows编程

窗口如何逃脱显示桌面指令

在Windows系统中,在按下Win+D快捷键等操作执行“显示桌面”时,会将桌面上的所有窗口都最小化到任务栏,再次按下还原窗口。在显示桌面时,有些窗口仍然保持显示状态,不被最小话,即称之为逃脱显示桌面指令。 实现逃脱显示桌面的方式有三种,每种方式有不同的应用场景。

Windows编程

认识Windows顶级(top-level)窗口

在Windows API中经常会出现关于顶级窗口的描述,如 EnumWindows函数的说明: Enumerates all top-level windows on the screen by passing the handle to each ...

Windows编程

Qt中图片按九宫格模式缩放

我们在缩放图片时都期望能保持原长宽比不变,这样可以防止图片变形,但事与愿违,有些时候我们没办法保持原图的长宽比不变,比如需要在保持图片高度不变的情况下仅横向拉伸等,此时就会导致图片变形。为了解决这种问题,我们可以考虑使用九宫格模式进行图片的缩放。 九宫格模式就是将图片切分为九块(不强制等分)。如下图所示,在图片缩放时,我们通常保持1、3、7、9四个顶点位置的图片不变,对2、4、5、6、8五个区域进行缩放。

Qt

小懒(转载)

人生于世,一味勤,不见得是好事。 与人处,得小懒。管头管脚,大到原则问题,小至鸡毛蒜皮,样样都想插一手。这样的相处模式,除了惹人厌,再难有其他结果。容他人藏点隐私,给彼此留点空间,这样的小懒,比起所谓的无微不至更令人欣赏。 与人言,也得小懒。话不能说得太满,意犹未尽之处,于人于已都是余地。留有这样的余地,日后才好转圜。同样的意思,横冲直撞与婉转留余,可能带来不同的结果。留一线,好相见,这样的留,自然是小懒。

剪切板

MSVC版本的二进制兼容性

Visual Studio 2013 及更早版本中的 Microsoft C++ (MSVC) 编译器工具集不保证主版本间的二进制兼容性,无法链接由不同版本工具集生成的对象文件、静态库、动态库和可执行文件,因为ABI、对象格式和运行时库不兼容。 微软在 Visual Studio 2015 及更高版本中改变了这个行为。对于自 Visual Studio 2015 以来的所有版本(该版本号都以 14 开头,如Visual Studio 2015、2017、2019 和 2022工具集的版本分别为 v140、v141、v142 和 v143)由其中任一版本编译器编译的运行时库和应用都具有二进制兼容性。 假设你使用 Visual Studio 2015 生成第三方库,你仍可在 Visual Studio 2017、2019 或 2022 生成的应用程序中使用它们,无需使用匹配工具集重新编译。 同时最新版本的 Microsoft Visual C++ 可再发行程序包(运行时库)也兼容所有老版本,无需为不同版本安装不同的运行时库,统一安装最新版本即可。

编程基础

Vcpkg使用仓库最新代码

在向Vcpkg提交port时,我们会不断地对仓库进行修改和调试。如果采用REF方式指定源码版本,则需要不断地修改REF和SHA512,调试起来比较繁琐,我们可以采用HEAD_REF的方式来简化调试流程。 在portfile.cmake文件中指定HEA...

CMake

CMake按目录层级进行分组

为了提高项目的可维护性,我们通常会将不同用途的代码文件放到不同的文件夹中,如头文件放到include目录,源文件放到src目录,第三方库放到3rd目录等。 当使用CMake生成Visual Studio工程时,我们亦希望在Visual Studio中能看到这样的文件结构。当然,我们可以使用source_group指令进行添加,但当目录和层级很多时,这样添加起来就显得比较繁琐了,本文介绍一种懒人方法。

CMake
12345622