我正在尝试计算每个单元格的大小(包含“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));
}
欢迎堆栈溢出。请阅读http://stackoverflow.com/editing-help,它会帮助你正确地设置你的问题。 – avakar 2010-05-26 10:18:14