1.浏览文件夹对话框,演示SHBrowseForFolder用法
/********************************************************************
created: 2008/04/24
created: 24:4:2008 12:47
author: Gohan
http://feed.feedsky.com/gohan
purpose: 演示SHBrowseForFolder用法
*********************************************************************/
#include <Windows.h>
#include <ShlObj.h>
int main ()
{
BROWSEINFO bi ;
ZeroMemory (& bi , sizeof ( BROWSEINFO ));
LPMALLOC pMalloc ;
LPITEMIDLIST pidl = SHBrowseForFolder (& bi );
TCHAR * path = new TCHAR [ MAX_PATH ];
if ( pidl != NULL )
{
SHGetPathFromIDList ( pidl , path );
MessageBox ( NULL , path , TEXT ( "Choose" ), MB_OK );
if ( SUCCEEDED ( SHGetMalloc (& pMalloc ))) //pidl指向的对象用完应该释放,之前忽略了
{
pMalloc -> Free ( pidl );
pMalloc -> Release ();
}
}
else
{
MessageBox ( NULL , TEXT ( " 选择为空" ), TEXT ( "Choose" ), MB_OK );
}
delete path ; //谢谢true的提醒,以后我一定会更加慎重
}
created: 2008/04/24
created: 24:4:2008 12:47
author: Gohan
http://feed.feedsky.com/gohan
purpose: 演示SHBrowseForFolder用法
*********************************************************************/
#include <Windows.h>
#include <ShlObj.h>
int main ()
{
BROWSEINFO bi ;
ZeroMemory (& bi , sizeof ( BROWSEINFO ));
LPMALLOC pMalloc ;
LPITEMIDLIST pidl = SHBrowseForFolder (& bi );
TCHAR * path = new TCHAR [ MAX_PATH ];
if ( pidl != NULL )
{
SHGetPathFromIDList ( pidl , path );
MessageBox ( NULL , path , TEXT ( "Choose" ), MB_OK );
if ( SUCCEEDED ( SHGetMalloc (& pMalloc ))) //pidl指向的对象用完应该释放,之前忽略了
{
pMalloc -> Free ( pidl );
pMalloc -> Release ();
}
}
else
{
MessageBox ( NULL , TEXT ( " 选择为空" ), TEXT ( "Choose" ), MB_OK );
}
delete path ; //谢谢true的提醒,以后我一定会更加慎重
}
2.文件选择对话框,文件夹浏览
char szInitPath[MAX_PATH]={0};
strcpy(szInitPath,g_strOrigPath);
char szInitPath[MAX_PATH]={0};
strcpy(szInitPath,g_strOrigPath);
if(m_bIsFile)
{
CFileDialog filedlg(TRUE,NULL,NULL,OFN_FILEMUSTEXIST|OFN_ALLOWMULTISELECT,"Files(*.*)|*.*||");
filedlg.m_ofn.lpstrInitialDir = szInitPath;
filedlg.m_ofn.lpstrTitle = "Please Select File(s):";
{
CFileDialog filedlg(TRUE,NULL,NULL,OFN_FILEMUSTEXIST|OFN_ALLOWMULTISELECT,"Files(*.*)|*.*||");
filedlg.m_ofn.lpstrInitialDir = szInitPath;
filedlg.m_ofn.lpstrTitle = "Please Select File(s):";
if(IDOK == filedlg.DoModal())
{
POSITION pos=filedlg.GetStartPosition();
while(pos!=NULL)
{
CString str=filedlg.GetNextPathName(pos);
m_strArray.Add(str);
}
}
}
else
{
BROWSEINFO bi;
memset(&bi,0,sizeof(bi));
bi.lpszTitle=("Please Select The Source Path:");
bi.lpfn = BrowsCallBackProc;
bi.lParam = (LONG)szInitPath;
{
POSITION pos=filedlg.GetStartPosition();
while(pos!=NULL)
{
CString str=filedlg.GetNextPathName(pos);
m_strArray.Add(str);
}
}
}
else
{
BROWSEINFO bi;
memset(&bi,0,sizeof(bi));
bi.lpszTitle=("Please Select The Source Path:");
bi.lpfn = BrowsCallBackProc;
bi.lParam = (LONG)szInitPath;
LPITEMIDLIST pidl=SHBrowseForFolder(&bi);
char szPath[MAX_PATH]="";
if(SHGetPathFromIDList(pidl,szPath))
m_strOrgPath=szPath;
}
char szPath[MAX_PATH]="";
if(SHGetPathFromIDList(pidl,szPath))
m_strOrgPath=szPath;
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/rambo_ghaip/archive/2009/09/20/4569022.aspx