以下是 GetTextExtentExPointI 方法的简化原型:
BOOL GetTextExtentExPointI(
_In_reads_(cchString) const UINT *lpnString,
_In_ int cchString,
_Out_ int *lpnFit,
_Out_writes_opt_(cchString) LPINT lpnDx,
_In_ int nMaxExtent,
_Out_opt_ LPINT lpnMaxExtent,
_Out_opt_ LPSIZE lpSize
);
这个方法的参数说明如下:
- lpnString: 一个指向 UINT 数组的指针,包含要测量的文本字符串。每个元素代表一个字符。
- cchString: 指定要测量的字符数。
- lpnFit: 一个指向整数的指针,接收适应宽度的字符数。
- lpnDx: 一个指向整数数组的指针,用于接收每个字符的宽度。可以为 NULL。
- nMaxExtent: 限制文本的最大宽度,可以为 TE_NOHIDESEL 或 TE_SELECTALL。
- lpnMaxExtent: 一个指向整数的指针,接收文本的实际宽度。可以为 NULL。
- lpSize: 一个指向 SIZE 结构的指针,接收文本的逻辑宽度和高度。可以为 NULL。
以下是一个简单的示例,演示如何使用 GetTextExtentExPointI 方法:
CDC dc; // 假设已经创建了设备上下文对象
// 要测量的文本,以UINT数组的形式表示
UINT arrText[] = { 'H', 'e', 'l', 'l', 'o', ',', ' ', 'M', 'F', 'C', '!' };
int cchText = sizeof(arrText) / sizeof(UINT);
// 用于接收适应宽度的字符数
int nFit;
// 获取文本的宽度信息
BOOL bSuccess = dc.GetTextExtentExPointI(arrText, cchText, &nFit, NULL, 0, NULL, NULL);
// 输出结果
if (bSuccess)
{
TRACE(_T("Text Fit: %d\n"), nFit);
}
else
{
TRACE(_T("Error in GetTextExtentExPointI\n"));
}
在这个示例中,首先创建了一个设备上下文对象 dc,然后定义了要测量的文本字符串,使用 GetTextExtentExPointI 方法获取了适应宽度的字符数,并输出了结果。如果成功获取宽度信息,nFit 将包含适应宽度的字符数。
转载请注明出处:http://www.zyzy.cn/article/detail/17133/MFC/CDC