Multiline Edit Control Wraps Text Different than DrawTextLast reviewed: November 2, 1995Article ID: Q67722 |
The information in this article applies to:
SUMMARYMultiline edit controls will not wrap text in the same manner as the DrawText() function. This can be a problem when an application displays text that has been in an edit control because the text may wrap in a different location. It is possible to obtain the text from the edit control and display it statically in a window with the same line breaks. To do this, the application must retrieve each line of text separately. This can be accomplished by sending the EM_GETLINE message to the control and displaying the retrieved text with the TextOut() function.
MORE INFORMATIONThe following is a brief code fragment that demonstrates how to obtain the text of a multiline edit control line by line:
... /* other code */
char buf[80]; // Buffer for line storage
HDC hDC; // Temporary display context
HFONT hFont; // Temporary font storage
int iNumEditLines; // How much text
TEXTMETRIC tm; // Text metrics
// Get number of lines in the edit control
iNumEditLines = SendMessage(hEditCtl, EM_GETLINECOUNT, 0, 0L);
hDC = GetDC(hWnd);
// Get font currently selected into the control
hFont = SendMessage(hEditCtl, WM_GETFONT, 0, 0L);
// If it is not the system font, then select it into DC
if (hFont)
SelectObject(hDC, hFont);
GetTextMetrics(hDC, &tm);
iLine = 0;
while (iNumEditLines--)
{
// First word of buffer contains max number of characters
// to be copied
buf[0] = 80;
// Get the current line of text
nCount = SendMessage(hEditCtl, EM_GETLINE, iLine, (LONG)buf);
TextOut(hDC, x, y, buf, nCount); // Output text to device
y += tm.tmHeight;
iLine++;
}
ReleaseDC(hWnd, hDC);
... /* other code */
The execution time of this code could be reduced by using the
ExtTextOut() function instead of TextOut().
|
Additional reference words: 3.00 3.10 3.50 4.00 95
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |