vc学习历程(6)--文件的操作

VC6.0环境下的二进制文件比较仿制源码 二进制文件比较是通过检查两个文件在二进制级别上的差异来确定文件是否一致的过程。这种技术广泛应用于软件开发、数据安全、系统维护等领域。算法是一系列定义良好的指令集合,用于完成特定的任务或解决问题。在二进制文件比较中,算法的重要性不容小觑,因为不同算法的效率和准确性对最终结果有着直接的影响。 阅读详情

1、文件夹的创建和删除:

用到以下几个函数:

DWORD GetCurrentDirectory(
  DWORD
nBufferLength,  // size, in characters, of directory buffer
  LPTSTR lpBuffer       // pointer to buffer for current directory
);
 用于获取当前的文件路径;

BOOL CreateDirectory(
  LPCTSTR
lpPathName,                         // pointer to directory path string
  LPSECURITY_ATTRIBUTES lpSecurityAttributes  // pointer to security descriptor  //这个结构定义了目录的安全特性
);
 用于创建文件夹;

BOOL RemoveDirectory(
  LPCTSTR
lpPathName   // pointer to directory to remove
);
 用于删除文件夹;

通过这三个函数来对文件进行处理,事例代码如下:

创建:

char buf[256];

GetCurrentDirectory(256,buf);

m_name.GetWindowText(name);  //获得文件名;

strcat(buf,"//");

strcat(buf,name);

if(CreateDirectory(buf,NULL))

{

    MessageBox("文件创建成功");

    return ;

}

删除:

char buf[256];

GetCurrentDirectory(256,buf);

m_name.GetWindowText(name);

strcat(buf,"//");

strcat(buf,name);

if(RemoveDirectory(buf))

{

    MessageBox("删除文件成功");

    return ;

}

2、把文件给删除到回收站中,在这里调用了SHFileOperation,SHFileOperation是Window提供的对文件系统对

象进行删除,移动,复制等操作的API函数;
WINSHELLAPI int WINAPI SHFileOperation(
    LPSHFILEOPSTRUCT lpFileOp 
);
lpFileOp是一个指向SHFILEOPSTRUCT结构的指针,
SHFILEOPSTRUCT

SHFILEOPSTRUCT的结构如下:
typedef struct _SHFILEOPSTRUCT{
    HWND         hwnd; 这是拥有者窗口句柄;
    UINT         wFunc; 文件的操作功能,有FO_COPY,FO_DELETE,FO_MOVE,FO_RENAME
    LPCSTR       pFrom; 源文件
    LPCSTR       pTo;    目标文件
    FILEOP_FLAGS fFlags;   文件控制标志
    BOOL         fAnyOperationsAborted;   用户是否中断操作
    LPVOID       hNameMappings;     指向一个SHNAMEMAPPING结构的指针
    LPCSTR       lpszProgressTitle;  进程标题
} SHFILEOPSTRUCT, FAR *LPSHFILEOPSTRUCT;

程序代码如下:
 char fileName[100]="/0";
 strcpy(fileName,strText);//获取源文件
 strcat(fileName,"/0");
 SHFILEOPSTRUCT shfile;
 shfile.hwnd=0;
 shfile.wFunc=FO_DELETE;
 shfile.pFrom=fileName;
 shfile.pTo=NULL;
 shfile.fFlags=FOF_ALLOWUND0;
 shfile.hNameMappings=NULL;
 shfile.lpszProgressTitle=NULL;
 SHFileOperation(&shfile);  执行语句;
 
3、打开文件夹的浏览框用到了CFileDialog 这个类;
CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD

dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd =

NULL );

Parameters

bOpenFileDialog

Set to TRUE to construct a File Open dialog box or FALSE to construct a File Save As dialog box.

lpszDefExt

The default filename extension. If the user does not include an extension in the Filename edit

box, the extension specified by lpszDefExt is automatically appended to the filename. If this

parameter is NULL, no file extension is appended.

lpszFileName

The initial filename that appears in the filename edit box. If NULL, no filename initially

appears.

dwFlags

A combination of one or more flags that allow you to customize the dialog box. For a description

of these flags, see theOPENFILENAME structure in the Win32 SDK documentation. If you modify the

m_ofn.Flags structure member, use a bitwise-OR operator in your changes to keep the default

behavior intact.

lpszFilter

A series of string pairs that specify filters you can apply to the file. If you specify file

filters, only selected files will appear in the Files list box. See the Remarks section for more

information on how to work with file filters.

pParentWnd

A pointer to the file dialog-box object’s parent or owner window.

代码事例:
CFileDialog file(true,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"All File(*.*)

|*.*|",AfxGetmainWnd());
 {
   if(file.DoModal()==IDOK)
{
     strText=file.GetPathName();  获取文件路径地址
     m_edit.SetWindowText(strText);
}
}

4、回收站的清空:
这里用到SHEmptyRecycleBin函数;
MSDN中的定义:
SHSTDAPI SHEmptyRecycleBin(
    HWND hwnd,            父窗口句柄
    LPCTSTR pszRootPath, 设置删除哪个磁盘的回收站,如何设置字符为空则清空所有的回收站;
    DWORD dwFlags         清空回收站的功能参数
);  

Empties the recycle bin on the specified drive.

Returns S_OK if successful, or an OLE-defined error value otherwise.
hwnd
Handle to the parent window of any dialog boxes that might be displayed during the operation.

This parameter can be NULL.
pszRootPath
Address of a NULL-terminated string that contains the path of the root drive on which the recycle

bin is located. This parameter can contain the address of a string formatted with the drive,

folder, and subfolder names (c:/windows/system . . .). It can also contain an empty string or

NULL. If this value is an empty string or NULL, all recycle bins on all drives will be emptied.
dwFlags
One or more of the following values: SHERB_NOCONFIRMATION  No dialog confirming the deletion of

the objects will be displayed. 
SHERB_NOPROGRESSUI  No dialog indicating the progress will be displayed. 
SHERB_NOSOUND  No sound will be played when the operation is complete. 

5、GetWindowLong 函数详解:
函数功能描述:用这个函数能够获得指定窗口的信息

函数原型:
LONG GetWindowLong( HWND hWnd,int nIndex )

参数:
hWnd:指定窗口的句柄
nIndex:需要获得的信息的类型
     值            功能

nIndex取值如下:
GWL_EXSTYLE    得到扩展的窗口风格
GWL_STYLE      得到窗口风格
GWL_WNDPROC    得到窗口回调函数的地址,或者句柄。得到后必须使用CallWindowProc函数来调用
GWL_HINSTANCE  得到应用程序运行实例的句柄
GWL_HWNDPARENT 得到父窗口的句柄
GWL_ID         得到窗口的标识符
GWL_USERDATA   得到和窗口相关联的32位的值(每一个窗口都有一个有意留给创建窗口的应用程序是用的32位
               的值)

当hWnd标识一个对话框时可以使用下面的值
Value Action
DWL_DLGPROC   得到对话框回调函数的地址,或者句柄。得到后必须使用CallWindowProc函数来调用
DWL_MSGRESULT 得到对话框回调函数中消息处理过程的返回值
DWL_USER      得到额外的应用程序私有信息,如一些句柄和指针等

返回值:
成功时,返回一个请求的32位的值
失败时,返回0,可以使用GetLastError来取得错误信息

示例:
long nStyle = ::GetWindowLong(hWnd, GWL_STYLE);   // hWnd是一个编辑框的句柄
if(nStyle & ES_PASSWORD)
{
    AfxMessageBox("这是一个密码域");
}

将VC2008项目迁移到VC6的实践指南 在软件开发的历程中,随着技术的不断革新和开发需求的演变,项目往往会遇到从旧版本的Visual Studio迁移到新版本的情况。这一章节将为您提供一个概览,了解在不同Visual Studio版本间进行项目转换的意义、可能遇到的挑战以及转换带来的潜在优势。.sln文件是Visual Studio解决方案文件,它是一种文本文件,用于定义Visual Studio项目的结构。这种文件保存了解决方案的布局,包括项目、项目依赖、全局设置等信息。以下是一个.sln文件的基础结构和内容解析:EndProject。 阅读详情

相关推荐

中文版VC6.0:经典C++编程环境

Microsoft Visual C++ 6.0作为Windows平台下C++编程的重量级开发工具,自1998年发布以来,深受开发者喜爱。它不仅仅是一个编译器,更是一个全面的集成开发环境(IDE),它集成了代码编辑、调试、数据库访问以及诸多的可视化设计工具。在 Microsoft Visual C++ 6.0 的 IDE 中,工具栏和菜单栏是快速执行操作的关键。工具栏通常位于 IDE 窗口的顶部,提供了一系列图标按钮,对应于最常用的菜单命令。

weixin_35757531的博客 1438

CStdioFile::WriteString()使用时的注意事项

最近看一段程序生成的文本文件,发现总是会隔行显示。查看代码,没有发现异样,每行结束时都会赋予“\r\n”(其实这里就是问题所在,后述)。之后二进制方式打开该文本文件,发现换行处为0x0D0x0D0x0A(对应转义符"\r\r\n")即莫名多出一个0x0D('\r')来。 查了MSDN,说“This method writes newline characters in lpsz to the

我的专栏 1万+

操作系统内存管理实验:深入VC6.0内存机制

本文还有配套的精品资源,点击获取 简介:操作系统作为计算机的核心,其内存管理功能确保了多任务执行的效率和稳定性。本实验通过VC6.0开发环境,深入探讨内存分配、释放、对齐、虚拟内存、保护、碎片以及堆栈管理等关键内存管理知识点。学生将通过编码实践,如实现内存分配器和设计虚拟内存系统,以提升对操作系统内存管理理论和实际操作的理解。 1. 操作系统内存管理概述 1...

weixin_32306683的博客 1520

VC 逐行读写TXT文件

用流在写日志时,发现如果把"\r\n"直接写在字符串的尾部,则会造成乱码,其中的原因网上有很多说明,主要是标准库与WINDOWS的回车换行的机制略有差别。但只要写到另一行重起就没有 用流在写日志时,发现如果把"\r\n"直接写在字符串的尾部,则会造成乱码,其中的原因网上有很多说明,主要是标准库与WINDOWS的回车换行的机制略有差别。但只要写到另一行重起就没有问题了。

yueyaquanBoy的专栏 5611

VC6.0开发助手:提升编程效率的关键工具

Visual C++ 6.0(简称 VC6.0),作为微软公司于1998年发布的集成开发环境(IDE),自诞生以来便承载了无数程序员的青春记忆。在其鼎盛时期,VC6.0与Windows平台上的应用程序开发密不可分。其受欢迎程度之高,与当时Windows 95/98及NT操作系统广泛应用的背景密不可分,加之其对MFC(Microsoft Foundation Classes)的成熟支持,VC6.0成为了许多专业开发者首选的开发工具。

weixin_42509507的博客 1190

SKIN++ VC6.0 UI控件库详细解析

随着软件开发技术的不断进步,用户界面(UI)设计的复杂度和美观性要求也随之提高。SKIN++ VC6.0用户界面控件库应运而生,旨在为基于Microsoft Visual C++ 6.0 (VC6.0) 的开发者提供一套丰富的UI控件集合,以便他们能够轻松地打造外观华丽且功能强大的应用程序界面。SKIN++ VC6.0不仅提供了众多预设的皮肤效果,还支持开发者自定义皮肤,大大增强了程序的交互性和用户体验。本章将从SKIN++ VC6.0控件库的基础概念讲起,让读者对其有一个全面而基础的了解。

weixin_42583683的博客 1271

vc中常用文件操作(四)CStdioFile

‍ CFile的派生类CStdioFile提供了对文件进行流式的操作功能。其中函数void CStdioFile::WriteString( LPCTSTR lpsz )写入一个字符串,需要给字符串lpsz的末尾加上换行标志”\r\n”;函数bool CStdioFile::ReadString(CString &rString )从文件中读取一行,如果文件未读完返回true,否则返回f...

weixin_34037515的博客 232

VC6.0+OpenGL实现五角星的纯色填充

OpenGL(Open Graphics Library)是一个跨语言、跨平台的编程接口,专用于渲染2D和3D矢量图形。作为一种开放标准,OpenGL提供了一套丰富的图形功能,被广泛应用于计算机图形学领域,特别是在游戏开发、虚拟现实和视觉模拟中。本章将带您了解OpenGL的基本概念、历史沿革以及它在现代图形处理中的重要角色。GLUT(OpenGL Utility Toolkit)是一个用于OpenGL的实用工具库,它允许程序员创建能够运行在多种平台上的窗口化应用程序。

weixin_42453228的博客 423

VC2005解决UNICODE字符集下CStdioFile的Writestring无法写入中文

在VC2005环境下, 以下代码无法实现使用CStdioFile向文本文件中写入中文(用notepad.exe查看不到写入的中文) CStdioFile file; file.Open(…); file.WriteString(_T("abc你好"));//只能写入abc 在VC2005中的解决办法: 使用setlocale语句设定区域 #include <locale>//头文件 C...

weixin_34112900的博客 245

VC6+OpenCV实现C++自动聚焦程序

自动聚焦技术(AutoFocus)是一种智能技术,它能在拍照或录像时自动调节镜头,以获得最清晰的图像。这项技术的普及和优化,对提高图像和视频质量有着极为关键的作用。VC6的用户界面可以分为几个主要区域:菜单栏、工具栏、编辑器窗口、类视图、资源视图以及输出窗口等。每个区域都有其特定的功能,下面是各区域的基本介绍:菜单栏:包含“文件”、“编辑”、“查看”、“项目”等下拉菜单,用于执行各种操作,如新建、打开项目,配置项目属性等。工具栏:提供常用操作的快捷方式,如新建、打开、保存项目等。

weixin_42620563的博客 578

DSound API声卡识别演示:VC6.0实现与实践

DirectSound(简称DSound)API是微软DirectX多媒体开发套件的一部分,最初于1995年随着DirectX 2.0的发布而问世。它旨在为游戏和其他多媒体应用程序提供音频播放功能,特别是支持3D音频处理。随着技术的发展,DSound在DirectX的多个版本中不断优化,增加了对数字音频格式的支持和更丰富的音频控制选项。DSound API提供了丰富的接口和方法,允许开发者对音频进行复杂的控制。在编程中,通常会使用到以下接口:: 主要的DSound接口,用于执行大部分音频操作。

weixin_42588672的博客 1147

VC++文件操作之最全篇(总结一下希望对大家有用)

一、剖析VC中的文件操作       各种关于文件的操作在程序设计中是十分常见,如果能对其各种操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而在较短的时间内编写出高效的代码,因而熟练的掌握文件操作是十分重要的。本文将对Visual C++中有关文件操作进行全面的介绍,并对在文件操作中经常遇到的一些疑难问题进行详细的分析。   1.文件的查找   当对一个文件操作时,如果

独旅天涯 4061

VC6.0与SQL Server 2008数据库交互实践

VC6.0与SQL Server 2008的连接通常有多种方法,其中ODBC和ADO是两种常用且强大的技术。ODBC是一种提供统一访问各种数据库的标准编程接口,而ADO提供了面向对象的编程模型。本章将重点介绍这两种连接方式的基本步骤与技巧,帮助开发者快速搭建起应用程序与数据库之间的桥梁。开放数据库连接(ODBC)是一种在不同数据库之间进行通信的标准应用程序接口(API)。它由微软公司于1990年推出,旨在提供一种统一的方法来访问多种数据库管理系统(DBMS)。

weixin_42604188的博客 969

C++学习历程

    记得第一次听说电脑,大约是在高一的时候,当时学校新进了一批586,当时觉得好的不得了,还专门请了老师来给我们上课。第一次就是讲什么计算机的历史,大概是因为有领导在场,老师讲的很呆板。第二节课,没有了领导的旁听,老师开始大刀阔斧的神侃,谈到黑客的历史,程序语言的演化。当时觉得天底下最厉害的就要数黑客了,于是我一直就把黑客当作心目中的偶像。可惜的是,我们就上了这两节课,以后学校已抓学习的名义把

hustli的专栏 2990

VC6写文件的一个类

自己写的一个读写文件的类WriteData,以及在sdi下使用的测试程序。

VC++用CStdioFile读写文件

摘要:VC/C++源码,文件操作,CStdioFile VC++用CStdioFile读写文件,本例源码将重写OnFileOpen 函数,限制允许打开的文件的格式。   (1)创建重写OnFileOpen、OnFileSaveAs 和OnFileSave 函数;   (2)重写OnDraw 函数,如果用户选择“打开”文件,则以选择的文件的名称为参数创建CStdioFile对象,用ReadString 函数逐行读取文件并用TextOut 函数逐行显示;如果是“另存为”或“保存”,则用WriteString 函数将数据逐行写入指定文件,文件名由用户指定,文件路径通过GetPathName 函数获

VC++运行库历史演变:从VC6到VC2022的技术变革

Windows应用程序开发中,Visual C++(VC++)运行库(Runtime Library)扮演着关键角色。它是连接操作系统与应用程序的桥梁,提供基础函数调用、内存管理、异常处理等核心功能。自1998年VC6发布以来,微软持续迭代这一基础组件,每次版本更新都伴随着底层架构的重大调整。本文将深入剖析VC++运行库从VC6到VC2022的技术演进历程,揭示其如何适应硬件发展与软件开发范式变迁...

gitblog_00489的博客 1152

手把手教你用Arduino和开源电路DIY一个手机连接的电化学传感器(附GitHub源码)

本文详细介绍了如何利用Arduino和开源电路DIY一个手机连接的电化学传感器,成本不到300元即可复现价值数千元的专业设备。从硬件选型、电路搭建到固件开发和手机应用实现,手把手教你完成整个项目,特别适合科研人员、环境监测爱好者和理工科学生。附GitHub源码,方便快速上手和扩展功能。

weixin_42561040的博客 336

那些年坑了我们的VC6

当年无知,进大学后学C++,学校机房IDE用VC6,我们也跟风使用。然后做acm水题,一堆一堆的。后来发现了VS2008,VS2010,搞不定ultimate版的就装了个Express版的,然后发现MFC竟然不被支持。 学Java,课本上说用命令行,这对于菜鸟来说有点Geek style了,然后老师课上演示用的是JCreator,机房里也装这个。没过多久发现Eclipse能有语法提示错误

Create Rhythm 1077

图学习——04.HAN(异构图注意力网络)

什么是异构图,什么是元路径,什么是HAN,怎么计算attention,节点级别的attention和语义级别的attention

m0_51474171的博客 3001

使用VIVADO 2019.1 搭建以太网接口

以太网 MAC+SGMII->GMII接口转换 以FPGA V7为例,搭建一个千兆以太网接口。运行环境为Vivado2019.1。板卡的FPGA V7与千兆网口芯片采用SGMII互联,最终实现FPGA与上位机之间的千兆网卡通信,实际实现时,V7采用MAC + GMII ->SGMII的结构。SGMII接口使用1G/2.5G Ethernet PCS/PMA or SGMII ip核,MAC层使用Tri Mode Ethernet MAC ip核。 由于MAC层IP不支持SGMII接口,因此需要G

qq_44641513的博客 8415
上一篇: vc学习历程(5)--经典的时钟代码
下一篇: vc学习历程(7)--文件浏览对话框
海浪
博客等级 码龄20年 27粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值