📄 subject_38368.htm
字号:
<p>
序号:38368 发表者:syncmaster 发表日期:2003-05-02 21:18:58
<br>主题:给我一个使用CFileDialog的理由!
<br>内容:如何改造才能用它来选择路径,只选择路径!<BR>谢谢
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:---信风--- 回复日期:2003-05-02 21:50:20
<br>内容:使用 SHBrowseForFolder 函数可以选择路径。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:syncmaster 回复日期:2003-05-02 22:03:16
<br>内容:正在试用,但是具体方法不会,能不能介绍一下<BR>BROWSEINFO bi;<BR> char buf[MAX_PATH];<BR> HWND pHwnd=::FindWindow(NULL,"CustomCtrl"); <BR> bi.hwndOwner=pHwnd;<BR> bi.pidlRoot=NULL;<BR> bi.pszDisplayName=buf;<BR> bi.lpszTitle="my";<BR> bi.ulFlags=0;<BR> ::SHBrowseForFolder(&bi);<BR>我按照以上代码,以点击button,主程序窗口也消失了,么有出来选择窗口,为何,谢<BR>在线等待
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:---信风--- 回复日期:2003-05-02 22:11:43
<br>内容:用这个BrowseForFolder<BR><BR>---------------------------------------------------------------------------<BR>int CALLBACK BCBProc(HWND hwnd, UINT uMsg, LPARAM lParam,LPARAM lpData)<BR>{<BR> if( uMsg == BFFM_INITIALIZED )<BR> {<BR> SendMessage(hwnd, BFFM_SETSELECTION, 1, lpData );<BR> }<BR> <BR> return 0;<BR>}<BR>bool BrowseForFolder(LPCTSTR szTitle, LPCTSTR szInitDir, CString &strPath)<BR>{<BR> LPMALLOC pMalloc; <BR> bool bResult = false; <BR> <BR> <BR> // Get's the Shell's default allocator <BR> if(::SHGetMalloc(&pMalloc) == NOERROR) <BR> { <BR> BROWSEINFO bi; <BR> char szBuffer[MAX_PATH]; <BR> LPITEMIDLIST pidl; <BR> <BR> bi.hwndOwner = NULL; <BR> bi.pidlRoot = NULL; <BR> bi.pszDisplayName = szBuffer; <BR> bi.lpszTitle = szTitle; <BR> bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS; <BR> if(CString(szInitDir).IsEmpty())<BR> {<BR> bi.lpfn = NULL;<BR> bi.lParam = NULL;<BR> }<BR> else<BR> {<BR> bi.lpfn = BCBProc; <BR> bi.lParam = LPARAM(szInitDir); <BR> }<BR> <BR> // This next call issues the dialog box <BR> if((pidl = ::SHBrowseForFolder(&bi))!=NULL) //error <BR> { <BR> if(::SHGetPathFromIDList(pidl, szBuffer)) <BR> { <BR> //At this point pszBuffer contains the selected path <BR> strPath= szBuffer; <BR> bResult = TRUE; <BR> } <BR> // Free the PIDL allocated by SHBrowseForFolder <BR> pMalloc->Free(pidl); <BR> } <BR> } <BR> // Release the shell's allocator <BR> <BR> pMalloc->Release();<BR> <BR> return bResult; <BR>}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:syncmaster 回复日期:2003-05-02 23:45:00
<br>内容:谢谢,我也用同样的方法搞定乐,呵呵,开心,anyway,thanks Very much
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -