ほれ。実際に動いたコードをくれてやる。よく見比べるがいい。2MBのテキストファイルで試したが問題なし。
HANDLE hFile;
DWORD dwSize;
void* szbuf;
DWORD dwSizeRead;
hFile = CreateFile("a.txt", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
if(hFile == INVALID_HANDLE_VALUE) return;
dwSize = GetFileSize(hFile, NULL);
if(dwSize == 0xFFFFFFFF) return;
szbuf = malloc(dwSize + 1);
if(szbuf == NULL) return;
ReadFile(hFile, szbuf, dwSize, &dwSizeRead, NULL);
((char*)szbuf)[dwSizeRead] = '\0';
SendMessage(hwnd, WM_SETTEXT, 0, (LPARAM)szbuf);
free(szbuf);
CloseHandle(hFile);