200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 电脑粉碎文件 c语言 文件操作(二):文件粉碎机

电脑粉碎文件 c语言 文件操作(二):文件粉碎机

时间:2019-01-30 09:44:19

相关推荐

电脑粉碎文件 c语言 文件操作(二):文件粉碎机

文件操作(2):文件粉碎机

文件粉碎机原理:文件被删除之前,用随机字符对其进行写操作

(注:参考的教材使用的是BCB编译器,BCB不会,所以这里改成使用MFC)

一、

首先建立一个基于对话框的MFC工程,在对话框添加如图所示控件

二、

接下来添加 statusbar(状态栏)控件,使用 CStatusBarCtrl类,具体操作是在主对话框文件中添加,一个类型为CStatusBarCtrl的成员变量 m_StatusBar

CStatusBarCtrl m_StatusBar;

在初始化函数中对其进行初始化:

m_StatusBar.Create(WS_CHILD|WS_VISIBLE|SBT_OWNERDRAW, CRect(0,0,0,0), this, 0);int strPartDim[2]= { 400, -1}; //分割成左右两份,左边占400个像素

m_StatusBar.SetParts(2, strPartDim);

设置好之后,我们用CStatusBarCtrl::SetText()就可以在状态栏上显示文字了。

注意,VC6.0中,状态栏不能在资管控件中直接添加,而是需要使用程序来创建,因此,也只有在程序运行之后才能显示出来

三、

下面来添加对话框控件的响应。首先点击浏览要弹出打开文件对话框,点击文件夹的文件,令点击的文件名显示在左边的文本编辑框中。

1、首先为文本编辑框关联一个名为m_strPath 的成员变量。按下ctrl+w,选择编辑控件ID,添加成员变量,输入m_strPath

2、双击 浏览按钮,进入响应函数,在里面添加如下代码:

//TODO: Add your control notification handler code here

UpdateData(TRUE);

CFileDialog fileDlg(TRUE);

fileDlg.m_ofn.lpstrTitle="打开文件";

fileDlg.m_ofn.lpstrFilter="All Files(*.*)\0*.*\0\0"; fileDlg.m_ofn.lpstrDefExt="*.txt";if(IDOK==fileDlg.DoModal())

{

CFile file(fileDlg.GetFileName(),CFile::modeRead);

m_strPath=fileDlg.GetPathName(); //将文件名赋给m_strPath

UpdateData(FALSE); //立即显示出来

}

四,主程序,双击开始粉碎,添加按钮响应。

添加如下代码:

if(m_strPath=="")

{return;

}if((MessageBox("文件一旦删除将无法恢复,您确定要继续执行操作吗?","提醒",MB_OKCANCEL|MB_ICONWARNING|MB_DEFBUTTON2))==IDCANCEL)

{

m_StatusBar.SetText(_T("您取消了操作"), 0, 0); //设置状态栏文本提示信息

return;

}char buff[1024]={0};

HANDLE hFile=CreateFile(m_strPath,GENERIC_WRITE|GENERIC_READ,FILE_SHARE_WRITE,NULL,OPEN_EXISTING,NULL,NULL);

DWORD dwLen=SetFilePointer(hFile,0,NULL,FILE_END);

CString temp;

temp.Format("文件大小%dbyte",dwLen);

m_StatusBar.SetText(temp,0, 0);for(int i=0;i<3;i++)

{

temp.Format("共进行%d遍擦除",i+1);

m_StatusBar.SetText(temp,0, 0);

SetFilePointer(hFile,0,NULL,FILE_BEGIN);if(dwLen<=1024)

{

dwLen=WriteFile(hFile,buff,(dwLen

}

}

CloseHandle(hFile);if(!DeleteFile(m_strPath))

{

m_StatusBar.SetText(_T("文件删除失败,但已无法恢复"), 0, 0);

}

五、

添加取消按钮的响应,双击,写个OnOK();就行了

程序运行效果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。