| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1118 人关注过本帖
标题:缓冲区经过GetDlgItemText函数好的数据变化
只看楼主 加入收藏
ycc892009
Rank: 2
等 级:论坛游民
帖 子:34
专家分:90
注 册:2009-12-23
收藏
 问题点数:0 回复次数:1 
缓冲区经过GetDlgItemText函数好的数据变化
程序代码:
//读文件数据
//DpathFile为要保存的文件的全文件路径名
void readData(HWND hwnd, char *DpathFile)
{
    char szFile[MAX_PATH];

    //第一种情况
    //初始化str
    char str[1024];
//    ZeroMemory(str,sizeof(str));
       char sz[256];
    char *lpFp;

    //获取源文件全路径
    GetDlgItemText(hwnd, IDC_PATHFILE,szFile,sizeof(szFile)/sizeof(char));
    ShowError(str);

    [local]1[/local]
       //lpFp = strrchr(szFile, '\\');//获取文件名
    int LineNum = GetLineCount(szFile);//文件中的行数
    int icount=0;
    //发送消息给进程条
    SendDlgItemMessage(hwnd, IDC_PROGRESS, PBM_SETRANGE, 0, MAKELPARAM(0,LineNum));
    ShowError(str);
    //打开文件读操作

    //第二种情况初始化str
    //char str[1024];
    HANDLE hFileread;
    DWORD dwRead;
    DWORD dwWrite;
    hFileread = CreateFile(szFile,GENERIC_READ,0, 0,
        OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, 0);
    if (hFileread == INVALID_HANDLE_VALUE)
    {
    MessageBox(NULL, TEXT("CreateFile  to read error!"),TEXT("error"), MB_OK);
    }
   
    //创建新的文件写
    HANDLE hFile;
    hFile = CreateFile(DpathFile,GENERIC_WRITE,0, NULL,
        CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, NULL);
    if (hFile == INVALID_HANDLE_VALUE)
    {
    MessageBox(NULL, TEXT("CreateFile to write error!"),TEXT("error"), MB_OK);
    return ;
    }
    ShowError(str);
    while(true)
    {
        //初始化缓冲区
        ZeroMemory(str,sizeof(str));
        int    bRet=ReadFile(hFileread,str,1024,&dwRead,NULL);//读取1024字节
      if(bRet==FALSE)
      {
          MessageBox(NULL,"Read Buf ERROR!","Error",MB_OK);
          break;
      }
      else if(dwRead==0)//如果读到的字节数为0标示文件读取完毕
      {
          MessageBox(NULL,"Send file OK!","OK",MB_OK);
          break;
      }
      else
      {
          WriteFile(hFile,str,dwRead,&dwWrite,NULL);//recv()接收到多少就写多少 

      }
       
        SendDlgItemMessage(hwnd, IDC_PROGRESS, PBM_SETPOS, icount, 0);
        wsprintf(sz,"%i", icount);
        SetDlgItemText(hwnd, IDC_PATHFILE, sz);
        icount++;

    }


    CloseHandle(hFileread);
    CloseHandle(hFile);
我想问一下为什么我的程序中定义的缓冲区,经过GetDlgItemText函数后
会在该缓冲区最后面加上从编辑框得到的数据szFile。

ss.jpg (26.48 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 函数 数据 缓冲区 
2010-10-30 16:01
ycc892009
Rank: 2
等 级:论坛游民
帖 子:34
专家分:90
注 册:2009-12-23
收藏
得分:0 
程序代码:
//第一种情况
    //初始化str
    char str[1024];
//    ZeroMemory(str,sizeof(str));
       char sz[256];
    char *lpFp;

    //获取源文件全路径
    GetDlgItemText(hwnd, IDC_PATHFILE,szFile,sizeof(szFile)/sizeof(char));
    ShowError(str);
主要是这里的问题。在内存中数据时怎样变化的。
我试了只要在Get函数之前定义的数组。
末尾都加上了szFile的数据。
不过如果我在定义数组的时候初始化的话就没有这种情况。
不知道到是什么原因啊。
搞到我重新建立的文件都没有成功运行。

到达理想的界面是我的目标,成功却不是快捷方式!
2010-10-30 16:05
快速回复:缓冲区经过GetDlgItemText函数好的数据变化
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022773 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved