VB_纯API 打开保存对话框源码

VB_纯API 打开保存对话框源码,第1张

概述'VB_纯API 打开保存对话框源码'My Blog http://www.arvinhk.com'By:Arvin QQ:348619517Option ExplicitPublic Type OPENFILENAME    lStructSize       As Long    hwndOwner         As Long    hInstance         As 
'VB_纯API打开保存对话框源码'MyBloghttp://www.arvinhk.com'By:ArvinQQ:348619517OptionExplicitPublicTypeOPENfilenamelStructSizeAsLonghwndOwnerAsLonghInstanceAsLonglpstrFilterasstringlpstrCustomFilterasstringnMaxCustFilterasLongnFilterIndexAsLonglpstrfileAsstringnMaxfileAsLonglpstrfileTitleAsstringnMaxfileTitleAsLonglpstrInitialDirAsstringlpstrTitleAsstringflagsAsLongnfileOffsetAsIntegernfileExtensionAsIntegerlpstrDefExtAsstringlCustDataAsLonglpfnHookAsLonglpTemplatenameAsstringEndTypePublicTypebrowseInfohwndOwnerAsLongpIDLRootAsLongpszdisplaynameAsLonglpszTitleAsLongulFlagsAsLonglpfnCallbackAsLonglParamAsLongiImageAsLongEndTypePublicConstOFN_ReadonlyAsLong=&H1PublicConstOFN_OVERWRITEPROMPTAsLong=&H2PublicConstOFN_HIDEReadonlyAsLong=&H4PublicConstOFN_NOCHANGEDIRAsLong=&H8PublicConstOFN_SHOWHELPAsLong=&H10PublicConstOFN_ENABLEHOOKAsLong=&H20PublicConstOFN_ENABLETEMPLATEAsLong=&H40PublicConstOFN_ENABLETEMPLATEHANDLEAsLong=&H80PublicConstOFN_NovalIDATEAsLong=&H100PublicConstOFN_ALLOWMulTISELECTAsLong=&H200PublicConstOFN_EXTENSIONDIFFERENTAsLong=&H400PublicConstOFN_PATHMUSTEXISTAsLong=&H800PublicConstOFN_fileMUSTEXISTAsLong=&H1000PublicConstOFN_CREATEPROMPTAsLong=&H2000PublicConstOFN_SHAREAWAREAsLong=&H4000PublicConstOFN_NOReadonlyRETURNAsLong=&H8000PublicConstOFN_NOTESTfileCREATEAsLong=&H10000PublicConstOFN_NONETWORKbuttonAsLong=&H20000PublicConstOFN_NolONGnameSAsLong=&H40000PublicConstOFN_EXPLORERAsLong=&H80000PublicConstOFN_NODEREFERENCElinkSAsLong=&H100000PublicConstOFN_LONGnameSAsLong=&H200000PublicConstOFN_SHAREFALLTHROUGHAsLong=2PublicConstOFN_SHARENowARNAsLong=1PublicConstOFN_SHAREWARNAsLong=0PublicConstbrowseForFoldersAsLong=&H1PublicConstbrowseForComputersAsLong=&H1000PublicConstbrowseForPrintersAsLong=&H2000PublicConstbrowseForEverythingAsLong=&H4000PublicConstCSIDL_BITBUCKETAsLong=10PublicConstCSIDL_CONTRolSAsLong=3PublicConstCSIDL_DESKtopAsLong=0PublicConstCSIDL_DRIVESAsLong=17PublicConstCSIDL_FontSAsLong=20PublicConstCSIDL_NETHOODAsLong=18PublicConstCSIDL_NETWORKAsLong=19PublicConstCSIDL_PERSONALAsLong=5PublicConstCSIDL_PRINTERSAsLong=4PublicConstCSIDL_PROGRAMSAsLong=2PublicConstCSIDL_RECENTAsLong=8PublicConstCSIDL_SENDTOAsLong=9PublicConstCSIDL_startmenuAsLong=11PublicConstMAX_PATHAsLong=260PublicDeclareFunctionGetopenfilenamelib"comdlg32.dll"Alias"GetopenfilenameA"(pOpenfilenameAsOPENfilename)AsLongPublicDeclareFunctionGetSavefilenamelib"comdlg32.dll"Alias"GetSavefilenameA"(pOpenfilenameAsOPENfilename)AsLongPublicDeclareSubCoTaskMemFreelib"ole32.dll"(ByValhMemAsLong)PublicDeclareFunctionlstrcatlib"kernel32"Alias"lstrcatA"(ByVallpString1Asstring,ByVallpString2Asstring)AsLongPublicDeclareFunctionSHbrowseForFolderlib"shell32"(lpBIAsbrowseInfo)AsLongPublicDeclareFunctionSHGetPathFromIDListlib"shell32"(ByValpIDListAsLong,ByVallpBufferAsstring)AsLongPublicDeclareFunctionSHGetSpecialFolderLocationlib"shell32"(ByValhwndOwnerAsLong,ByValnFolderAsLong,ListIDAsLong)AsLongPublicDeclareFunctionGetwindowsDirectorylib"kernel32"Alias"GetwindowsDirectoryA"(ByVallpBufferAsstring,ByValnSizeAsLong)AsLongPublicDeclareFunctionGetSystemDirectorylib"kernel32"Alias"GetSystemDirectoryA"(ByVallpBufferAsstring,ByValnSizeAsLong)AsLongPublicDeclareFunctionGetTempPathlib"kernel32"Alias"GetTempPathA"(ByValnBufferLengthAsLong,ByVallpBufferAsstring)AsLongPublicDeclareFunctionGetTempfilenamelib"kernel32"Alias"GetTempfilenameA"(ByVallpszPathAsstring,ByVallpPrefixStringAsstring,ByValwUniqueAsLong,ByVallpTempfilenameAsstring)AsLongPublicDeclareFunctionGetModuleHandlelib"kernel32"Alias"GetModuleHandleA"(ByVallpModulenameAsstring)AsLongPublicDeclareFunctionGetmodulefilenamelib"kernel32"Alias"GetmodulefilenameA"(ByValhModuleAsLong,ByVallpfilenameAsstring,ByValnSizeAsLong)AsLongPublicDeclareFunctionGetShortPathnamelib"kernel32"Alias"GetShortPathnameA"(ByVallpszLongPathAsstring,ByVallpszShortPathAsstring,ByValcchBufferAsLong)AsLongPublicDeclareFunctionGetTickCountlib"kernel32"()AsLongPublicFunctionfileDialog(FormObjectAsForm,SaveDialogAsBoolean,ByValTitleAsstring,ByValFilterasstring,OptionalByValfilenameAsstring,OptionalByValExtentionAsstring,OptionalByValinitDirAsstring)AsstringDimOFNAsOPENfilenameDimrAsLongIfLen(filename)>MAX_PATHThenCallMsgBox("filenameLengthOverflow",vbExclamation,App.Title+"-fileDialogFunction"):ExitFunctionfilename=filename+String(MAX_PATH-Len(filename),0)WithOFN.lStructSize=Len(OFN).hwndOwner=0.hInstance=App.hInstance.lpstrFilter=Replace(Filter,"|",vbNullChar).lpstrfile=filename.nMaxfile=MAX_PATH.lpstrfileTitle=Space$(MAX_PATH-1).nMaxfileTitle=MAX_PATH.lpstrInitialDir=InitDir.lpstrTitle=Title.flags=OFN_HIDEReadonlyOrOFN_OVERWRITEPROMPTOrOFN_CREATEPROMPT.lpstrDefExt=ExtentionEnDWithDimLAsLongL=GetTickCountIfSaveDialogThenr=GetSavefilename(OFN)Elser=Getopenfilename(OFN)IfgetTickCount-L<20ThenOFN.lpstrfile=""IfSaveDialogThenr=GetSavefilename(OFN)Elser=Getopenfilename(OFN)EndIfIfr=1ThenfileDialog=left$(OFN.lpstrfile,InStr(1,OFN.lpstrfile+vbNullChar,vbNullChar)-1)EndFunctionPublicFunctionbrowseFolders(FormObjectAsForm,sMessageAsstring)AsstringDimBAsbrowseInfoDimrAsLongDimLAsLongDimfAsstringFormObject.Enabled=FalseWithB.hwndOwner=FormObject.hWnd.lpszTitle=lstrcat(sMessage,"").ulFlags=browseForFoldersEnDWithSHGetSpecialFolderLocationFormObject.hWnd,CSIDL_DRIVES,B.pIDLRootr=SHbrowseForFolder(B)Ifr<>0Thenf=String(MAX_PATH,vbNullChar)SHGetPathFromIDListr,fCoTaskMemFreerL=InStr(1,f,vbNullChar)-1IfL<0ThenL=0f=left(f,L)AddSlashfEndIfbrowseFolders=fFormObject.Enabled=TrueEndFunctionPublicPropertyGetwindowsDirectory()AsstringStaticrAsstringIfLen(r)=0ThenDimLAsLongL=MAX_PATHr=String(L,0)L=GetwindowsDirectory(r,L)IfL>0Thenr=left$(r,L)AddSlashrElser=""EndIfEndIfwindowsDirectory=rEndPropertyPublicPropertyGetwindowsTempDirectory()AsstringStaticm_windowsTempDirectoryAsstringIfLen(m_windowsTempDirectory)=0ThenDimBufferAsstringDimLengthAsLongBuffer=String(MAX_PATH,0)Length=GetTempPath(MAX_PATH,Buffer)IfLength>0Thenm_windowsTempDirectory=left$(Buffer,Length)AddSlashm_windowsTempDirectoryEndIfEndIfwindowsTempDirectory=m_windowsTempDirectoryEndPropertyPublicPropertyGetwindowsSystemDirectory()AsstringStaticm_windowsSystemDirectoryAsstringIfLen(m_windowsSystemDirectory)=0ThenDimBufferAsstringDimLengthAsLongBuffer=String(MAX_PATH,0)Length=GetSystemDirectory(Buffer,MAX_PATH)IfLength>0Thenm_windowsSystemDirectory=left$(Buffer,Length)AddSlashm_windowsSystemDirectoryEndIfEndIfwindowsSystemDirectory=m_windowsSystemDirectoryEndPropertyPublicPropertyGetAppPath()AsstringStaticm_AppPathAsstring'ReturnsprogramEXEfilenameIfLen(m_AppPath)=0ThenDimretAsLongDimLengthAsLongDimfilePathAsstringDimfileHandleAsLongfilePath=String(MAX_PATH,0)fileHandle=GetModuleHandle(App.EXEname)ret=Getmodulefilename(fileHandle,filePath,MAX_PATH)Length=InStr(1,vbNullChar)-1IfLength>0Thenm_AppPath=left$(filePath,Length)EndIfAppPath=m_AppPathEndPropertyPublicPropertyGetDefaultSettingsfile()AsstringStaticm_DefaultSettingsfileAsstringIfLen(m_DefaultSettingsfile)=0Thenm_DefaultSettingsfile=fileTitleOnly(AppPath,True)&"Settings.Dat"DefaultSettingsfile=m_DefaultSettingsfileEndPropertyPublicPropertyGetDefaultLegendfile()AsstringStaticm_DefaultLegendfileAsstringIfLen(m_DefaultLegendfile)=0Thenm_DefaultLegendfile=fileTitleOnly(AppPath,True)&"Legends.Txt"DefaultLegendfile=m_DefaultLegendfileEndPropertyPublicFunctionfileExists(filenameAsstring)AsBooleanIfLen(filename)>0ThenfileExists=(Len(Dir(filename,vbnormalOrvbReadonlyOrvbHIDdenorvbSystemOrvbarchive))>0)EndFunctionPublicFunctionDirectoryExists(ByValDirectoryAsstring)AsBooleanAddSlashDirectoryDirectoryExists=Len(Directory)>0AndLen(Dir(Directory+"*.*",vbDirectory))>0EndFunctionPublicFunctionfileTitleOnly(filenameAsstring,OptionalReturnDirectoryAsBoolean)AsstringIfReturnDirectoryThenfileTitleOnly=left$(filename,InStrRev(filename,"\"))ElsefileTitleOnly=Right$(filename,Len(filename)-InStrRev(filename,"\"))EndIfEndFunctionPublicSubAddSlash(DirectoryAsstring)IfInStrRev(Directory,"\")<>Len(Directory)ThenDirectory=Directory+"\"EndSubPublicSubRemoveSlash(DirectoryAsstring)IfLen(Directory)>3AndInStrRev(Directory,"\")=Len(Directory)ThenDirectory=left$(Directory,Len(Directory)-1)EndSubPublicSubRIDfile(filenameAsstring)IffileExists(filename)ThenSetAttrfilename,vbnormalKillfilenameEndIfEndSubPublicFunctionGetShortname(ByValfilenameAsstring)AsstringDimBufferAsstringDimLengthAsLongBuffer=String(MAX_PATH,0)Length=GetShortPathname(filename,Buffer,MAX_PATH)IfLength>0ThenGetShortname=left$(Buffer,Length)EndFunctionPublicFunctionCreateTempfile(OptionalByValPrefixAsstring,OptionalDirectoryAsstring)AsstringDimBufferAsstringDimLengthAsLongBuffer=String(MAX_PATH,0)IfLen(Prefix)=0ThenPrefix=left$(App.Title+"TMP",3)IfNotDirectoryExists(Directory)ThenDirectory=windowsTempDirectoryIfgetTempfilename(Directory,Prefix,0&,Buffer)=0ThenExitFunctionLength=InStr(1,vbNullChar)-1IfLength>0ThenCreateTempfile=left$(Buffer,Length)EndFunctionPublicFunctionCreatePath(ByValPathAsstring)AsBooleanOnErrorGoToFailDimiAsIntegerDimsAsstringAddSlashPathDoi=InStr(i+1,Path,"\")Ifi=0ThenExitDos=left$(Path,i-1)IfNotDirectoryExists(s)ThenMkDirsLoopUntili=Len(Path)IfDirectoryExists(Path)ThenCreatePath=TrueExitFunctionEndIfFail:CallMsgBox(IIf(Err.Number=0,"","Error"+CStr(Err.Number)+":"+Err.Description+vbCrLf)+"CouldNotCreate/AccessDirectory:"+vbCrLf+vbCrLf+Chr$(34)+Path+Chr$(34),App.Title+"-CreatePathFunction")EndFunction


文章出自:http://www.arvinhk.com/?id=48

总结

以上是内存溢出为你收集整理的VB_纯API 打开保存对话框源码全部内容,希望文章能够帮你解决VB_纯API 打开保存对话框源码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1271242.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存