readfile读取ReadMe.txt出现乱码,但是新建一个文本文件后,将ReadMe.txt文件里的内容复制到新建的一个文本文件,就不是乱码了。即使将这个文

dongchaotiantian 2009-06-28 04:03:54
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;
}
...全文
241 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongchaotiantian 2009-06-28
  • 打赏
  • 举报
回复
谢谢
DavidHsing 2009-06-28
  • 打赏
  • 举报
回复
很简单。因为你用记事本新建的这个文件默认编码为 ANSI。
而你现有的 readme.txt 文件编码为 unicode 或 UTF-8。

更新信息,请参考:

谈谈 Unicode 编码,简要解释 UCS、UTF、BMP、BOM 等名词
http://blog.csdn.net/DavidHsing/archive/2007/09/04/1771258.aspx

字符,字节和编码
http://blog.csdn.net/DavidHsing/archive/2008/09/05/2885043.aspx

ANSI、UNICODE、UTF-8 文件编码转换
http://blog.csdn.net/DavidHsing/archive/2008/11/17/3317841.aspx

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧