Я хочу прочитать данные из файла (.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, но я не понимаю !!
Пожалуйста, помогите мне решить эту проблему. Благодаря !!!
hFile = CreateFile((LPCWSTR)szFileName,....
Почему бросок в LPCWSTR? Если вам нужен этот бросок, вы делаете что-то неправильно. Изучите каждый шаг с помощью отладчика, чтобы узнать больше о том, что не так.
szFileName
является буфером char
, с вышеупомянутым приведением, пытающимся исправить проблему. Кроме того, сам файл, скорее всего, также имеет узкие символы, то есть, даже если OP исправляет это, у них есть другая, столь же раздражающая проблема.