Я хочу прочитать данные из файла (.txt) и нажать в поле «Редактировать». Я пишу C++ с чистым API.Использование сопоставления файлов для чтения данных из файла
HANDLE hFile;
HANDLE hMapFile;
LPVOID pMemory;
и
case IDM_OPEN:
hFile = CreateFile((LPCWSTR)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 | FILE_MAP_WRITE, 0,0,0);
FileSize = GetFileSize(hFile, NULL);
SendMessage(hWndEdit, WM_SETTEXT, 0, (LPARAM)(LPCWSTR)pMemory);
MessageBox(hWnd, (LPCWSTR)pMemory, L"Caption", MB_OK);
UnmapViewOfFile(pMemory);
CloseHandle(hMapFile);
CloseHandle(hFile);
break;
Результат: пустое, ничего в окне редактирования
Я ищу какую-то страницу, но не решаюсь.
Когда я пытаюсь отлаживать с помощью множества точек останова, как это изображение:
http://i8.upanh.com/2013/1103/02//57993893.untitled.png
(К сожалению я не могу опубликовать изображение)
hFile является 0xffffffff, поэтому я думаю, что ошибка CreateFile, но я не понимаю !!
Пожалуйста, помогите мне решить эту проблему. Благодаря !!!
Какая линия не работает? Каковы результаты CreateFile, CreateFileMapping и MapViewOfFile. Вполне вероятно, что один из них потерпел неудачу. Вы должны проверить там возвращаемые значения для ошибок в вашем коде. – shf301
И вам лучше надеяться, что файл имеет завершающий NUL-char (который я сомневаюсь на этом этапе). – WhozCraig
Из документации 'CreateFile':' Если функция не работает, возвращаемое значение INVALID_HANDLE_VALUE. Чтобы получить расширенную информацию об ошибке, вызовите GetLastError.' –