说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

VB如何压缩较长的全路径文件名中的路径 (Path) 字串长度?

HTML文档下载 WORD文档下载 PDF文档下载
VB如何压缩较长的全路径文件名中的路径 (Path) 字串长度?
版本:VB6 / VB5 / VB4-32


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

压缩前的全路径文件名:
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 的宽度本來就放得下全路径文件名,那就沒有必要压缩全路径文件名了!
Android自绘GridView控件 Android平板开发注意事项 Android控件TextProgressBar进度条上显文字 Android内存管理-SoftReference的使用 反射在Android开发中的利弊 intent调用代码总结二 Android缩略图类源代码 Android多人项目开发指导 AsyncTask对比Thread加Handler Android Drawable叠加处理方法 android.os.Debug调试工具使用方法 Android多点触控开发原理 inent调用代码总结,不断完善中 onRetainNonConfigurationInstance和getLastNonConfigurationInstance Android中String资源文件的format方法 Android工程内嵌资源文件的两种方法 Android AIDL全攻略三 - AIDL框架 Android AIDL全攻略二 - Service绑定 自定义Android主题风格theme.xml方法 Android开发之模拟按下Home键的效果 Android AIDL全攻略一 Android Picture和PictureDrawable的用处 Android自定义View以及layout属性全攻略 Android通过Intent发送电子邮件含附件 Android调试技巧之Eclipse行号和Logcat Android Txt文本读写类源代码 Android游戏开发之旅20 双按事件捕获 Android游戏开发之旅19 分辨率大全 保护你的Android付费软件-LVL全攻略(二) 保护你的Android付费软件-LVL全攻略 android调试工具monkey压力测试实战 动态创建CComboBox控件,为什么不能出现下拉框? 如何定义自己的包? 有会用VB读出ACCESS2000密码的吗? printf的问题,快速结帖 明天去新公司上班,散分!! 关于以前asp中的内置函数 想请问各位朋友一个问题 高分 如何择书与读书? mail发送问题 不知大家有没有测试过,似乎ADO的速度比DAO慢很多! 想请问各位朋友一个问题 想请问各位朋友一个问题 清那位高手指点一下 上海人,请讲信誉,我已忍无可忍了(放分) 修改计算机的名字导致SQL7.0不能启动,请问有什么修补的方法而不用重新安装SQL? c++ primer 候洁译与潘爱民译那个好些?? 为什么我的机会突然黑屏,但主机其实又没有关呢? 各位大虾,我是菜鸟,请问? 客户端的linux怎么才能通过域和代理的验证?? 加QQ:82439610 我来建个ORACLE、PL/SQL的QQ群! 大家多交流! 菜鸟问题:PHP中的变量使用前一定得声明吗?? 加QQ:82439610 我来建个ORACLE、PL/SQL的QQ群! 大家多交流! 用光驱看电影时经常说“显示器刷新率超出范围”,然后就只能重启,这是怎么回事? 加QQ:82439610 我来建个ORACLE、PL/SQL的QQ群! 大家多交流! 请问哪里可以免费下载到linux的源代码啊?谢谢! 如何择书与读书? 加QQ:82439610 我来建个ORACLE、PL/SQL的QQ群! 大家多交流! 我想转行到计算机软件,您有什么建议呢? 各位高手,看看这个贴!!谢谢 菜鸟问题:请教red hat下用.iso的安装镜像文件升级软件包的问题 这个中秋霉到家了,看看还有没有比我更霉的,同时祝愿自己能快点度过难关好起来!!!!!!!!!! 帮忙看看这个SQL语句什么地方错了? 此上机题的程序代码应该怎么写 想找个unix高手,有没有啊? 那里有java的帮助手册下载?类似于萎软的msdn & 0xFFF0是什么意思 银行存钱手续费问题 计算机网络——熊桂喜 译 INPUT如何用图片作背景? 谁能给我贴一个 Regular 动态 mfc-dll的例子! 函数怎样调用? 在线的各位高手,请问哪里可以下到SYBASE11.9.2安装程序? EJB-QL问题,怎么使用模糊查询LIKE? 请进 为什么我装了声卡驱动程序后,只能听到声音,却说不了话? rh9中用户目录下的.profile为什么不起作用? 我是专学PL/SQL编程的,但是我觉得这个不像是真正意义的编程! 大家进来看看吧! VC6下如何向Oracle中添加和读取BLOB型的数据? 一个关于Delphi6和Delphi7的问题 请问怎么知道C# MSDN 里的每一个类,每一个方法是做什么用的? 宋江不投靠北宋的话 他的108好汉能夺取宋朝江山不 您好.请问,打开日光灯开关以后,日光灯的两侧和启辉器一只在闪,大约闪四五分钟之后灯才能正常发光.这会是什么原因呢?是镇流器坏了吗? 班子建设指什么 中共中央关于推进农村改革发展若干重大问题的决定对领导体制机制和班子建设的要求中共中央关于推进农村改革发展若干重大问题的决定对领导体制机制 和班子建设的要求 谁有这个方面 我新换的启辉器,但是灯总是不亮.每次打开开关之后还要转动启辉器应该不是启辉器的问题吧 该怎么解决啊 康熙皇帝的父亲那句永不加赋是什么意思? 秦始皇,唐太宗,康熙帝三位帝王所做的都是为了地主阶级的利益.这句话是否正确? 欧洲中世纪修道士与传教士的不同之处?周五要考试啊! 阅读训练A 快速阅读训练可以5秒看完一页书并复述,求推荐? 用不但还造句 印度首都发生工厂火灾6人死亡 10多尼日利亚一教堂发生踩踏事故 致17人奇数为男偶数是女?2013年是“男性周观天下:美国的“偷窥瘾”世贸组织部长会议下月初在印尼巴厘岛举世贸组织部长会议下月初在印尼巴厘岛举俄摄影师“高空厨房”揭秘飞机餐(组图德美将达成互不监听协议 明年年初实施尼日利亚一教堂发生踩踏事故 致17人斯诺登将在俄“遥助”德国 作证“监听加拿大暴风雨30多万人受影响 部分地第119届广交会开幕在即 广州酒店价【治国理政新理念·奋进十三五】山东:海关新政济南影响调查:旅行团领队成重华为济宁云计算数据中心项目签约专家:社会资本参与公共服务市场化改革青岛生育保险新规:新增产假60天 津网传国际邮包入境难?济南海关解读“国全球首个区域电商发展指数在浙江义乌诞2016德国宝马展拉开帷幕 湖南制造湖南东安县发现稀有植物紫色禾雀花 滨州邹平全面启动教师招聘工作 公开招死灵王座巡狩大明王,妾身有理!重生之海耶斯旋风卧底皇后昏君暧昧无罪本宫不为妾网游之冰霜剑神极品蛮妃网游天下之英雄无敌焦作旅游西岛旅游包头旅游密云旅游肇庆旅游漳州旅游赤峰旅游上饶旅游布尔津旅游那拉提草原旅游宝鸡旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘