http://bugs.winehq.org/show_bug.cgi?id=2339 ------- Additional Comments From jonathan(a)ernstfamily.ch 2004-25-07 02:42 ------- Here is the answer from the author; I splitted his answer in two part and put the other part in bug 2338. To see the original answer with correct indentation, please read here: http://forum.digital-digest.com/showthread.php?s=&postid=183082#post183082 -------------------- I attached some code snippets, if you need more information, feel free to contact me directly: dvdshrink "at" dvdshrink.info The browse for folder dialog uses some kind of callback, I forget for what purpose exactly, but I attached the code also. / ************************************************** *************************** SelectFolderDlg ************************************************** ***************************/ #ifndef BIF_NEWDIALOGSTYLE #define BIF_NEWDIALOGSTYLE 0x0040 #endif #ifndef BIF_USENEWUI #define BIF_USENEWUI 0x0050 #endif // browser callback: when initialized, set the initial selection // to the specified buffer int CALLBACK _SHBrowseForFolderCallbackProc( HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData) { if (uMsg == BFFM_INITIALIZED) { LPCTSTR szpath = (LPCTSTR) lpData; if (szpath) { if (_tcslen(szpath)) { SendMessage(hwnd, BFFM_SETSELECTION, TRUE, lpData); } } } return 0; } bool SelectFolderDlg(HWND hwnd, LPCTSTR sztitle, CString& szfolder, bool bAllowNew) { // get malloc interface for piddles IMalloc * pmalloc = NULL; if (FAILED(SHGetMalloc(&pmalloc))) return false; // get root folder LPITEMIDLIST pidl = NULL; SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOP, &pidl); // do browse TCHAR szpath[MAX_PATH] = {0}; BROWSEINFO sInfo = {0}; sInfo.lpszTitle = sztitle; sInfo.pidlRoot = pidl; sInfo.ulFlags = BIF_RETURNONLYFSDIRS | BIF_VALIDATE; sInfo.lpfn = _SHBrowseForFolderCallbackProc; sInfo.hwndOwner = hwnd; sInfo.lParam = (LPARAM)(LPCTSTR)(szfolder); if (bAllowNew) sInfo.ulFlags |= BIF_EDITBOX | BIF_NEWDIALOGSTYLE | BIF_USENEWUI; LPITEMIDLIST pid2; pid2 = SHBrowseForFolder(&sInfo); pmalloc->Free(pidl); // if we have a folder bool bok = false; if (pid2) { if (SUCCEEDED(SHGetPathFromIDList(pid2, szpath))) { bok = true; szfolder = szpath; } pmalloc->Free(pid2); } // free piddles pmalloc->Release(); // ok! return bok; } -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee.