当前位置:编程学习 > VC++ >>

用VC++如何实现一个目录选择的浏览按钮

用VC++如何实现一个目录选择的浏览按钮(如选择软件的安装路径)
追问:

 

弹出这样的效果,只要选择到相应的路径就可以了!谢谢!不胜感激!

 

答案:
void CDialog1::OnButton1() {// TODO: Add your control notification handler code hereCString sFolderPath;BROWSEINFO bi;char Buffer[MAX_PATH + 1100];//memset(&bi,0,sizeof BROWSEINFO); //memset(Buffer,0,MAX_PATH+1000);//char Buffer[MAX_PATH + 100];//初始化入口参数bi开始bi.hwndOwner = NULL;bi.pidlRoot =NULL;//初始化制定的root目录--------很不容易bi.pszDisplayName = Buffer;//此参数如为NULL则不能显示对话框bi.lpszTitle = "请选择查找目录";//bi.ulFlags = BIF_BROWSEINCLUDEFILES;//包括文件//bi.ulFlags=BIF_RETURNONLYFSDIRS; //bi.ulFlags = BIF_EDITBOX;//包括文件夹bi.lpfn = NULL;bi.iImage=IDR_MAINFRAME;//初始化入口参数 bi 结束 LPITEMIDLIST pIDList = SHBrowseForFolder(&bi);//调用显示选择对话框if(pIDList){SHGetPathFromIDList(pIDList, Buffer);//取得文件夹路径到 Buffer里sFolderPath = Buffer;//将文件夹路径保存在一个CString对象里SetDlgItemText(IDC_EDIT1,sFolderPath);    }
}
直接调用文件浏览控件是最好的方法,方法如下:OPENFILENAME ofn;WCHAR szPatNameofn.hwndOwner=hwnd;ofn.lpstrFilter=TEXT("*.*");lstrcpy(szPatName,TEXT("*.*"));ofn.nMaxFile=_countof(szPatName);ofn.lpstrFile=szPatName;ofn.lpstrTitle=TEXT("请选择要Copy的文件");ofn.Flags=OFN_EXPLORER | OFN_FILEMUSTEXIST;BOOLfOK=GetOpenFileName(&ofn);if(fok){  用户选择了路径,路径存储在szPathName里。}

添加一个摁扭命名为open,再加上如下代码:

void COpenDlg::Onopen() 
{
 OPENFILENAME   ofn;              
 char   szFile[MAX_PATH];
 ZeroMemory(&ofn,   sizeof(ofn));  
 ofn.lStructSize   =   sizeof(ofn);  
 ofn.lpstrFile   =   szFile; 
 ofn.lpstrFile[0]   = TEXT('\0');
 ofn.nMaxFile   =   sizeof(szFile);  
 ofn.lpstrFilter   = "Mp3 File(*.mp3)\0*.mp3\0Wma File(*.wma)\0*.wma\0Video File(*.dat)\0*.dat\0Wave File(*.wav)\0*.wav\0AVI File(*.avi)\0*.avi\0Movie File(*.mov)\0*.mov\0Media File(*.mmm)\0*.mmm\0Mid File(*.mid;*,rmi)\0*.mid;*.rmi\0MPEG File(*.mpeg)\0*.mpeg\0All File(*.*)\0*.*\0";
 ofn.nFilterIndex   =   1;  
 ofn.lpstrFileTitle   =   NULL;  
 ofn.nMaxFileTitle   =   0;  
 ofn.lpstrInitialDir   =   NULL;  
 ofn.Flags   =   OFN_PATHMUSTEXIST   |   OFN_FILEMUSTEXIST;  
 if(GetOpenFileName(&ofn))
 {
  ShellExecute(NULL,"open",ofn.lpstrFile,NULL,NULL,SW_SHOWNORMAL);
 }
 
 
 // TODO: Add your control notification handler code here
 
}

上一个:vc++中用odbc连接mysql数据库运行时出错
下一个:VC++中怎么样把全局变量和局部变量联系起来

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,