|
是个读一个.txt文件内容的问题,其中strtxt是文件名字(***.txt)的变量。
代码如下:
void ReadTxt::OnOK()
{
// TODO: Add extra validation here
//---------------createfile打开,然后用readfile读取数据----------------//
HANDLE hFile;
DWORD dwBytesRead;
char buff[4096];
hFile = CreateFile(strtxt,GENERIC_READ,0,NULL,OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile == INVALID_HANDLE_VALUE)
{
AfxMessageBox(L"Cound not open the file");
return;
}
if(ReadFile(hFile,buff,4096,&dwBytesRead,NULL))
{
CEdit* p = NULL;
p = (CEdit*)GetDlgItem(IDC_EDIT1);
GetDlgItem(IDC_EDIT1)->SetWindowText((const unsigned short *)buff);
GotoDlgCtrl(p);
free(p);
}
}
这个,在evc的编辑框控件IDC_EDIT1中就是显示乱码,本来是sdhfos12456这样的一个字符串就显示着方块或不知道什么符号的乱码,很郁闷。
下面是我写的程序的另一个版本,但只能显示txt文件里字符串的第一位。这样的:
void ReadTxt::OnOK()
{
// TODO: Add extra validation here
//---------------createfile打开,然后用readfile读取数据----------------//
HANDLE hFile;
DWORD dwBytesRead;
CString str;
hFile = CreateFile(strtxt,GENERIC_READ,0,NULL,OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile == INVALID_HANDLE_VALUE)
{
AfxMessageBox(L"Cound not open the file");
return;
}
if(ReadFile(hFile, (LPSTR)(LPCTSTR)str, 1, &dwBytesRead, NULL))
{
CEdit* p = NULL;
p = (CEdit*)GetDlgItem(IDC_EDIT1);
GetDlgItem(IDC_EDIT1)->SetWindowText(str);
GotoDlgCtrl(p);
free(p);
}
}这个就能显示asdfhso13546的第一位的a,而把ReadFile的第三个参数改成100等数字却变成了如第一个写法中一样的一行乱码。实在找不到办法全正确显示出来啊
大家帮帮忙,困扰我整整一天了。谢谢大家!!!!
|
|