《Windows程序设计》中滚动条程序相关的一些知识点梳理

 

x = cxChar * (1 - iHorzPos) ;

这行代码起初理解不了,不明白为什么要用“1 - iHorzPos”,其实调整一下顺序更容易理解;

x = cxChar * ( - iHorzPos + 1) ;

也就是说iHorzPos取负值然后再加1,取负值的原因其实是一个逻辑问题:它是与客户区的原点(0,0)是相对而言的,也就是说你在窗口过程的WM_PAINT中通过TextOut函数输出字符串到客户区,

TextOut (hdc, x, y, psText, iLength) ;

输出以(x,y)为起始点,为简便起见,假设这个点就是(0,0)点

这时候回忆一个现象,当你水平向右拉动滚动条时,客户区中的内容是向左去的,其实是沿着“-X”的方向向左去的,滚动条向右加1,TextOut实际输出的位置就变成(-1,0),x坐标一旦变成负,就相当于有字符输出到左侧客户区以外的区域,其实此时输出到客户区左侧外部的这部分内容是看不到的(同255页“图 7-11”程序一样,放大窗口可以看到)。

 

 

 

posted on 2013-06-12 21:56  毋忆典藏  阅读(158)  评论(0编辑  收藏  举报