📄 lc_bcb_44.html
字号:
<p align="left"><span class="unnamed1"><font color="#333333">
---- FOF_WANTMAPPINGHANDLE: 要求SHFileOperation()函数返</font> <br>
<font color="#333333">
回正处于操作状态的实际文件列表,文件列表名柄保存在</font> <br>
<font color="#333333">
hNameMappings成员中。SHFILEOPSTRUCT将包含一个</font> <br>
<font color="#333333">
SHNAMEMAPPING结构的数组,此数组保存由SHELL计算的每个处于</font> <br>
<font color="#333333">
操作状态的文件的新旧路径。</font> </span></p>
<p align="left"><span class="unnamed1"><font color="#333333">二、 实例操作</font> </span></p>
<p align="left"><span class="unnamed1"><font color="#333333">---- 本文就一个Visual
C++程序来实现文件复制的实例。首先建立一个单文档界面filecopy,然后在主框架中新增一个工具条变量m_wndMyToolBar,新建一个工具条IDR_MYTOOLBAR,设置一个工具消息ID_FILECOPY,并在主框架MainFrm.cpp的OnCreate()成员函数中加入工具栏。</font>
</span></p>
<p align="left"><span class="unnamed1"><font color="#333333">
if(!m_wndMyToolBar.Create(this)||</font> </span></p>
<p align="left"><span class="unnamed1"><font color="#333333">
!m_wndMyToolBar.LoadToolBar(IDR_MYTOOLBAR))</font> </span></p>
<p align="left"><span class="unnamed1"><font color="#333333">
{</font> </span></p>
<p align="left"><span class="unnamed1"><font color="#333333">
TRACE("can not create the FileToolBar!\n");</font> </span></p>
<p align="left"><span class="unnamed1"><font color="#333333">
return -1;</font> </span></p>
<p align="left"><span class="unnamed1"><font color="#333333">
}</font> </span></p>
<p align="left"><span class="unnamed1"><font color="#333333">----
通过中视类操作工具条IDR_MYTOOL,利用ClassWizard为其 消息ID_FILECOPY新增消息处理函数OnFilecopy。然后在处理函数中加入下面程序。</font>
<br>
<font color="#333333">
void OnFilecopy()</font> <br>
<font color="#333333">
{</font> <br>
<font color="#333333">
int nOk;</font> <br>
<font color="#333333">
char strSrc[]="c:\\dos\0c:\\pwin98\\command\0";</font> <br>
<font color="#333333">
//可以改变源路径</font> </span></p>
<p align="left"><span class="unnamed1"><font color="#333333">
char strDst[]="c:\\temp\0";</font> <br>
<font color="#333333">
//设置目的路径</font> </span></p>
<p align="left"><span class="unnamed1"><font color="#333333">
char strTitle[]="File copying";</font> <br>
<font color="#333333">
//进度题头</font> </span></p>
<p align="left"><span class="unnamed1"><font color="#333333">
SHFILEOPSTRUCT FileOp;</font> </span></p>
<p align="left"><span class="unnamed1"><font color="#333333">
FileOp.hwnd=m_hWnd;</font> </span></p>
<p align="left"><span class="unnamed1"><font color="#333333">
FileOp.wFunc=FO_COPY;</font> </span></p>
<p align="left"><span class="unnamed1"><font color="#333333">
//执行文件拷贝</font> </span></p>
<p align="left"><span class="unnamed1"><font color="#333333">
FileOp.pFrom=strSrc;</font> </span></p>
<p align="left"><span class="unnamed1"><font color="#333333">
FileOp.pTo=strDst;</font> </span></p>
<p align="left"><span class="unnamed1"><font color="#333333">
FileOp.fFlags=FOF_ALLOWUNDO;</font> </span></p>
<p align="left"><span class="unnamed1"><font color="#333333">
FileOp.hNameMappings=NULL;</font> </span></p>
<p align="left"><span class="unnamed1"><font color="#333333">
FileOp.lpszProgressTitle=strTitle;</font> </span></p>
<p align="left"><span class="unnamed1"><font color="#333333">
nOk=SHFileOperation(&FileOp);</font> </span></p>
<p align="left"><span class="unnamed1"><font color="#333333">
if(nOk)</font> </span></p>
<p align="left"><span class="unnamed1"><font color="#333333">
TRACE("There is an error: %d\n",nOk);</font> </span></p>
<p align="left"><span class="unnamed1"><font color="#333333">
else</font> </span></p>
<p align="left"><span class="unnamed1"><font color="#333333">
TRACE("SHFileOperation finished successfully\n");</font> </span></p>
<p align="left"><span class="unnamed1"><font color="#333333">
if(FileOp.fAnyOperationsAborted)</font> </span></p>
<p align="left"><span class="unnamed1"><font color="#333333">
TRACE("Operation was aborted!\n");</font> <br>
<font color="#333333">
}</font> <br>
</span></p>
<p align="left"><span class="unnamed1"><font color="#333333">三、 结束语</font> </span></p>
<p align="left"><span class="unnamed1"><font color="#333333">---- 利用Windows API进行程序文件操作设计,它直接调用Windows操作系统中的外壳,它的处理过程与Windows95/98/NT中的处理过程是一致的有利于我们在系统程序设计中保持与操作系统的一致性;同时,由于在文件处理中它是直接调用WindowsAPI函数,因此不需要其它应用程序动态链接库DLL的支持。</font>
</span></p>
<p align="left"><span class="unnamed1"><font color="#333333">----
在各种开发软件中,都提供了对于文件的各种操作方式,但是它必须利用到文件系统较为深入的知识,而且对于其操作的直观性方面也需要开发者进一步地设计,因此利用操作系统SHELL进行程序设计,不失是一种好的设计方法。</font>
</span></p>
<p align="center"><span class="unnamed1">
</span></p>
</div>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -