为什么隐藏Owned窗口时,Owner窗口会被后置
最近在开发的时候遇到一个怪异的问题,问题背景:在程序中,有一个Owner窗口拥有多个Owned窗口,当关闭Owned窗口时,会调用ShowWindow
来隐藏该窗口,而不是真正的关闭。当最后一个Owned窗口隐藏时,理论上应该要激活Owner窗口,然而实际上激活的是位于Owner窗口下面的另外一个窗口。
最近在开发的时候遇到一个怪异的问题,问题背景:在程序中,有一个Owner窗口拥有多个Owned窗口,当关闭Owned窗口时,会调用ShowWindow
来隐藏该窗口,而不是真正的关闭。当最后一个Owned窗口隐藏时,理论上应该要激活Owner窗口,然而实际上激活的是位于Owner窗口下面的另外一个窗口。
如果你正在编写一个C++工具库,那么有可能需要知道一个容器是否关联容器。例如,你要写一个Contain()
工具函数,该函数用来判断元素是否在容器中。而且你希望对于不同的容器,总是使用性能最优的查找方式,也就是说,对于关联容器,使用find()
成员函数;而对于非关联容器,则使用std::find()
函数。
现在越来越多程序使用CEF浏览器来展示界面内容,以Web页面模拟原生界面。这种程序的Web页面内容大部分都来源于本地,因此加载速度一般都会很快。但是,与加载内容形成明显对比的是,创建CEF浏览器很耗时,大约需要1~2秒,这对用户体验造成很大影响。
有用户反馈了这样一个问题:当Word或者Excel打开了一个文件时,无法用我们的程序打开该文件,而用其它程序却能够正常打开。经检查,这是由于在打开文件时CreateFile
函数失败了,错误码是32,“另一个程序正在使用此文件,进程无法访问”。
你有没有遇到过不能使用输入法的问题?输入法明明切换出来了,也处于中文模式下,但无论如何也只能输入英文,非常令人恼火。此时不妨回想一下,在出现问题之前是否曾经使用微信的快捷键来截屏?
在我参与的项目中,使用了boost.filesystem进行文件操作。boost.filesystem在发生错误的时候会抛出异常,但是在大部分情况下这些异常是可以忽略的,例如,在检查文件是否存在的时候,发生错误可以等同于文件不存在。虽然boost.filesystem也提供了重载函数,通过输出参数返回错误来代替异常,但是在每个调用点都得定义一个输出参数,稍显麻烦。所以,为了简化客户代码,我们实现了一些包装函数,如下所示:
程序的静默退出,俗称闪退,是一个令人郁闷的问题。闪退发生的时候,没有任何提示,也没有留下任何现场信息(除了闪退之前一些没什么用的日志),导致很难去定位和解决。
二分查找是重要且常用的算法,在STL中自然少不了它的身影。本文介绍一下在STL中与二分查找有关的函数。
在《如何设置libcurl的动态超时值》中提到,动态超时值(通过CURLOPT_LOW_SPEED_LIMIT
和CURLOPT_LOW_SPEED_TIME
设置)比固定超时值(通过CURLOPT_TIMEOUT
设置)更符合实际需要,所以我一般只设置动态超时值,而不设置固定超时值。然而,在实际使用中发现,有时网络请求会一直没有结束,也就是说设置的动态超时值在某些情况下会失效。在阅读了libcurl的源代码之后,我发现原来动态超时值存在一个陷阱。