🔔 Çevrimdışı bildirim almak ister misiniz?
Bir konuya etiketlendiğinizde, özel mesaj aldığınızda, bir mesajınız alıntılandığında forumda olmasanız bile anlık bildirim almak için lütfen izni verin.
Private Function GetFolderValue(wIdx As Integer) As Long ' Returns the value of the system folder constant specified by wIdx ' See BrowsDlg.bas for the system folder nFolder values
' The Desktop If wIdx < 2 Then GetFolderValue = 0
' Programs Folder --> Start Menu Folder ElseIf wIdx < 12 Then GetFolderValue = wIdx
' Desktop Folder --> ShellNew Folder Else ' wIdx >= 12 GetFolderValue = wIdx + 4 End If
End Function
Private Sub optFolder_Click(Index As Integer) ' Save the current option button index m_wCurOptIdx = Index End Sub
Private Function GetReturnType() As Long Dim dwRtn As Long If chkRtnType(0) Then dwRtn = dwRtn Or BIF_RETURNONLYFSDIRS If chkRtnType(1) Then dwRtn = dwRtn Or BIF_DONTGOBELOWDOMAIN ' If chkRtnType(2) Then dwRtn = dwRtn Or BIF_STATUSTEXT ' callback only If chkRtnType(3) Then dwRtn = dwRtn Or BIF_RETURNFSANCESTORS If chkRtnType(4) Then dwRtn = dwRtn Or BIF_BROWSEFORCOMPUTER If chkRtnType(5) Then dwRtn = dwRtn Or BIF_BROWSEFORPRINTER GetReturnType = dwRtn End Function
Private Sub cmdBrowse_Click()
Dim BI As BROWSEINFO Dim nFolder As Long Dim IDL As ITEMIDLIST Dim pIdl As Long Dim sPath As String Dim SHFI As SHFILEINFO
With BI ' The dialog's owner window... .hOwner = Me.hWnd
' Set the Browse dialog root folder nFolder = GetFolderValue(m_wCurOptIdx)
' Fill the item id list with the pointer of the selected folder item, rtns 0 on success ' ================================================== ' If this function fails because the selected folder doesn't exist, ' .pidlRoot will be uninitialized & will equal 0 (CSIDL_DESKTOP) ' and the root will be the Desktop. ' DO NOT specify the CSIDL_ constants for .pidlRoot !!!! ' The SHBrowseForFolder() call below will generate a fatal exception ' (GPF) if the folder indicated by the CSIDL_ constant does not exist!! ' ================================================== If SHGetSpecialFolderLocation(ByVal Me.hWnd, ByVal nFolder, IDL) = NOERROR Then .pidlRoot = IDL.mkid.cb End If
' Initialize the buffer that rtns the display name of the selected folder .pszDisplayName = String$(MAX_PATH, 0)
' Set the dialog's banner text .lpszTitle = "Browsing is limited to: " & optFolder(m_wCurOptIdx).Caption
' Set the type of folders to display & return ' -play with these option constants to see what can be returned .ulFlags = GetReturnType()
End With
' Clear previous return vals before the ' dialog is shown (it might be cancelled) txtPath = "" txtDisplayName = "" pic16Icon.Picture = LoadPicture() ' clears prev icon pic32Icon.Picture = LoadPicture()
' Show the Browse dialog pIdl = SHBrowseForFolder(BI)
' If the dialog was cancelled... If pIdl = 0 Then Exit Sub
' Fill sPath w/ the selected path from the id list ' (will rtn False if the id list can't be converted) sPath = String$(MAX_PATH, 0) SHGetPathFromIDList ByVal pIdl, ByVal sPath
' Display the path and the name of the selected folder txtPath = Left(sPath, InStr(sPath, vbNullChar) - 1) txtDisplayName = Left$(BI.pszDisplayName, _ InStr(BI.pszDisplayName, vbNullChar) - 1)
' Get the 16x16 icon info from the id list using the pidl SHGetFileInfo ByVal pIdl, 0&, SHFI, Len(SHFI), _ SHGFI_PIDL Or SHGFI_ICON Or SHGFI_SMALLICON ' The 16x16 icon handle rtnd in SHFI.hIcon is stretched to 32x32. ' DrawIconEx() will shrink (or stretch) the icon per it's cxWidth & cyWidth params DrawIconEx pic16Icon.hdc, 0, 0, SHFI.hIcon, 16, 16, 0, 0, DI_NORMAL pic16Icon.Refresh
' Get the 32x32 icon info from the id list SHGetFileInfo ByVal pIdl, 0&, SHFI, Len(SHFI), _ SHGFI_PIDL Or SHGFI_ICON ' SHFI.hIcon is OK here so DrawIcon() can be used DrawIcon pic32Icon.hdc, 0, 0, SHFI.hIcon pic32Icon.Refresh
' Frees the memory SHBrowseForFolder() ' allocated for the pointer to the item id list CoTaskMemFree pIdl
End Sub
Private Sub cmdInfo_Click() MsgBox "If a root folder Option Button has no correspnoding folder location " & _ "displayed, then no Registry entry exists for it under:" & vbCrLf & vbCrLf & _ "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" & _ vbCrLf & vbCrLf & "As well, if a root folder Option Button is disabled, the folder " & _ "does not exist in your file system and cannot be dispalyed as the root in the Browse dialog." End Sub
Private Sub cmdQuit_Click() Unload Me End Sub
Private Sub Form_Unload(Cancel As Integer) Set Form1 = Nothing End End Sub