2013-11-22 34 views
0

我有問題:我用文件映射來讀取文件,但它顯示在Edit控件不能單獨行:讀取文件使用文件映射不是單獨的行

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); 

我的編輯控制:

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); 

我使用UNICODE。

雖然我調試pMemory和緩衝區,我看到它包含新的行字符,但在編輯控件不顯示單獨的行。

錯誤在哪裏,以及如何解決!???

+0

是什麼SendMessage函數()返回?也許設置的文本調用失敗。 – HerrJoebob

回答

4

編輯控件需要一個"\r\n"序列(即字符值0x0D0x0A)來創建一個新行。您還需要將ES_MULTILINE樣式應用於編輯控件。