CDC::GetTextExtentExPointI 是 MFC(Microsoft Foundation Classes)中的一个公共方法,用于获取以逻辑单位(logical units)为单位测量的指定字符数组的宽度信息。
BOOL GetTextExtentExPointI(const UINT *lpnCharWidths, int nCount, int& nFit, int& nDx, LPSIZE lpSize) const;

这个方法返回一个布尔值,指示是否成功获取文本的信息。如果成功,nFit 将包含适合的字符数,nDx 将包含每个字符的宽度,lpSize 将包含文本的宽度和高度。

参数说明:
  •  lpnCharWidths: 一个指向包含每个字符的宽度(逻辑单位)的数组。

  •  nCount: 字符数组的元素数。

  •  nFit: 输出参数,用于返回适合的字符数。

  •  nDx: 输出参数,用于返回每个字符的宽度。

  •  lpSize: 输出参数,用于返回文本的宽度和高度。


使用示例:
CDC dc; // 假设已经创建了一个 CDC 对象
UINT charWidths[] = {10, 20, 15, 25}; // 假设每个字符的宽度
int nFit, nDx;
CSize textSize;

CString strText = _T("ABCD");
BOOL bResult = dc.GetTextExtentExPointI(charWidths, strText.GetLength(), nFit, nDx, &textSize);
if (bResult) {
    // 在这里,textSize 包含文本的宽度和高度
    // nFit 包含适合的字符数
    // nDx 包含每个字符的宽度
} else {
    // 获取失败的处理
}

这个方法适用于需要获取每个字符宽度的场景,例如在进行文本对齐等操作时。


转载请注明出处:http://www.zyzy.cn/article/detail/16951/MFC/CDC