函数原型:int DrawText(HDC, hdc, LPCTSTR lpString, int nCount, LPREST lpRect, UINT uFormat);rect := rect(0,0,30,0);
使用DrawTextW(hDC, 'aa', -1,  rect, DT_CALCRECT  or DT_CENTER or DT_VCENTER)调用后,rect变量返回的区域中每个成员代表什么?

解决方案 »

  1.   

    rect返回的是'aa'居中显示的矩形,其大小与'aa'的字体相关
      

  2.   

    DT_CALCRECT选项使DrawText只是计算并返回一个可显示字符串的矩形,并不显示字符串
      

  3.   

    我知道DT_CALCRECT只是计算,并不显示。
    我现在知道了,返回的rect是扩展后的显示区域,DT_CALCRECT会扩展rect的宽度和长度,即right和bottom,返回的rect是以传入的(rect.left,rect.top)为原点扩展right和bottom后的一个区域,drawtext并不会改变rect.left和rect.top。返回的rect并不是已经居中了的区域,只是一个已经经过计算的需要显示大小的区域,需要你自己用offsetrect来把返回的rect移动到你想要显示的位置(比如居中的位置)