C++ 如何获得使用TextOut打印的字符之间的间距?

C++ 如何获得使用TextOut打印的字符之间的间距?,c++,programming-languages,winapi,C++,Programming Languages,Winapi,我试图计算每个单元格的大小(包含像“ff”或“a0”这样的文本),这样32个单元格就可以按宽度放入窗口。 但是,charWidth*2并不表示单元格的宽度,因为它不考虑帐户中字符之间的间距 如何获得字体大小,使32个单元格中的每个单元格有两个字符,如“ff”,正好适合Windows的客户端区域 Courier是固定宽度的字体 RECT rect; ::GetClientRect( hWnd, &rect ); LONG charWidth = (rect.right-rect.left)

我试图计算每个单元格的大小(包含像“ff”或“a0”这样的文本),这样32个单元格就可以按宽度放入窗口。 但是,charWidth*2并不表示单元格的宽度,因为它不考虑帐户中字符之间的间距

如何获得字体大小,使32个单元格中的每个单元格有两个字符,如“ff”,正好适合Windows的客户端区域

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) );
}
RECT-RECT;
::GetClientRect(hWnd和rect);
长字符宽度=(矩形右矩形左)/块大小/2-2;
int oldMapMode=::SetMapMode(hdc,MM_TEXT);
HFONT font=CreateFont(charWidth*2,charWidth,0,0,FW_DONTCARE,FALSE,
FALSE,FALSE,DEFAULT\u CHARSET,OUT\u OUTLINE\u PRECIS,CLIP\u DEFAULT\u PRECIS,
CLEARTYPE_QUALITY,FF_ROMAN,_T(“快递”);
hgdobj oldFont=::选择对象(hdc,字体);
对于(int i=0;i
似乎您需要测量两个字符和四个字符字符串之间的字符宽度差异。

GetTextExtentPoint32


另请参见

欢迎使用堆栈溢出。请阅读,它将帮助您正确设置问题的格式。在指定字体宽度之前,我想知道字符之间的间距宽度。