Index: src/ch/Dialogs.cpp =================================================================== diff -u -r3493e9fc470285b0a0b417d50be281467a071eb7 -r449a5b399ab21ca0d06050b47b264f2f704af966 --- src/ch/Dialogs.cpp (.../Dialogs.cpp) (revision 3493e9fc470285b0a0b417d50be281467a071eb7) +++ src/ch/Dialogs.cpp (.../Dialogs.cpp) (revision 449a5b399ab21ca0d06050b47b264f2f704af966) @@ -1,67 +1,67 @@ -/************************************************************************ - Copy Handler 1.x - program for copying data in Microsoft Windows - systems. - Copyright (C) 2001-2004 Ixen Gerthannes (copyhandler@o2.pl) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*************************************************************************/ -#include "stdafx.h" -#include "dialogs.h" - -#ifdef _DEBUG -#define new DEBUG_NEW -#endif - -bool BrowseForFolder(LPCTSTR lpszTitle, CString* pResult) -{ - // code allows browsing on all disks - LPMALLOC pMalloc; - TCHAR pszBuffer[MAX_PATH]; - sprintf(pszBuffer, "c:\\windows\\system"); - bool retval=false; - - /* Gets the Shell's default allocator */ - if (::SHGetMalloc(&pMalloc) == NOERROR) - { - BROWSEINFO bi; - LPITEMIDLIST pidl; - - // Get help on BROWSEINFO struct - it's got all the bit settings. - bi.hwndOwner = NULL; - bi.pidlRoot = NULL; - bi.pszDisplayName = pszBuffer; - bi.lpszTitle = lpszTitle; - bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS; - bi.lpfn = NULL; - bi.lParam = 0; - - // This next call issues the dialog box. - if ((pidl = ::SHBrowseForFolder(&bi)) != NULL) - { - if (::SHGetPathFromIDList(pidl, pszBuffer)) - { - *pResult=pszBuffer; - retval=true; - } - - // Free the PIDL allocated by SHBrowseForFolder. - pMalloc->Free(pidl); - } - // Release the shell's allocator. - pMalloc->Release(); - } - - return retval; -} +/*************************************************************************** +* Copyright (C) 2001-2008 by J�zef Starosczyk * +* ixen@copyhandler.com * +* * +* This program is free software; you can redistribute it and/or modify * +* it under the terms of the GNU Library General Public License * +* (version 2) as published by the Free Software Foundation; * +* * +* This program is distributed in the hope that it will be useful, * +* but WITHOUT ANY WARRANTY; without even the implied warranty of * +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +* GNU General Public License for more details. * +* * +* You should have received a copy of the GNU Library General Public * +* License along with this program; if not, write to the * +* Free Software Foundation, Inc., * +* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * +***************************************************************************/ +#include "stdafx.h" +#include "dialogs.h" +#include "shlobj.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + +bool BrowseForFolder(LPCTSTR lpszTitle, CString* pResult) +{ + // code allows browsing on all disks + LPMALLOC pMalloc; + TCHAR pszBuffer[MAX_PATH]; + _sntprintf(pszBuffer, _MAX_PATH, _T("c:\\windows\\system")); + bool retval=false; + + /* Gets the Shell's default allocator */ + if (::SHGetMalloc(&pMalloc) == NOERROR) + { + BROWSEINFO bi; + LPITEMIDLIST pidl; + + // Get help on BROWSEINFO struct - it's got all the bit settings. + bi.hwndOwner = NULL; + bi.pidlRoot = NULL; + bi.pszDisplayName = pszBuffer; + bi.lpszTitle = lpszTitle; + bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS; + bi.lpfn = NULL; + bi.lParam = 0; + + // This next call issues the dialog box. + if ((pidl = ::SHBrowseForFolder(&bi)) != NULL) + { + if (::SHGetPathFromIDList(pidl, pszBuffer)) + { + *pResult=pszBuffer; + retval=true; + } + + // Free the PIDL allocated by SHBrowseForFolder. + pMalloc->Free(pidl); + } + // Release the shell's allocator. + pMalloc->Release(); + } + + return retval; +}