2010-05-26 43 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

相關問題