[乱]mfc与sdk笔记[九]

文件操作,配置文件? 注册表操作。

  1. 基本写入,打开文件
    1. FILE *file = fopen(); //打开文件
    2. fwrite(); //写入数据,文件指针指向下一个字节
    3. //c语言对文件的操作使用了缓冲文件系统。所以还需要关闭缓冲区
    4. fclose(file);
    5. //或者刷新缓冲区.
    6. fflush(file);
    7.  
    8. fseek(); //移动文件指针
    9. //--------------------------------------------------
    10. //打开文件
    11. fread();
    12. memset();//用字符设定一个buffer
    13. ftell();//得到文件指针当前的位置
  2. 文件操作类:ofstream
    1. #include <fstream>
    2. //创建文件写入文件
    3. ofstream ofs("a.txt");
    4. ofs.write("abc",strlen("abc"));
    5. ofs.close();
    6. //打开文件
    7. ifstream ifs("a.txt");
    8. char ch[100];
    9. memset(ch,0,100);
    10. ifs.read(ch,100);
    11. ifs.close();
  3. WIN32 API操作文件
    1. HANDLE CreateFile(); //功能很强大,可以打开或者创建的有控制台,通讯资源,目录,磁盘设备,文件,邮槽,管道。返回句柄。
    2. HANDLE hFile;
    3. hFile = CreateFile("ab.txt",GENERIC_WRITE,0,NULL,CREATE_NEW,FILE_ATTRIBUTE_NORMAL,NULL);//这样就创建了一个文件了.
    4. char ch[100];
    5. DWORD dwReads;
    6. ReadFile(hFile,ch,100,&dwReads,NULL);
    7. ch[dwReads]=0;
    8. CloseHandle(hFile);
    9. //写入文件
    10. WriteFile();
  4. Win32中对文件操作的类CFile,它是基础文件类的基类,它直接提供了没有缓存的二进制的磁盘输入输出文件。
    1. //创建文件
    2. CFile file("a.txt",CFile::modeCreate | CFile::modeWrite);
    3. file.Write("mrzenix.com",strlen("mrzenix.com");
    4. file.Close();
    5. //读取文件
    6. CFile file("a.txt",CFile::modeRead);
    7. char *pBuf;
    8. DWORD dwFileLen;
    9. dwFileLen = file.GetLength();
    10. pBuf = new char[dwFileLen+1];
    11. pBuf[dwFileLen]=0;
    12. file.Read(pBuf,DwFileLen);
  5. 打开,另存为文件对话框CFileDialog
    1. //保存为对话框
    2. CFileDialog fileDlg(FALSE);
    3. fileDlg.m_ofn;//这个结构体里面可以修改一些东西。
    4. fileDlg.m_ofn.lpstrTitle = "标题";
    5. fileDlg.m_ofn.lpstrFilter = "Text  Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0"; //example Filter
    6. fileDlg.m_ofn.lpstrDefExt="txt"; //缺省
    7. if(IDOK==fileDlg.DoModel())
    8. {
    9.     CString Pathname = fileDlg.GetPathName(); //全路径
    10.     CString Filename = fileDlg.GetFileName();     //文件名
    11. }
    12.                                                                        
    13. //打开文件对话框只要把前面的FALSE改成TRUE就好了。
  6. 写入初始信息
    1. ::WriteProfileString(); //仅仅用来兼容16位操作系统写入win.ini的.[sdk]
    2. SetRegistryKey(_T("mrzenix")); //增加注册表[mfc]
    3. GetProfileString();//获得注册表的信息[mfc]
  7. 对注册表的编程
    1. HKEY hkey; //句柄
    2. RegCreateKey(HKEY_LOCAL_MACHINE,"Software\\mrzenixSoft\\string",&hkey); //创建指定注册表项[sdk]
    3. //注册表项有值的名称,值的类型,值的本身
    4. RegSetValue(hkey,NULL,REG_SZ,"abcde",strlen("abcde")); //设置表项默认值,第二参数决定那个key
    5. LONG lValue;
    6. RegQueryValue(HKEY_LOCAL_MACHINE,"Software\\mrzenixSoft\\string",NULL,&lValue); //这个方式得到该注册表项的长度
    7. char *pBuf = new char[lValue];
    8. RegQueryValue(HKEY_LOCAL_MACHINE,"Software\\mrzenixSoft\\string",pBuf,&lvalue);//这个可以获取到这个值
    9.  
    10. DWORD age = 30;
    11. RegSetValueEx(hkey,"age",REG_DWORD,(CONST BYTE*)&age,4); //跟上面差不多
    12. HKEY HK;
    13. RegOpenKey(hkey,NULL,&HK);//打开一个key到一个句柄
    14. DWORD dwType;
    15. DWORD dwValue;
    16. DWORD dwAge;
    17. RegQueryValueEx(HK,"age",&dwType,(LPBYTE)&dwAge,&dwValue); //读取
    18. CString str;
    19. tr.Format*:age=%d",dwAge);
    20. //还有Reg开头的其它函数
    21. RegDeleteKey(); // 像这些等
    22.  
    23. RegCloseKey(hkey);//关闭句柄
    1. CString::GetBuffer();//可以返回一个LPTSTR,使用后需要ReleaseBuffer

Tags: ,

打开了评论功能,但是需要被审核,所以请耐心等待。