在编写自绘编辑框的时候,遇到一个很麻烦的问题,看看大家有没有什么好方法?当在编辑框中输入的文字长度超过编辑框宽度时,怎么计算文字起始的绘制位置?当按下键盘上的END键时,此时光标来到的文字末尾,必然有一部分文字是被滚动到当前窗口的可视区域外部的。尤其是当输入光标在编辑框中间的时候,很可能前面被隐藏了一部分,后面也被隐藏了一部分,我必须要确定从哪个字符开始调用DrawText进行文字的绘制,或者说确定从那个坐标开始绘制(前提是把所有的文字先绘制到一个HBITMAP里面,然后再按坐标复制)。系统自带的默认编辑框是如何实现的??自绘编辑框

解决方案 »

  1.   

    求关注啊!!!!!
    通过计算每个字符的平均宽度,也是不可行的。 因为某些字体,不同的字符的宽度是不一样的。例如 i 与 M 的宽度是不同的这个问题难啊。
    还是有专门的API我不知道。。?
      

  2.   

    http://pan.baidu.com/share/link?shareid=298024&uk=187225499   我曾经写出来的。
    虽然还有BUG 但是也算好的了。 是通过数组。。 记录每个字符的宽度  然后在计算。 
      

  3.   


    你所说的这个数组是以下哪种情况?1、需要绘制的字符串有多少个字符,你所说的这个数组就有多少个元素?每个元素对应的是每个字符的宽度?2、由于汉字的宽度在同一个字体下是固定的,那么在你说的这个数组中,大约只需要255个元素,来存放ASCII码的字符的宽度?