系统对话框求解 在win98中添加设备驱动程序时,系统会弹出一个对话框让我们选择inf文件的目录,我想问大家,有没有这样一个系统调用(就象选择文件对话框一样)选择目录。不要告诉我让我手做一个,因为我不想那样。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没有,只能自己继承一个CCommonDialog重新做 ITEMIDLIST* pilist; BROWSEINFO bi; bi.hwndOwner = this->m_hWnd; bi.pidlRoot = NULL; bi.pszDisplayName = NULL; bi.lpszTitle = "标题"; bi.ulFlags = BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS; bi.lpfn = NULL; pilist = SHBrowseForFolder(&bi); //show select folder dialog if( pilist == NULL ) return ""; //pressed cancel button char chPath[MAX_PATH]; SHGetPathFromIDList(pilist,chPath); //get folder name from ITEMIDLIST CString strPash = chPath; 当然有就是SHGetPathFromIDList我以前花了好久才找到的,这是我当时的一点源程序!请你结贴好吗:)void CEditSendItem::OnBrowseButton() { char szDisplayName[MAX_PATH]; BROWSEINFO bi; ITEMIDLIST *temp; SHGetFolderLocation(this->m_hWnd , CSIDL_DESKTOP, NULL, NULL,&temp); bi.hwndOwner = this->m_hWnd ; bi.pidlRoot = temp; bi.pszDisplayName = szDisplayName; bi.lpszTitle = "请选择数据源路径"; bi.ulFlags = BIF_RETURNONLYFSDIRS; bi.lpfn = NULL; bi.lParam = 0; bi.iImage = 0; temp=SHBrowseForFolder(&bi); SHGetPathFromIDList(temp, szDisplayName); m_proPath = szDisplayName; m_editProperty.SetWindowText (m_proPath);} 我把SHBrowseForFolder封装成一个类了,哧哧,DoModal()后用GetPath()就取得路径了。class CFolderDialog{public: LPCSTR GetPath(); virtual int DoModal( ); CFolderDialog();protected: char m_szPath[MAX_PATH];};CFolderDialog::CFolderDialog(){ //清空路径字符串 memset(m_szPath,0,sizeof(m_szPath));} int CFolderDialog::DoModal(){ LPITEMIDLIST pilist = NULL; BROWSEINFO bi; bi.hwndOwner = NULL ; bi.pidlRoot = NULL ; bi.pszDisplayName = new char[MAX_PATH]; bi.lpszTitle = "Select Folder"; bi.ulFlags = BIF_RETURNONLYFSDIRS; // Folder only bi.lpfn = NULL ; bi.lParam = NULL ; bi.iImage = NULL ; pilist = SHBrowseForFolder ( &bi ) ; BOOL b = false; if ( pilist ) b = SHGetPathFromIDList(pilist,m_szPath); USES_CONVERSION ; delete[] bi.pszDisplayName ; LPMALLOC pMalloc = NULL; HRESULT hr = SHGetMalloc(&pMalloc); if ( pilist ) pMalloc->Free ( pilist ) ; pMalloc->Release ( ) ; return b;}LPCSTR CFolderDialog::GetPath(){ return m_szPath;} 求急救。。。关于函数调用问题 有什么工具可以把C语言写的程序转换为XML格式? 关于窗口嵌套的问题 Microsoft FlexGrid Control, version 6.0 (SP6)控件row值无效 注册表里面, "C:\Program\devenv.exe" "%1". %1代表什么 救命:文件通用对话框 请教:多文档的窗口问题 客户端IP地址获取问题 mfc dll请教 MFC 单文档 退出时提示是否保存 在Windows中怎样通过RPC调用UNIX下的程序 急,求msdn可用下载,不要2003版,俺用得vs6.0,不是.net,3cd,2002年的那个版本都可以
BROWSEINFO bi;
bi.hwndOwner = this->m_hWnd;
bi.pidlRoot = NULL;
bi.pszDisplayName = NULL;
bi.lpszTitle = "标题";
bi.ulFlags = BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL; pilist = SHBrowseForFolder(&bi); //show select folder dialog
if( pilist == NULL ) return ""; //pressed cancel button char chPath[MAX_PATH];
SHGetPathFromIDList(pilist,chPath); //get folder name from ITEMIDLIST
CString strPash = chPath;
就是SHGetPathFromIDList
我以前花了好久才找到的,这是我当时的一点源程序!
请你结贴好吗:)void CEditSendItem::OnBrowseButton()
{
char szDisplayName[MAX_PATH];
BROWSEINFO bi;
ITEMIDLIST *temp; SHGetFolderLocation(this->m_hWnd , CSIDL_DESKTOP, NULL, NULL,&temp); bi.hwndOwner = this->m_hWnd ;
bi.pidlRoot = temp;
bi.pszDisplayName = szDisplayName;
bi.lpszTitle = "请选择数据源路径";
bi.ulFlags = BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0; temp=SHBrowseForFolder(&bi);
SHGetPathFromIDList(temp, szDisplayName);
m_proPath = szDisplayName;
m_editProperty.SetWindowText (m_proPath);
}
{
public:
LPCSTR GetPath();
virtual int DoModal( );
CFolderDialog();
protected:
char m_szPath[MAX_PATH];
};CFolderDialog::CFolderDialog()
{
//清空路径字符串
memset(m_szPath,0,sizeof(m_szPath));
} int CFolderDialog::DoModal()
{
LPITEMIDLIST pilist = NULL;
BROWSEINFO bi;
bi.hwndOwner = NULL ;
bi.pidlRoot = NULL ;
bi.pszDisplayName = new char[MAX_PATH];
bi.lpszTitle = "Select Folder";
bi.ulFlags = BIF_RETURNONLYFSDIRS; // Folder only
bi.lpfn = NULL ;
bi.lParam = NULL ;
bi.iImage = NULL ; pilist = SHBrowseForFolder ( &bi ) ;
BOOL b = false;
if ( pilist )
b = SHGetPathFromIDList(pilist,m_szPath);
USES_CONVERSION ; delete[] bi.pszDisplayName ; LPMALLOC pMalloc = NULL;
HRESULT hr = SHGetMalloc(&pMalloc);
if ( pilist )
pMalloc->Free ( pilist ) ;
pMalloc->Release ( ) ; return b;
}LPCSTR CFolderDialog::GetPath()
{
return m_szPath;
}