首页

使用Visual Studio进行嵌入式系统开发  

我们很高兴地宣布,在Visual Studio 2022预览版中,我们添加了新的对嵌入式系统的开发支持。通过协同使用vcpkg包管理器,你可以快速的搭建好一个嵌入式开发环境并迅速展开工作。 在这篇文章中,我们将会介绍嵌入式工作负载的安装,如何通过vcpkg获取相关的依赖包,然后我们会展示在Visual Studio中借助外围寄存器和RTOS对象视图来进行代码编辑,构建,部署和调试一个嵌入式项目。我...

Makefile工具更新:错误匹配和编译数据库生成  

Visual Studio Code的Makefile扩展12月更新来了,这次的更新带来了错误匹配(这样就可以简单方便地在编辑器中查看错误和警告信息),另外还可以直接编译你的项目中的commands.json文件,以及其他的功能优化和Bug修复。下面我们具体来看看。 错误匹配 如果你使用过VS Code的C++扩展,则你应该很熟悉”Problems”窗口面板,在这个窗口中,...

使用WMI来获取系统信息  

WMI,是Windows Management Instrumentation的英文缩写。它是一个用来读写系统配置信息的接口,另外它还支持脚本化语言访问。有了这个玩意,你就可以不必专注细节,将节省下来的时间用来享受生活,我看,挺好。 下面是一个例子,代码很简短,主要是用来枚举当前系统的所有CPU信息并将它们的基础信息打印出来。 要测试上面的脚本代码,很简单,将这段程序代码保存为一段js文件,例如...

外壳如何确定程序是否支持长文件名的  

当你注册你开发的程序为文件拓展处理程序时,外壳需要判断你的程序是否支持长文件名,这样它就可以决定向你的程序传递长文件名(路径中可能包含空格,所以在注册脚本中请为文件路径添加上双引号,例如”%1″)还是短文件名。 规则很简单:外壳会检查你的程序的的PE头部,来判定程序的类别。 > 如果它是一个16位的程序,则外壳会这样假设:如果程序被标记为”兼容Window...

关于ListView控件的兼容性的一则轶事  

ListView是一个用来呈现数据的,非常强大的控件。当它处于报告模式(report mode)时,它会创建一个列头控件,用来显示表格中每一列的标题。这个列头控件是ListView控件的属性,但是ListView还是十分善意第提供了一个获取其句柄的方法,这样你就可以操作列头控件。 但是,有些开发者却滥用了这种善意。 在原始版本的ListView控件中,它没有使用列头控件条目的LPARAM来保存任何...

实现多次鼠标点击  

另一个人们会问起的问题是,”如何实现鼠标的三次点击或者更多次点击?” 如果你读过上一篇关于双击的文章,并理解了其中所用到的算法,则将它扩展到三击也会十分自然。你需要做的第一件事是,将CS_DBLCLKS风格从类中移除,因为我们希望手动管理鼠标的点击。 接下来,你需要重新实现Windows窗口管理器所使用的相同算法,并实现鼠标三击而不是双击。让我们动手试试,将如下代码添加到例...

Windows将鼠标单击转换为双击的原理  

对于这个问题,我还是建议你先看看MSDN技术文档中关于鼠标点击方面的内容,因为这些内容是我们开展研究的起点。我也假定你基本了解鼠标的单击转换为双击的基本工作原理。 在阅读了相关的MSDN文档之后,下面我们来看看文档中的设计以及它如何影响你自己的用户界面设计。 首先,有些开发者将鼠标双击动作设计为执行不同于鼠标单机的独立任务。他们想知道是否可以在处理鼠标双击消息时,安全的忽略掉WM_LBUTTOND...

任务栏发明之前,窗口是如何最小化的?  

在Windows 95操作系统引入资源管理器之前,Windows的桌面是一个非常与众不同的存在。 当时的桌面上的图标并不代表文件,而是当你最小化一个程序时,它会最小化成为桌面上的一个图标。如果你希望打开一个已经最小化的程序时,你必须在桌面上寻找它对应的图标,有可能你还需要最小化其他程序,从而让这个图标可见,然后双击对应的图标,从而恢复窗口的显示。(当然,你可以使用ALT + TAB这个组合键进行程...

有时候你并不能获取光标下的文本

我在之前的一篇文章中有介绍到如何获取鼠标光标下的文本,聪明的你一定发现了这样一个现象:有些程序可以正常获取,而有些程序却不行,这是为啥呢? 这取决于这个程序的实现。有些程序在开发的时候,就非常注重对屏幕阅读器的支持。例如,IE浏览器在开发的时候,就对ActiveAcessibility有出色的支持,因为开发团队认为,浏览器是那些残障人士了解这个世界的大门。 相对来说,其他程序的支持力度就没有那么好...

一种最奇怪的检测Windows NT系统的方法  

我的一位同事推荐了下面的代码为年度函数(Function of the Year),他也是第一个报告Windows Beta版本使用了一个值得怀疑的URL的人。 我不得不承认,这段代码确实令人印象深刻。和所有其他检查操作系统版本的方法相比,通过检测内存映射文件里的未公开实现细节来判断操作系统版本,确实是非常具有创造性。 请看代码 请不要诧异,这段函数并没有关闭映射文件句柄,并在你每次调用此函数时...