readfile读取ReadMe.txt出现乱码
readfile读取ReadMe.txt出现乱码,但是新建一个文本文件后,将ReadMe.txt文件里的内容复制到新建的一个文本文件,就不是乱码了。即使将这个文本文件重名为ReadMe.txt也不是。
代码如下:
#define DTFLAGS (DT_WORDBREAK | DT_EXPANDTABS | DT_NOCLIP | DT_NOPREFIX)
#define BUF_SIZE 2000
// 全局变量:
HINSTANCE hInst; // 当前实例
TCHAR szTitle[MAX_LOADSTRING]; // 标题栏文本
TCHAR szWindowClass[MAX_LOADSTRING]; // 主窗口类名
// 此代码模块中包含的函数的前向声明:
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
static RECT rect;
DWORD dwBytesRead;
char buf[BUF_SIZE];
HANDLE hFile;
switch (message)
{
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: 在此添加任意绘图代码...
hFile = CreateFile(TEXT("F:\\win32\\ListBoxSample2\\ListBoxSample2\\ReadMe.txt"), // file to open
GENERIC_READ, // open for reading
FILE_SHARE_READ, // share for reading
NULL, // default security
OPEN_EXISTING, // existing file only
0, // normal file
NULL); // no attr. template
if (hFile == INVALID_HANDLE_VALUE)
{
MessageBox(NULL, TEXT("INVALID HFILE"),NULL, MB_OK);
return 0;
}
if(!ReadFile(hFile, buf, BUF_SIZE, &dwBytesRead, NULL))
{
MessageBox(NULL, TEXT("INVALID READ"),NULL, MB_OK);
return 0;
}
else
{
DrawTextA(hdc, (LPCSTR)buf, dwBytesRead, &rect, DTFLAGS);
}
EndPaint(hWnd, &ps);
break;
case WM_SIZE:
rect.right = LOWORD(lParam);
rect.bottom = HIWORD(lParam);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}