VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 如何压缩较长的全路径文件名中的路径 (Path) 字串长度?
发表评论(0)作者:, 平台:, 阅读:9180, 日期:2000-04-06
主题: 如何压缩较长的全路径文件名中的路径 (Path) 字串长度?

來源:ZDTips

版本:VB6 / VB5 / VB4-32

资料整理:VB爱好者乐园 yingzi007.126.com





或许您看了上面的标题之后,不知道是什么意思,不过,我想您只 要看了下面的说明就会有恍然大悟的感觉了!


压缩前的全路径文件名:

C:\MyFolder\VisualBasic\MyReallyWayTooLongFolderName\ButWhoCares\IhaveTheAPI.doc

压缩后的全路径文件名:

C:\MyFolder\VisualBasic\MyR...\IhaveTheAPI.doc


知道上面标题的意思了吧!这种技巧在很多安装软件中都可以看到,它有几个特色:


1、文件名称完整不变。

2、只縮短路径 (Path) 部份字串。

3、可事先设定压缩后的全路径文件名的最大长度。


或许您会认为这有什么困难?用一些字串处理的函数,例如:Mid$、Left$.... 等就可以做到了!没错。


但是,您知道吗?由于 Microsoft 很多安装软件都会用到这个功能,所以它也有提供一个 PathCompactPath API,它是放在 shlwapi 这个 DLL 文件中。


Declare Function PathCompactPath Lib "shlwapi" _

Alias "PathCompactPathA" (ByVal hDC As Long, _

ByVal lpszPath As String, ByVal dx As Long) As Long


它需要三个引数,说明如下:


hDC:device context handle。

lpszPath:the address of the pathname。

dx:the width in pixels of the spot in which you want the pathname to fit。


來看看实际的例子吧!请在表单中加入一个 CommandButton 及一个 Label,不用更改任何属性,將以下的程序代码复制到表单中:


Private Declare Function PathCompactPath Lib "shlwapi" _

Alias "PathCompactPathA" (ByVal hDC As Long, _

ByVal lpszPath As String, ByVal dx As Long) As Long


Private Sub Command1_Click()

Dim lhDC As Long, lCtlWidth As Long

Dim FileSpec As String



lhDC = Me.hDC

FileSpec = "C:\MyFolder\VisualBasic\MyReallyWayTooLongFolderName\"

FileSpec = FileSpec & "ButWhoCares\IhaveTheAPI.doc"

Me.ScaleMode = vbPixels

lCtlWidth = Label1.Width - Me.DrawWidth



PathCompactPath lhDC, FileSpec, lCtlWidth

Label1.Caption = FileSpec

End Sub

记住 Label1 的宽度不要太大,如果 Label1 的宽度本來就放得下全路径文件名,那就沒有必要压缩全路径文件名了!