我要给窗口加上水平滚动条和垂直滚动条。垂直的好办,GetTextMetrics(hdc,&tm)然后tm.tmHeight + tm.tmExternalLeading就是字体的垂直高度。问题是如何得到一串字符串的长度?字体不是等宽字体,其中可能有中、英文,全、半角问题。

解决方案 »

  1.   

    BOOL GetTextExtentExPoint(
      HDC hdc,         // handle to DC
      LPCTSTR lpszStr, // character string
      int cchString,   // number of characters
      int nMaxExtent,  // maximum width of formatted string
      LPINT lpnFit,    // maximum number of characters
      LPINT alpDx,     // array of partial string widths
      LPSIZE lpSize    // string dimensions
    );
      

  2.   

    GetTextExtentExPoint 和GetTextMetrics 都可以实现
      

  3.   

    我也曾用过这些函数,但感觉不很准确
    如通过GetClientRect得到的矩形,这个矩形可容纳10字符
    但通过函数得到的矩形或小或大
      

  4.   

    如果你对字体做了改变先将CFont选入DC中,在调用GetTextExtent,不然这个函数返回的是系统下的字体大小