Lecture du fichier à l'aide du mappage de fichiers non séparé dans le contrôle d'édition

J'ai un problème: j'utilise le mappage de fichiers pour lire le fichier mais il n'affiche pas de ligne séparée dans le contrôle d'édition:

szFileName = L"abc.txt";
hFile = CreateFile(szFileName, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_ARCHIVE, NULL);
hMapFile = CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, 0, NULL);
pMemory = MapViewOfFile(hMapFile, FILE_MAP_READ, 0,0,0);

int size_needed = MultiByteToWideChar(CP_UTF8, 0, (LPCCH)pMemory, -1, NULL, 0);
wchar_t *buffer = new wchar_t[size_needed];
MultiByteToWideChar(CP_UTF8, 0, (LPCCH)pMemory, -1, buffer, size_needed);

FileSize = GetFileSize(hFile, NULL);
SendMessage(hWndEdit, WM_SETTEXT, 0, (LPARAM)buffer);
delete[] buffer;
UnmapViewOfFile(pMemory);
CloseHandle(hMapFile);
CloseHandle(hFile);

Mon contrôle d'édition:

hWndEdit = CreateWindowEx(NULL, L"Edit", NULL,
                        WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT | ES_AUTOHSCROLL,
                        50,35,900,300,hWnd,(HMENU)IDC_EDIT,hInstance,NULL);

J'utilise UNICODE.

Pendant que je débogue pMemory et le tampon, je vois qu'il contient un nouveau caractère de ligne, mais dans le contrôle d'édition n'affiche pas la ligne séparée.

Où est l'erreur et comment réparer! ???

0
ajouté édité
Vues: 1
Que renvoie SendMessage ()? Peut-être que l'appel de texte défini échoue.
ajouté l'auteur HerrJoebob, source

2 Réponses

Le contrôle d'édition nécessite une séquence "\ r \ n" (c'est-à-dire des valeurs de caractères 0x0D 0x0A ) pour créer une nouvelle ligne. Vous devrez également appliquer le style ES_MULTILINE au contrôle d'édition.

4
ajouté

You need reference Edit control style, at here: http://msdn.microsoft.com/en-us/library/windows/desktop/bb775464%28v=vs.85%29.aspx

et comme vous pouvez le voir, vous devez ajouter ES_MULTILINE à votre contrôle d'édition:

hWndEdit = CreateWindowEx(NULL, L"Edit", NULL,
           WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT | ES_AUTOHSCROLL | ES_MULTILINE, 50,35,900,300,hWnd,(HMENU)IDC_EDIT,hInstance,NULL);
1
ajouté