我正在嘗試計算每個單元格的大小(包含「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