zoukankan      html  css  js  c++  java
  • 《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”程序一样,放大窗口可以看到)。

  • 相关阅读:
    deepin系统换软件下载源&商店卡死刷新空白问题解决
    php数组和json数组之间的互相转化
    php 获取数组个数的方法
    php 三种文件下载的实现
    win10激活
    deepin/linux安装exe
    deepin连接windows
    deepin升级微信
    deepin安装.net core
    在Deepin 15.9下安装Wine 4.0
  • 原文地址:https://www.cnblogs.com/tingshuixuan2012/p/3133207.html
Copyright © 2011-2022 走看看