使用文件映射从文件中读取数据

时间:2013-11-03 02:15:17

标签: c++ api

我想从文件(.txt)中读取数据并按下“编辑”框。 我正在用纯API编写C ++。

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;

结果:空白,编辑框中没有任何内容

我搜索某些页面但未解决。

当我尝试使用set breakpoint进行调试时,如下图所示:

http://i8.upanh.com/2013/1103/02//57993893.untitled.png

(抱歉,我无法发布图片)

hFile是0xffffffff,所以我认为错误是CreateFile,但我不明白!!

请帮我解决这个问题。谢谢!!!

1 个答案:

答案 0 :(得分:1)

hFile = CreateFile((LPCWSTR)szFileName,....

为什么要投射到LPCWSTR?如果你需要那个演员你做错了什么。使用调试器调查每个步骤,以了解有关错误的更多信息。