显示的字体的宽度和高度跟一个页面的高度和宽度的值有关。
例如,Richedit的字体的高度为16Pixel,宽度也为16Pixel,而Richedit的高度为160Pixel,宽度为64Pixel,那么,就可以计算出来了!每一行可以显示4个字符,一共可以显示10行,那么一页就要显示40个字符!
上面的仅仅是举例说明,没有实际的含义,实际上要考虑的东西太多了,例如行间距,字符间距,而且有的字符的字体大一些等等。

解决方案 »

  1.   

    照Kingron(WinAPI)说的做,应该会有结果吧
      

  2.   

    文字处理的学问真的很大。呵呵。我看的资料也是断断续续。
    首先要了解 Windows GDI。了解设备坐标和逻辑坐标。win操作系统的字体高度的度量单位是逻辑坐标系统,设备单位。他只负责知道windows在屏幕上的特定区域内有多少个像素。找些windows原理的书有详细的介绍文字排版问题。为了把设备单位转换为正文行,知道一行正文的高度。
    HDC PaintDC := GetDC(hwnd);
    GetTextMetrics(PaintDC, &TextMetrics);
    ReleaseDC(hwnd, PaintDC);
    TextHeigth := TextMetrics.tmHeight + TextMetrics.tmExternalLeading;
    这样以后要确定一个设备单位和一行字符高度的比率。字符滚动多少行,设备单位就要滚动多少行。
    得到比值滚动、翻页就好处理了。这需要精确的算法。
    关键找些windows原理的书看看。也许有用。
      

  3.   

    对不起,我想我说得不太清楚:
    我的意思是可视化的分页也就是做出如word那样的每页之间有很明显的分页效果,上下两页可以自如卷动的样子出来。
      

  4.   

    自言自语:
    我可不可以这样,随着用户页数的增加,新增加一个控件(如RICHEDIT之类的),每个这样的控件用CANVAS作图来区别,在用户卷动时计算是否在CANVAS区。