2010-05-26 71 views
1

我正在尝试计算每个单元格的大小(包含“ff”或“a0”等文本),以便32个单元格将按宽度放入窗口中。 但是,charWidth * 2 doesn'表示单元格的宽度,因为它不会占用帐户中字符之间的间距。如何获得使用TextOut打印的字符之间的间距?

如何获取字体的大小,使32个单元格中的每一个都像“ff”这样的两个字符完全符合窗口的客户区域?

快递是固定宽度字体。

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)); 
} 
+0

欢迎堆栈溢出。请阅读http://stackoverflow.com/editing-help,它会帮助你正确地设置你的问题。 – avakar 2010-05-26 10:18:14

回答

0

看来,你会希望在两个字符和四个字符的字符串之间的charwidth测量差异。

+0

我想知道之前的字符之间的间距宽度。我指定字体的宽度。 – 2010-05-26 12:05:03

相关问题