首页

上一篇文章中的家庭作业解答  

所谓的小Bug 如果你到MSDN上查一下WM_VSCROLL消息的定义,就会发现其中的滚动条位置的定义是一个16位的整数。也就是说,如果窗口中绘制的条目超过65535,则你将无法通过拖动滚动条的滑块来显示最后的条目。 小测试 你可以修改之前程序中的g_cItems的值为100000,然后跑一下程序,看看效果。 修复方法 修复的方法是直接忽略掉消息处理参数中的pos参数,而是从滚动条中直接获取。...

滚动条第四章节: 添加一个自动比例滚动条  

自动比例滚动条 为了得到一个自动比例滚动条,你需要告诉Windows滚动条所覆盖区域的最大值和最小值,当前滚动条的位置以及滚动条滑块(Thumb,也称”页大小”)的大小。 一个比较麻烦的方法,是当显示区域最大值是可变的情况。这和GDI中的坐标计算有点不同:GDI中,一段范围,是不包含终结点的。这会导致在代码中出现类似”-1″这样的代码,用来对公式做出...

关于上一篇文章中提到的家庭作业  

今天来回答在上一篇文章中提到的”家庭作业”。 关于iMin的计算 iMin表示绘制区域的最小索引,所以简单的使用简单的截断除法就可以计算出来。 关于iMax的计算 关于iMax的计算,可以有两种不同的方法。 第一种方法 计算第一个不可见行(注意这里的”不”字)的向上进位值(Roundup)。还记得吗?一个矩形的坐标定义中,是不包含终结点(endpoi...

为什么XP中新开始菜单不使用”个性化菜单”  

问题 有人曾经问我一个问题:我想在Windows XP的开始菜单中使用个性化菜单(Intellimenus),应该怎么做? 我的回答是这样的 让我们先来假设:XP的开始菜单启用了Intellimenus。 你经常使用的APP是5个,其他的APP不是经常被使用。(因为曾有研究表明,一个典型用户日常最经常使用的APP个数是5个) 这些经常使用的APP会被放到MFU(最近经常使用的项目)中。 有一天,你...

滚动条第三章节: 优化我们的绘制代码  

之前代码的问题 从之前的代码中我们看到,在我们的绘制函数里绘制了所有的100行文本。这会带来一个问题:在一个窗口的可见区域里,可能只有部分行才会真正地显示出来(但我们全部绘制了),如果我们绘制的是大量的文本行,或者绘制单个文本行需要耗费比较长时间时,这会带来严重的性能问题。 如何解决呢? 我们想到的优化点:通过优化绘制部分的代码,实现只在窗口可见区域绘制文本行,对于其他无关区域不进行绘制,因为用户...

Visual Studio Code新扩展出炉:CMake工具  

楔子 CMake工具扩展之前是由vector-of-bool创建并维护的,目前微软已经从vector-of-bool手上接过这个扩展的维护担子。 来自微软的官方夸赞: 我们感谢vector-of-bool为我们带来如此美妙的作品。 关于这个扩展 CMake扩展可以为开发者在配置,编译,浏览和调试基于CMake的工程时提供帮助。 创建一个新工程 可以在一个不包含CMakeLists.txt的目录下,...

长标题: 为调试,启动和CMake工具设置环境变量  

楔子 有时候,你可能会想着自定义一些环境变量。目前很多构建系统都使用到了环境变量来定义其行为,另外,在调试目标程序时,也会需要PATH环境变量来确保相关的依赖项被正确地探测到。 在Visual Studio中有一个内建的机制来自定义环境变量,从而更方便的构建和调试CMake工程。 在最新版Visual Studio 2019 v16.4中,我们对Visual Studio的JSON配置文件做了一些...

为什么Windows没有一个所谓的”专家模式”?

我们经常会收到如下的用户反馈 “你们是不是可以在系统的某个地方设计一个滑动栏?比如,一个可以调节系统性能的滑动栏,它会呈现出一个范围,最左边是所谓的”新手”模式,最右边则是”专家”模式。在新手模式下,所有针对新手的系统设定将全部开启,而在”专家”模式,所有针对”Geek”的设定将全部开启。如...

EA:VS对Linux上的支持,让我们的开发人员很Happy!  

引子(有些地方叫楔子?) 美国艺电公司(Electronic Arts,NASDAQ: ERTS,简称EA),是全球著名的互动娱乐软件公司,主要经营各种电子游戏的开发、出版以及销售业务。美国艺电创建于1982年,总部位于美国加利福尼亚州红木城。知名游戏品牌:EA Sports的《极品飞车》系列,FIFA系列,NBA系列等等。EA Games的指环王系列,中土之战系列,荣誉勋章系列,命令与征服系列等...

新鲜货:C++ Build Insights告诉你为啥你的代码编译这么慢  

C++项目的编译应该越来越快才对 在Visual Studio 2019 16.2中,我们通过提升链接器性能来缩短工程的总体编译时间。今天,我们很高兴的引入一系列可以进一步提升编译速度的新玩意儿,我们就先叫它C++ Build Insights吧。 你是否在一边吃早餐一边编译代码的时候想过:编译器现在这会儿正在那鼓捣什么呢? 在C++ Build Insights中,我们可以帮助你解答上面的问题。...