Les sauts de lignes ne sont pas pris en compte dans mon contrôle de type EDIT
Bonjour,
Dans un programme C++, je tente désespérément d'afficher dans un "EDIT" successivement plusieurs lignes séparées par des sauts de lignes. Or, le texte est bien affiché mais pas les sauts de ligne. J'utilise VS2013Community et dans les propriétés j'ai bien vérifié que le "charactere set" est Unicode.
Je place les bouts de code qui me semble importants pour ceux qui tenteraient de m'aider.
D'abord la création de l'EDIT depuis la WndProc de mon programme :
Code:
1 2
| case WM_CREATE:
edit = CreateWindow((LPCWSTR)(L"EDIT"), NULL, WS_BORDER | NULL | WS_CHILD | WS_VISIBLE | NULL | NULL, 35,150, 600, 200, hWnd, 0, hInst, 0); |
la fonction d'ajout du texte trouvé dans ce site ( mais je ne retrouve pas le lien )
Code:
1 2 3 4 5 6 7
|
void AppendText(HWND hEditWnd, LPCTSTR Text)
{
int idx = GetWindowTextLength(hEditWnd);
SendMessage(hEditWnd, EM_SETSEL, (WPARAM)idx, (LPARAM)idx);
SendMessage(hEditWnd, EM_REPLACESEL, 0, (LPARAM)Text);
} |
Et enfin l'ajout d'une ligne ( une seul suffit pour comprendre mon soucis ):
Code:
1 2 3 4 5
| int const iSizeBuf = 100;
TCHAR buf[iSizeBuf];
//wsprintf(buf, TEXT("\r\nhShellTray : 0x%x \r\n"), hShellTray);
HRESULT hr = StringCbPrintf(buf, iSizeBuf, TEXT("\r\nhShellTray : 0x%x \r\n"), hShellTray);
AppendText(edit, buf); |
L'absence d'affichage a lieu aussi avec le wsprintf.
C'est un peu comme si le "EDIT" était monoligne. Mais je pense que les EDIT sont obligatoirement Multilignes.
Merci pour votre aide.