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

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("这是一个密码域");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值