[求助]为什么用MSComDlg对话框只得到路径?
<P> 为什么只有路径?在2004下,运行下列语句:</P><P>(vl-load-com)<BR>(setq wincomdlg (vlax-create-object "MSComDlg.CommonDialog"))<BR>(vlax-import-type-library<BR> :tlb-filename<BR> "C:/WINNT/system32/COMDLG32.OCX"<BR> :methods-prefix "comdlgm-"<BR> :properties-prefix "comdlgp-"<BR> :constants-prefix "comdlgc-"<BR> )<BR>(comdlgp-put-CancelError wincomdlg :vlax-true)<BR>;;;(comdlgp-put-CancelError wincomdlg :vlax-false)<BR>(comdlgp-put-MaxFileSize wincomdlg 32767)<BR>(comdlgp-put-Flags wincomdlg (+ 4 512 524288 1048576))<BR>(comdlgp-put-DialogTitle wincomdlg "请选择")<BR>(comdlgp-put-Filter wincomdlg "图形文件(*.dwg)|*.dwg|所有文件(*.*)|*.*")<BR>(comdlgp-put-FileName wincomdlg "")<BR>(comdlgm-ShowOpen wincomdlg)<BR>(setq wj (comdlgp-get-FileName wincomdlg))</P>
<P>选一个文件的时候,效果和getfiled差不多,可是选择多个文件之后,得到的却只有路径,没有文件名了?不知道怎么回事,麻烦大侠们告知小弟咯。</P> 还是不知道什么原因,郁闷中``````` <P>不知道楼主有没有找到解决办法,按照vb中的文档说明来看,在多选文件时,filename是内存中一缓冲区,其属性应为“路径 文件名1 文件名2 ...”,其中filename各字段是以vbNullChar(亦即chr(0))隔开的,可是不知道在vlisp中读取到的缓冲区却丢失后面一部分数据。或者可以这么说,vlisp不能正确读取缓冲区?</P>
<P>欢迎各位高手参与讨论。</P> <P>一楼的方法固然好,可是还是有缺陷,因为指定了一个绝对路径:c:/winnt/system32,所以可以改进如下:</P>
<P>(defun xd-getfiles (/ objDialog path files)<BR> (if (setq objDialog (vlax-create-object "MSComDlg.CommonDialog"))<BR> (progn (vlax-put-property objDialog "DialogTitle" "选择图形文件")<BR> (vlax-put-property objDialog "InitDir" (getvar "dwgprefix"))<BR> (vlax-put-property objDialog "Filename" "*.dwg")<BR> (vlax-put-property objDialog "Filter" "*.dwg")<BR> (vlax-put-property objDialog "MaxFileSize" 32767) <BR> (vlax-put-property objDialog "Flags" 1610244) </P>
<P>;;1573380=4(隐藏只读复选框)+512(允许多重选择)+4096(只能输入文件名文本框已经存在的文件名)+<BR> ;; 32768(返回的文件不能具有只读属性,也不能在写保护目录下面)+524288(使用类似资源管理器的打开一个文件的对话框模板)+<BR> ;; 1048576(不要间接引用外壳链接(也称作快捷方式)。缺省时,选取外壳链接会引起它被外壳间接引用)<BR> (vlax-put-property objDialog "Action" 1) ;_ showopen-dialog<BR> (setq path (vlax-get-property objDialog "FileName")<BR> )<BR> )<BR> )<BR> (if (/= path "*.dwg")<BR> path<BR> nil<BR> )<BR>)</P> <P><A href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=42463" target="_blank" >http://bbs.mjtd.com/forum.php?mod=viewthread&tid=42463</A></P>
<P>我U盘上mjtdgetfilem.rar是最后版本</P> 龙兄又偷偷藏了什么宝贝:P ... 谢谢龙老大。
页:
[1]