想不到只是要設定Folder Browser的初始路徑居然要用到回呼(callback)函式
首先必需建立一個Callback Function讓Folder Browser初始化時呼叫,並送出BFFM_SETSELECTION來指定路徑(即我們的初始化路徑),注意BrowseCallbackProc必需為static。
int CALLBACK CMainFrame::BrowseCallbackProc(HWND hwnd,UINT uMsg,LPARAM lParam,LPARAM lpData)
{
switch(uMsg)
{
case BFFM_INITIALIZED:
::SendMessage(hwnd,BFFM_SETSELECTION,TRUE,lpData);
break;
default:
break;
}
return 0;
}
指定我們的路徑與Callback Function
BROWSEINFO info = { 0 };
info.lpfn = BrowseCallbackProc;
info.lParam = (LPARAM)(strDefault.GetString());
呼叫SHBrowserForFolder產生Folder Browser
if(PIDLIST_ABSOLUTE pIDL = ::SHBrowseForFolder(&info))
{
if(::SHGetPathFromIDList(pIDL,(LPSTR)&szPath))
{
::CoTaskMemFree(pIDL);
AfxGetApp()->OpenDocumentFile(szPath,FALSE);
}
}
執行結果如下圖
沒有留言:
張貼留言