为什么隐藏Owned窗口时,Owner窗口会被后置

最近在开发的时候遇到一个怪异的问题,问题背景:在程序中,有一个Owner窗口拥有多个Owned窗口,当关闭Owned窗口时,会调用ShowWindow来隐藏该窗口,而不是真正的关闭。当最后一个Owned窗口隐藏时,理论上应该要激活Owner窗口,然而实际上激活的是位于Owner窗口下面的另外一个窗口。

如何判断一个容器是否关联容器

如果你正在编写一个C++工具库,那么有可能需要知道一个容器是否关联容器。例如,你要写一个Contain()工具函数,该函数用来判断元素是否在容器中。而且你希望对于不同的容器,总是使用性能最优的查找方式,也就是说,对于关联容器,使用find()成员函数;而对于非关联容器,则使用std::find()函数。

如何避免预创建的CEF浏览器抢夺焦点

现在越来越多程序使用CEF浏览器来展示界面内容,以Web页面模拟原生界面。这种程序的Web页面内容大部分都来源于本地,因此加载速度一般都会很快。但是,与加载内容形成明显对比的是,创建CEF浏览器很耗时,大约需要1~2秒,这对用户体验造成很大影响。

文件的共享模式和访问权限

有用户反馈了这样一个问题:当Word或者Excel打开了一个文件时,无法用我们的程序打开该文件,而用其它程序却能够正常打开。经检查,这是由于在打开文件时CreateFile函数失败了,错误码是32,“另一个程序正在使用此文件,进程无法访问”。

使用boost.filesystem检查文件是否存在的正确方式

在我参与的项目中,使用了boost.filesystem进行文件操作。boost.filesystem在发生错误的时候会抛出异常,但是在大部分情况下这些异常是可以忽略的,例如,在检查文件是否存在的时候,发生错误可以等同于文件不存在。虽然boost.filesystem也提供了重载函数,通过输出参数返回错误来代替异常,但是在每个调用点都得定义一个输出参数,稍显麻烦。所以,为了简化客户代码,我们实现了一些包装函数,如下所示:

如何调试程序静默退出

程序的静默退出,俗称闪退,是一个令人郁闷的问题。闪退发生的时候,没有任何提示,也没有留下任何现场信息(除了闪退之前一些没什么用的日志),导致很难去定位和解决。

libcurl动态超时的陷阱

在《如何设置libcurl的动态超时值》中提到,动态超时值(通过CURLOPT_LOW_SPEED_LIMITCURLOPT_LOW_SPEED_TIME设置)比固定超时值(通过CURLOPT_TIMEOUT设置)更符合实际需要,所以我一般只设置动态超时值,而不设置固定超时值。然而,在实际使用中发现,有时网络请求会一直没有结束,也就是说设置的动态超时值在某些情况下会失效。在阅读了libcurl的源代码之后,我发现原来动态超时值存在一个陷阱。