如何使用TextOut打印字符之间的间距?

时间:2010-05-26 10:05:10

标签: c++ programming-languages winapi

我正在尝试计算每个单元格的大小(包含“ff”或“a0”等文本),这样32个单元格将按宽度适合窗口。 但是,charWidth * 2并不表示单元格的宽度,因为它不会占用帐户中的字符之间的间距。

如何获得字体的大小,使32个单元格中的两个字符如“ff”完全适合窗口的客户区?

Courier是固定宽度字体。

RECT rect;
::GetClientRect( hWnd, &rect );
LONG charWidth = (rect.right-rect.left)/BLOCK_SIZE/2-2;
int oldMapMode = ::SetMapMode( hdc, MM_TEXT );
HFONT font = CreateFont( charWidth*2, charWidth, 0, 0, FW_DONTCARE, FALSE,
    FALSE, FALSE, DEFAULT_CHARSET, OUT_OUTLINE_PRECIS, CLIP_DEFAULT_PRECIS,
    CLEARTYPE_QUALITY, FF_ROMAN, _T("Courier") );
HGDIOBJ oldFont = ::SelectObject( hdc, font );

for( int i = 0; i < BLOCK_SIZE; ++i )
{
    CString str;
    str.Format( _T("%.2x"), (unsigned char)*(g_memAddr+i) );
    SIZE size;
    ::TextOut( hdc, (size.cx+2)*i+1, 1, str, _tcslen((LPCTSTR)str) );
}

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

答案 2 :(得分:0)

似乎你想要在两个字符和四个字符的字符串之间测量charwidth的差异。