首页

说说滚动条的两种类型

请记住,有两种类型的滚动条 一种是独立的滚动条控件。这种类型的滚动条有它自己的窗口句柄,因此你可以设置输入焦点以及可以做你能对窗口句柄做的其他所有操作。 要对其进行操作,只需要将滚动条控件的句柄传递给适当的滚动条函数(例如SetScrollInfo),并将SB_CTL作为nBar参数传递,以表明我们正在操作的是一个滚动条控件。 另一种类型是通过具有WS_HSCROLL和/或WS_VSCROLL样式...

析构函数在什么情况下应该声明为虚函数  

弄懂虚函数是人生一大乐事 如标题所言,一个C++对象的析构函数,在什么情况下,应该被声明为一个虚函数呢? (看到这一标题,我兴趣大增。) 首先,虚析构函数是什么意思呢?Well,你想想,一个类的虚方法是什么意思,就能明白虚析构函数是怎么一回事儿了。 如果一个方法被声明为虚方法,则当调用这个方法时,会调用具体实现此方法的对象方法,也称动态绑定。 如果这个方法不是虚方法,则会调用在编译期指针确定的对象...

关于InterlockedIncrement函数的返回值

蝎子 如果你仔细看看InterlockedIncrement和InterlockedDecrement函数描述文档,你会看到:在Windows NT 3.51和更早版本以及Windows 95上,返回值是函数执行结果的一个标志而已。 这是为什么? 80386指令集支持互锁的增量和减量操作,但是增量/减量操作的实际结果不会返回。该操作仅更新标志。结果,从CPU获得的关于操作结果的唯一信息是它是零,正...

如何以广播方式发送自定义Windows消息

发广播消息时需要注意的地方 当你尝试发送广播消息(通过HWND_BROADCAST)时,请记住,这个广播消息必须具有全局的含义。 之前的一篇文章中,我讨论了各种消息范围的含义。请注意,只有系统定义的范围(0..WM_USER-1)和注册的消息范围(MAXINTATOM .. MAXWORD)具有全局含义。其他两个范围具有类特定或应用程序特定的含义。 换句话说,你无法在WM_USER范围内广播消息,...

什么是__purecall?  

C++和C#中的虚函数 在C++和C#中,都有虚函数的概念。即使是指向一个基类对象的指针,在调用虚函数时,也会调用子类的实现。然而,在对象的构造和析构方面,C++和C#在虚函数的语法层面还是有些不同的。 C#对象在开始构造之前就作为其最终类型存在,而C++对象在构造过程中会更改类型。 下面是一个例子: 当一个派生对象被构造时,该对象将从Base开始,然后执行Base::Base构造函数。由于对象...

为什么硬盘指示灯每隔几秒钟闪烁一次?

有些人会经常看看硬盘指示灯 在Windows 95那个时代,人们会注意到:他们的硬盘指示灯会每隔几秒钟闪烁一次。 这是咋回事? 实际上,这根本就不是硬盘指示灯啦。Windows 95会周期性的检查你的CD-ROM驱动器是否插入有光盘。有一些计算机会没有将”硬盘驱动器指示灯”连接到硬盘而是连接到SCSI或IDE总线。因此,指示灯不一定表示硬盘驱动器的活动。任何总线数据传输,都...

如何获取鼠标下的文本  

什么是MSAA Microsoft Active Accessibility是基于组件对象模型(COM)的技术,它改进了辅助功能与在Microsoft Windows上运行的应用程序一起工作的方式。它提供了集成到操作系统中的动态链接库,以及COM接口和API元素,而且提供了用于公开有关UI元素的信息的可靠方法。 从上面的定义,我们得知:MSAA是一种将有关屏幕上对象的信息公开给辅助功能(如屏幕阅读...

为什么不能休眠单个进程  

有这么个问题 Windows操作系统可以整个机器休眠,但是为什么它不能休眠单个进程呢?也就是说,记录当前进程的状态,然后休眠,随后将进程状态恢复。 原因在于:系统中有一些状态不是进程本身携带的。 举个例子,假设一个进程打开了某个互斥量,然后进程休眠了。麻烦的事情来了,这个互斥量会被丢弃。如果互斥量对象之前是用来保护某些内部状态变量的,那么当进程从休眠状态中恢复过来的时候,它会认为它依然持有这个互斥...

优雅简洁但是错误的代码  

蝎子 不能仅仅因为看不到错误处理流程,就认为错误不存在。 有一本C#编程的书中对异常的进行了”高度评价”,下面是该书中的例子代码,我们来看看: 瞧瞧,这代码是多么优雅和简洁,异常确实是个好东西。 嗯,的确是非常简洁,也非常优雅,但是它是错误的。 我们假设在CreateIndexes中出现了异常。GenerateDatabase函数不会捕获这个异常,接下里这个异常会向上层传...

为什么编译器不能将foreach自动转换为for  

哲人告诉我们:勿过早优化 在编写C#代码的时候,开发者会发现:使用C#的foreach循环的性能会比对应的for循环要稍微慢一些。 foreach循环结构 for循环结构 我想说的第一件事是:这个性能差异,实在是太微小了,以至于可以完全忽略掉。 可千万别有这个想法:我如果把代码中的所有foreach循环改写为对应的for循环,程序的性能应该可以大大提升。这是不会发生的,因为循环的开销很少会出现...