63#define _WIN32_WINNT 0x0600
79#include "wine/unicode.h"
86#define UNIMPLEMENTED_FLAGS \
87(OFN_DONTADDTORECENT |\
88OFN_NODEREFERENCELINKS | OFN_NOREADONLYRETURN |\
112static HHOOK s_hFileDialogHook =
NULL;
113static LONG s_nFileDialogHookCount = 0;
115#define MAX_TRANSLATE 8
116static HWND s_ahwndTranslate[MAX_TRANSLATE] = {
NULL };
118static void FILEDLG95_AddRemoveTranslate(
HWND hwndOld,
HWND hwndNew)
121 for (
i = 0;
i < MAX_TRANSLATE; ++
i)
123 if (s_ahwndTranslate[
i] == hwndOld)
125 s_ahwndTranslate[
i] = hwndNew;
137 if (s_ahwndTranslate[
i] ==
NULL)
141 if (fodInfos ==
NULL)
145 if (hwndView == hwndFocus ||
IsChild(hwndView, hwndFocus))
147 IShellView_TranslateAccelerator(fodInfos->
Shell.FOIShellView, pMsg);
170 for (
i = 0;
i < MAX_TRANSLATE; ++
i)
172 if (FILEDLG95_DoTranslate(
i, hwndFocus, pMsg))
195#define ITEM_NOTFOUND -1
198#define WM_GETISHELLBROWSER WM_USER+7
200#define TBPLACES_CMDID_PLACE0 0xa064
201#define TBPLACES_CMDID_PLACE1 0xa065
202#define TBPLACES_CMDID_PLACE2 0xa066
203#define TBPLACES_CMDID_PLACE3 0xa067
204#define TBPLACES_CMDID_PLACE4 0xa068
212#define CBGetItemDataPtr(hwnd,iItemId) \
213 SendMessageW(hwnd, CB_GETITEMDATA, (WPARAM)(iItemId), 0)
367 static const int default_places[] =
399 WARN(
"Unrecognized special folder %lu.\n",
value);
441 FIXME(
"Flags 0x%08lx not yet implemented\n",
448 templateid = NEWFILEOPENV2ORD;
450 templateid = NEWFILEOPENORD;
547 info->defext = pszExt;
668 if (
ret &&
info->ofnInfos->lpstrFile &&
info->ofnInfos->lpstrFileTitle)
720 LPSHELLFOLDER psfDesktop;
727 IShellFolder_Release(psfDesktop);
731 IShellFolder_Release(psfDesktop);
758 lstrcatW(lpstrPathAndFile, lpstrFile);
764 lstrcpyW(lpstrPathAndFile+2, lpstrFile);
766 lstrcpyW(lpstrPathAndFile, lpstrFile);
771 lstrcpyW(lpstrPathAndFile, lpstrTemp);
782 UINT nStrCharCount = 0;
792 while ( nStrCharCount <= nStrLen )
794 if ( lpstrEdit[nStrCharCount]==
'"' )
797 while ((nStrCharCount <= nStrLen) && (lpstrEdit[nStrCharCount]!=
'"'))
799 (*lpstrFileList)[nFileIndex++] = lpstrEdit[nStrCharCount];
802 (*lpstrFileList)[nFileIndex++] = 0;
809 if ((nStrLen > 0) && (nFileIndex == 0) )
811 lstrcpyW(*lpstrFileList, lpstrEdit);
812 nFileIndex =
lstrlenW(lpstrEdit) + 1;
817 (*lpstrFileList)[nFileIndex++] =
'\0';
819 *sizeUsed = nFileIndex;
830 HWND hwndChild, hwndStc32;
831 RECT rectParent, rectChild, rectStc32;
840 RECT rectHelp, rectCancel;
865 rectParent.
bottom -= help_fixup;
888 if (hwndChild != hwndStc32)
894 if (hwndStc32 && rectChild.left > rectStc32.
right)
897 rectChild.left += rectParent.
right;
898 rectChild.left -= rectStc32.
right;
901 if (rectChild.top >= rectStc32.
bottom)
904 rectChild.top += rectParent.
bottom;
905 rectChild.top -= rectStc32.
bottom - rectStc32.
top;
908 SetWindowPos(hwndChild, 0, rectChild.left, rectChild.top,
918 if (hwndChild != hwndChildDlg)
926 rectChild.left += rectStc32.
left;
927 rectChild.top += rectStc32.
top;
929 SetWindowPos(hwndChild, 0, rectChild.left, rectChild.top,
952 chgy = rectChild.
bottom - ( rectStc32.
bottom - rectStc32.
top) - help_fixup;
962 chgy = rectChild.
bottom - help_fixup;
968 rectParent.
right - rectParent.
left + chgx,
969 rectParent.
bottom - rectParent.
top + chgy,
1052 temp.tmplate.dwExtendedStyle = 0;
1053 temp.tmplate.cdit = 0;
1056 temp.tmplate.cx = 0;
1057 temp.tmplate.cy = 0;
1080 TRACE(
"%p %d\n", hwndParentDlg, uCode);
1082 if (!fodInfos || !fodInfos->
DlgInfos.hwndCustomDlg)
1085 TRACE(
"CALL NOTIFY for %d\n", uCode);
1098 TRACE(
"RET NOTIFY retval %#Ix\n", hook_result);
1109 TRACE(
"CDM_GETFILEPATH:\n");
1151 if(!fodInfos)
return FALSE;
1160 TRACE(
"CDM_GETFOLDERPATH:\n");
1180 TRACE(
"CDM_GETSPEC:\n");
1192 TRACE(
"CDM_SETCONTROLTEXT:\n");
1244 FIXME(
"message CDM_FIRST+%04x not implemented\n", uMsg -
CDM_FIRST);
1321 else if( rc.top > rcview.
bottom)
1332 rc.right - rc.left + chgx, rc.bottom - rc.top,
1349 else if( rc.left > rcview.
right)
1365 rc.right - rc.left + chgx, rc.bottom - rc.top,
1379 rc.right - rc.left + chgx,
1380 rc.bottom - rc.top + chgy,
1390 if(fodInfos->
DlgInfos.hwndCustomDlg &&
1398 if( rc.top > rcview.
bottom)
1403 rc.right - rc.left, rc.bottom - rc.top,
1406 else if( rc.left > rcview.
right)
1411 rc.right - rc.left, rc.bottom - rc.top,
1467 style &= ~WS_SIZEBOX;
1496 if( fodInfos->
DlgInfos.hwndCustomDlg)
1512 rcstc.left, rcstc.top, rcstc.right - rcstc.left, rcstc.bottom - rcstc.top,
1540 if (++s_nFileDialogHookCount == 1)
1545 FILEDLG95_AddRemoveTranslate(
NULL,
hwnd);
1588 FILEDLG95_AddRemoveTranslate(
hwnd,
NULL);
1589 if (--s_nFileDialogHookCount == 0)
1592 s_hFileDialogHook =
NULL;
1691 TRACE(
"%p\n", fodInfos);
1700 if (win2000plus) win98plus =
TRUE;
1702 TRACE(
"Running on 2000+ %d, 98+ %d\n", win2000plus, win98plus);
1731 rectTB.
top = rectlook.
top-1;
1820 handledPath =
FALSE;
1849 TRACE(
"Value in Filename includes path, overriding InitialDir: %s, %s\n",
1891 TRACE(
"Value in InitDir is not an existing path, changed to (nil)\n");
1939 TRACE(
"Value in Filename includes path, overriding initdir: %s, %s\n",
1946 if (!handledPath && win2000plus) {
1962 if (win98plus && !handledPath && fodInfos->
filter && *fodInfos->
filter) {
1973 if(! *lpstrPos)
break;
1974 lpstrPos +=
lstrlenW(lpstrPos) + 1;
1977 if(! *lpstrPos)
break;
1983 lpstrPos +=
lstrlenW(lpstrPos) + 1;
1992 TRACE(
"No initial dir specified, but files of type %s found in current, so using it\n",
2001 if (!handledPath && (win2000plus || win98plus)) {
2019 }
else if (!handledPath) {
2081 if (fodInfos->
DlgInfos.hwndCustomDlg)
2112 RECT rectDlg, rectHelp, rectCancel;
2138 TRACE(
"dir=%s file=%s\n",
2158 IShellBrowser_BrowseObject(fodInfos->
Shell.FOIShellBrowser,pidlItemId, SBSP_ABSOLUTE);
2182 TRACE(
"%p, %p\n",
info->ShellInfos.hwndOwner, pidl);
2184 IShellBrowser_BrowseObject(
info->Shell.FOIShellBrowser, pidl, SBSP_ABSOLUTE);
2263 fodInfos->
DlgInfos.dwDlgProp &= ~FODPROP_USEVIEW;
2306 TRACE(
"canceled\n");
2315 TRACE(
"canceled\n");
2334 UINT nCount, nSizePath;
2355 LPWSTR lpstrTemp = lpstrFileList;
2357 for ( nCount = 0; nCount < nFileCount; nCount++ )
2364 WCHAR lpstrNotFound[100];
2365 WCHAR lpstrMsg[100];
2382 lpstrTemp +=
lstrlenW(lpstrTemp) + 1;
2387 nSizePath =
lstrlenW(lpstrPathSpec) + 1;
2393 FIXME(
"Components have to be separated by blanks\n");
2444 WCHAR mru_list[32], *cur_mru_slot;
2445 BOOL taken[25] = {0};
2446 DWORD mru_list_size =
sizeof(mru_list), key_type = -1,
i;
2447 HKEY hkey_tmp, *hkey;
2456 *stored_path =
'\0';
2459 L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ComDlg32\\LastVisitedMRU", hkey);
2461 WARN(
"Unable to create MRU key: %ld\n",
ret);
2466 (
LPBYTE)mru_list, &mru_list_size);
2471 WARN(
"Error getting MRUList data: type: %ld, ret: %ld\n", key_type,
ret);
2476 for(cur_mru_slot = mru_list; *cur_mru_slot; ++cur_mru_slot){
2478 DWORD value_data_size =
sizeof(value_data);
2480 *value_name = *cur_mru_slot;
2483 &key_type, (
LPBYTE)value_data, &value_data_size);
2485 WARN(
"Error getting MRU slot data: type: %ld, ret: %ld\n", key_type,
ret);
2502 for(cur_mru_slot = mru_list; *cur_mru_slot; ++cur_mru_slot)
2503 taken[*cur_mru_slot -
'a'] =
TRUE;
2504 for(
i = 0;
i < 25; ++
i){
2511 return *cur_mru_slot;
2539 WCHAR *path_ends, *
final;
2553 final[final_len-1] =
'\0';
2556 final_len *
sizeof(
WCHAR));
2568 WCHAR old_mru_list[32], new_mru_list[32];
2569 WCHAR *old_mru_slot, *new_mru_slot = new_mru_list;
2570 DWORD mru_list_size =
sizeof(old_mru_list), key_type;
2573 (
LPBYTE)old_mru_list, &mru_list_size);
2576 new_mru_list[0] =
slot;
2577 new_mru_list[1] =
'\0';
2579 WARN(
"Error getting MRUList data: type: %ld, ret: %ld\n", key_type,
ret);
2586 *new_mru_slot++ =
slot;
2587 for(old_mru_slot = old_mru_list; *old_mru_slot; ++old_mru_slot){
2588 if(*old_mru_slot !=
slot)
2589 *new_mru_slot++ = *old_mru_slot;
2591 *new_mru_slot =
'\0';
2597 WARN(
"Error saving MRUList data: %ld\n",
ret);
2626static const WCHAR s_subkey[] =
2628 'S',
'o',
'f',
't',
'w',
'a',
'r',
'e',
'\\',
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'\\',
2629 'W',
'i',
'n',
'd',
'o',
'w',
's',
'\\',
'C',
'u',
'r',
'r',
'e',
'n',
't',
'V',
'e',
'r',
's',
2630 'i',
'o',
'n',
'\\',
'E',
'x',
'p',
'l',
'o',
'r',
'e',
'r',
'\\',
'C',
'o',
'm',
'D',
'l',
'g',
2631 '3',
'2',
'\\',
'O',
'p',
'e',
'n',
'S',
'a',
'v',
'e',
'M',
'R',
'U',0
2633static const WCHAR s_szAst[] = {
'*', 0 };
2654#define MRU_STRING 0x0000
2655#define MRU_BINARY 0x0001
2656#define MRU_CACHEWRITE 0x0002
2662static CREATEMRULISTW s_pCreateMRUListW =
NULL;
2666static ADDMRUSTRINGW s_pAddMRUStringW =
NULL;
2670static FINDMRUSTRINGW s_pFindMRUStringW =
NULL;
2674static ENUMMRULISTW s_pEnumMRUListW =
NULL;
2678static FREEMRULIST s_pFreeMRUList =
NULL;
2680static BOOL FILEDLG_InitMRUList(
void)
2694 if (!s_pCreateMRUListW ||
2695 !s_pAddMRUStringW ||
2696 !s_pFindMRUStringW ||
2709 static const WCHAR s_image_exts[][6] =
2714 {
'j',
'p',
'e',
'g',0 },
2716 {
'j',
'f',
'i',
'f',0 },
2720 {
't',
'i',
'f',
'f',0 }
2745 if (!defext || !*defext || !FILEDLG_InitMRUList())
2754 if (!
result && hOpenSaveMRT)
2760 mi.hKey = hOpenSaveMRT;
2761 mi.lpszSubKey = defext;
2763 hList = (*s_pCreateMRUListW)(&
mi);
2766 ret = (*s_pEnumMRUListW)(
hList, 0, szText,
sizeof(szText));
2772 (*s_pFreeMRUList)(
hList);
2778 if (stored_path[0] == 0)
2781 if (ExtIsPicture(defext))
2802 if (!defext || !*defext || !FILEDLG_InitMRUList())
2811 if (!
result && hOpenSaveMRT)
2817 mi.hKey = hOpenSaveMRT;
2818 mi.lpszSubKey = defext;
2820 hList = (*s_pCreateMRUListW)(&
mi);
2824 (*s_pFreeMRUList)(
hList);
2830 mi.hKey = hOpenSaveMRT;
2831 mi.lpszSubKey = s_szAst;
2833 hList = (*s_pCreateMRUListW)(&
mi);
2837 (*s_pFreeMRUList)(
hList);
2853 strMsgTitle[0] =
'\0';
2871 if (lpstrFilter != (
LPWSTR)
CB_ERR && lpstrFilter && *lpstrFilter)
2878 pchDot =
wcschr(lpstrFilter,
L'.');
2880 if (pchDot && pchDot[1] && !
wcschr(pchDot,
L'*') && !
wcschr(pchDot,
L'?'))
2881 the_ext =
StrDupW(pchDot + 1);
2884 *pchSemicolon =
L';';
2887 if (!the_ext && (!pchDot || pchDot[1]))
2902 LPWSTR the_ext = FILEDLG95_GetFallbackExtension(fodInfos, lpstrPathAndFile);
2904 if (the_ext && *the_ext &&
2914 lstrcatW(lpstrPathAndFile, the_ext);
2951 int nOpenAction = defAction;
2952 LPWSTR lpszTemp, lpszTemp1;
2964 lpszTemp1 = lpszTemp = lpstrPathAndFile;
2967 LPSHELLFOLDER lpsfChild;
2973 if (lpszTemp == lpstrPathAndFile && (
p =
PathSkipRootW(lpwstrTemp)))
2983 lpszTemp = lpszTemp +
lstrlenW(lpwstrTemp);
2995 lpszTemp1 = lpszTemp;
3000 if(
lstrlenW(lpwstrTemp)==2 && lpwstrTemp[1] ==
':' &&
3001 ((lpwstrTemp[0] >=
'a' && lpwstrTemp[0] <=
'z') ||
3002 (lpwstrTemp[0] >=
'A' && lpwstrTemp[0] <=
'Z')))
3017 if((
dwAttributes & (SFGAO_FOLDER | SFGAO_FILESYSANCESTOR)) == (SFGAO_FOLDER | SFGAO_FILESYSANCESTOR))
3022 if(
FAILED(IShellFolder_BindToObject(*ppsf, pidl, 0, &IID_IShellFolder, (
LPVOID*)&lpsfChild)))
3024 ERR(
"bind to failed\n");
3027 IShellFolder_Release(*ppsf);
3045 (lpwstrTemp[
lstrlenW(lpwstrTemp)-1] ==
'\\'))
3058 FILEDLG95_AddDotExtIfNeeded(fodInfos, lpstrPathAndFile);
3096 UINT nFileCount = 0;
3100 LPSHELLFOLDER lpsf =
NULL;
3121 TRACE(
"count=%u len=%u file=%s\n", nFileCount, sizeUsed,
debugstr_w(lpstrFileList));
3172 TRACE(
"end validate sf=%p\n", lpsf);
3195 TRACE(
"ONOPEN_BROWSE\n");
3198 if(
SUCCEEDED(IShellFolder_QueryInterface( lpsf, &IID_IPersistFolder2, (
LPVOID*)&ppf2)))
3201 IPersistFolder2_GetCurFolder(ppf2, &pidlCurrent);
3202 IPersistFolder2_Release(ppf2);
3205 if (
SUCCEEDED(IShellBrowser_BrowseObject(fodInfos->
Shell.FOIShellBrowser, pidlCurrent, SBSP_ABSOLUTE))
3214 if (fodInfos->
Shell.FOIShellView)
3215 IShellView_Refresh(fodInfos->
Shell.FOIShellView);
3247 FILEDLG95_AddDotExtIfNeeded(fodInfos, lpstrPathAndFile);
3267 WCHAR* filterSearchIndex;
3274 filterSearchIndex =
wcschr(filterExt,
';');
3275 if (filterSearchIndex)
3277 filterSearchIndex[0] =
'\0';
3283 filterSearchIndex =
wcschr(filterExt,
'.');
3284 if (filterSearchIndex++ && !
wcschr(filterSearchIndex,
'*') && !
wcschr(filterSearchIndex,
'?'))
3286 lstrcpyW(filterExt, filterSearchIndex);
3307 lstrcatW(lpstrPathAndFile, filterExt);
3331 WCHAR lpstrOverwrite[100];
3349 WCHAR lpstrCreate[100];
3409 tempFileA,
sizeof(tempFileA),
NULL,
NULL);
3460 FILEDLG95_MRU_save_ext(lpstrPathAndFile);
3486 if(lpsf) IShellFolder_Release(lpsf);
3537 if(
SUCCEEDED(IShellView_GetItemObject(fodInfos->
Shell.FOIShellView,
3542 CMINVOKECOMMANDINFO ci;
3543 ZeroMemory(&ci,
sizeof(CMINVOKECOMMANDINFO));
3544 ci.cbSize =
sizeof(CMINVOKECOMMANDINFO);
3548 IContextMenu_InvokeCommand(pcm, &ci);
3549 IContextMenu_Release(pcm);
3567 if(
SUCCEEDED(IShellBrowser_BrowseObject(fodInfos->
Shell.FOIShellBrowser,
3591 if (fodInfos->
Shell.FOIShellView)
3593 IShellView_DestroyViewWindow(fodInfos->
Shell.FOIShellView);
3594 IShellView_Release(fodInfos->
Shell.FOIShellView);
3596 if (fodInfos->
Shell.FOIShellFolder)
3597 IShellFolder_Release(fodInfos->
Shell.FOIShellFolder);
3598 IShellBrowser_Release(fodInfos->
Shell.FOIShellBrowser);
3599 if (fodInfos->
Shell.FOIDataObject)
3600 IDataObject_Release(fodInfos->
Shell.FOIDataObject);
3628 if (! *lpstrPos)
return E_FAIL;
3652 if(! *lpstrPos)
break;
3653 lpstrDisplay = lpstrPos;
3654 lpstrPos +=
lstrlenW(lpstrPos) + 1;
3663 lpstrPos +=
lstrlenW(lpstrPos) + 1;
3669 if (!*lpstrExt)
break;
3758 if (fodInfos->
Shell.FOIShellView)
3759 IShellView_Refresh(fodInfos->
Shell.FOIShellView);
3779 for(
i=0;
i<iCount;
i++)
3806 for(iPos = iCount-1;iPos>=0;iPos--)
3829 L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Desktop\\NameSpace\\"
3841 LPITEMIDLIST pidlDrives, pidlTmp, pidlTmp1, pidlAbsTmp;
3844 LookInInfos *liInfos = heap_alloc_zero(
sizeof(*liInfos));
3846 TRACE(
"%p\n", hwndCombo);
3876 if(
SUCCEEDED(IShellFolder_EnumObjects(psfRoot, hwndCombo, SHCONTF_FOLDERS, &lpeRoot)))
3878 while (
S_OK == IEnumIDList_Next(lpeRoot, 1, &pidlTmp,
NULL))
3888 if(
SUCCEEDED(IShellFolder_BindToObject(psfRoot, pidlTmp,
NULL, &IID_IShellFolder, (
LPVOID*)&psfDrives)))
3891 if(
SUCCEEDED(IShellFolder_EnumObjects(psfDrives, hwndCombo,SHCONTF_FOLDERS, &lpeDrives)))
3893 while (
S_OK == IEnumIDList_Next(lpeDrives, 1, &pidlTmp1,
NULL))
3895 pidlAbsTmp =
ILCombine(pidlTmp, pidlTmp1);
3900 IEnumIDList_Release(lpeDrives);
3902 IShellFolder_Release(psfDrives);
3909 IEnumIDList_Release(lpeRoot);
3911 IShellFolder_Release(psfRoot);
3927 RECT rectText, rectIcon, lookin_rect;
3934 UINT icon_width, icon_height;
3940 if(pDIStruct->
itemID == -1)
3958 0, &sfi,
sizeof (sfi), shgfi_flags );
3975 if(pDIStruct->
itemState & ODS_COMBOBOXEDIT)
3983 rectIcon.
left = pDIStruct->
rcItem.
left + 1 + icon_width/2 * iIndentation;
4026 TRACE(
"%p\n", fodInfos);
4044 if(
SUCCEEDED(IShellBrowser_BrowseObject(fodInfos->
Shell.FOIShellBrowser,
4072 TRACE(
"%p, %p, %d\n",
hwnd, pidl, iInsertId);
4080 tmpFolder = heap_alloc_zero(
sizeof(*tmpFolder));
4085 while ((pidlNext =
ILGetNext(pidlNext)))
4095 sfi.
dwAttributes = SFGAO_FILESYSANCESTOR | SFGAO_FILESYSTEM;
4144 if (pidl == pidlParent)
4191 if(iRemovedItem < iItemPos)
4245 TRACE(
"0x%08Ix 0x%x\n",searchArg, iSearchMethod);
4281 for(iPos = iCount-1;iPos>=0;iPos--)
4302 static CLIPFORMAT cfFormat;
4303 FORMATETC formatetc;
4306 formatetc.cfFormat = cfFormat;
4308 formatetc.dwAspect = DVASPECT_CONTENT;
4309 formatetc.lindex = -1;
4310 formatetc.tymed = TYMED_HGLOBAL;
4323 LPWSTR lpstrAllFiles, lpstrTmp;
4324 UINT nFiles = 0, nFileToOpen, nFileSelected, nAllFilesLength = 0, nThisFileLength, nAllFilesMaxLength;
4331 if (
FAILED(IDataObject_GetData(fodInfos->
Shell.FOIDataObject, &formatetc, &medium)))
4335 nFileSelected = cida->
cidl;
4339 lpstrAllFiles = heap_alloc_zero(nAllFilesMaxLength *
sizeof(
WCHAR));
4344 for (nFileToOpen = 0; nFileToOpen < nFileSelected; nFileToOpen++)
4351 if (nAllFilesLength +
MAX_PATH + 3 > nAllFilesMaxLength)
4353 nAllFilesMaxLength *= 2;
4357 lpstrAllFiles = lpstrTmp;
4360 lpstrAllFiles[nAllFilesLength++] =
'"';
4361 GetName(fodInfos->
Shell.FOIShellFolder, pidl, SHGDN_INFOLDER | SHGDN_FORPARSING, lpstrAllFiles + nAllFilesLength);
4362 nThisFileLength =
lstrlenW(lpstrAllFiles + nAllFilesLength);
4363 nAllFilesLength += nThisFileLength;
4364 lpstrAllFiles[nAllFilesLength++] =
'"';
4365 lpstrAllFiles[nAllFilesLength++] =
' ';
4373 lpstrTmp = lpstrAllFiles;
4377 lpstrTmp[nThisFileLength] = 0;
4415 FIXME(
"unknown type %x!\n",
src->uType);
4430 UINT nFileCount = 0;
4459 if(medium.pUnkForRelease)
4461 IUnknown_Release(medium.pUnkForRelease);
4484 TRACE(
"sv=%p index=%u\n", doSelected, nPidlIndex);
4490 if(
SUCCEEDED(IDataObject_GetData(doSelected,&formatetc,&medium)))
4493 if(nPidlIndex <= cida->cidl)
4514 TRACE(
"sv=%p\n", doSelected);
4516 if (!doSelected)
return 0;
4519 if(
SUCCEEDED(IDataObject_GetData(doSelected,&formatetc,&medium)))
4522 retVal = cida->
cidl;
4548 TRACE(
"sf=%p pidl=%p\n", lpsf, pidl);
4554 IShellFolder_Release(lpsf);
4576 TRACE(
"%p\n", pidlAbs);
4581 if(pidlAbs && pidlAbs->mkid.cb)
4583 if(
SUCCEEDED(IShellFolder_BindToObject(psfParent, pidlAbs,
NULL, &IID_IShellFolder, (
LPVOID*)&psf)))
4585 IShellFolder_Release(psfParent);
4604 TRACE(
"%p\n", pidl);
4625 if(!lpcstrFileName)
return NULL;
4626 if(!*lpcstrFileName)
return NULL;
4632 IShellFolder_Release(lpsf);
4647 ULONG uAttr = SFGAO_FOLDER | SFGAO_HASSUBFOLDER | SFGAO_FILESYSANCESTOR;
4649 ULONG uAttr = SFGAO_FOLDER | SFGAO_HASSUBFOLDER;
4653 TRACE(
"%p, %p\n", psf, pidl);
4655 ret = IShellFolder_GetAttributesOf( psf, 1, &pidl, &uAttr );
4657 TRACE(
"-- 0x%08lx 0x%08lx\n", uAttr,
ret);
4660 return (uAttr & (SFGAO_FOLDER | SFGAO_HASSUBFOLDER)) && (uAttr & SFGAO_FILESYSANCESTOR);
4662 return uAttr & (SFGAO_FOLDER | SFGAO_HASSUBFOLDER);
4684 if (
FAILED( IShellBrowser_BrowseObject( fodInfos->
Shell.FOIShellBrowser,
4685 pidlSelection, SBSP_RELATIVE ) ) )
4691 bBrowseSelFolder =
TRUE;
4698 return bBrowseSelFolder;
4898 if(lpFile[
len] ==
'/' || lpFile[
len] ==
'\\' || lpFile[
len] ==
':')
4901 for(
i =
len;
i >= 0;
i--)
4903 if (lpFile[
i] ==
'/' || lpFile[
i] ==
'\\' || lpFile[
i] ==
':')
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
static void * heap_alloc(size_t len)
static BOOL heap_free(void *mem)
static const char * wine_dbgstr_rect(const RECT *prc)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static const WCHAR nameW[]
#define RegCloseKey(hKey)
#define FNERR_BUFFERTOOSMALL
#define CDERR_LOADRESFAILURE
#define CDERR_FINDRESFAILURE
BOOL GetFileName31A(OPENFILENAMEA *lpofn, UINT dlgType)
void COMDLG32_SetCommDlgExtendedError(DWORD err)
HINSTANCE COMDLG32_hInstance
BOOL GetFileName31W(OPENFILENAMEW *lpofn, UINT dlgType)
struct tagMRUINFOW MRUINFOW
struct tagMRUINFOW * LPMRUINFOW
INT(CALLBACK * MRUBinaryCmpFn)(LPCVOID lhs, LPCVOID rhs, DWORD length)
INT(CALLBACK * MRUStringCmpFnW)(LPCWSTR lhs, LPCWSTR rhs)
EXTERN_C HRESULT DoInitAutoCompleteWithCWD(FileOpenDlgInfos *pInfo, HWND hwndEdit)
EXTERN_C HRESULT DoReleaseAutoCompleteWithCWD(FileOpenDlgInfos *pInfo)
BOOL WINAPI InitCommonControlsEx(const INITCOMMONCONTROLSEX *lpInitCtrls)
#define OFN_OVERWRITEPROMPT
#define OFN_EXTENSIONDIFFERENT
#define CDM_SETCONTROLTEXT
#define OFN_ENABLETEMPLATEHANDLE
struct tagOFNA * LPOPENFILENAMEA
#define OPENFILENAME_SIZE_VERSION_400W
#define CDM_GETFOLDERIDLIST
#define OFN_FILEMUSTEXIST
#define OFN_ENABLETEMPLATE
#define OFN_EX_NOPLACESBAR
#define OFN_PATHMUSTEXIST
#define CDM_GETFOLDERPATH
struct tagOFNW OPENFILENAMEW
#define OFN_ALLOWMULTISELECT
static LPCWSTR LPCWSTR module_name
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LSTATUS WINAPI RegGetValueW(HKEY hKey, LPCWSTR pszSubKey, LPCWSTR pszValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData)
LONG WINAPI RegOpenKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
LONG WINAPI RegCreateKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
void WINAPI CoTaskMemFree(void *ptr)
BOOL WINAPI ImageList_Draw(HIMAGELIST himl, INT i, HDC hdc, INT x, INT y, UINT fStyle)
BOOL WINAPI ImageList_Destroy(HIMAGELIST himl)
HIMAGELIST WINAPI ImageList_Create(INT cx, INT cy, UINT flags, INT cInitial, INT cGrow)
static UINT GetNumSelected(IDataObject *doSelected)
int COMDLG32_SplitFileNames(LPWSTR lpstrEdit, UINT nStrLen, LPWSTR *lpstrFileList, UINT *sizeUsed)
LPITEMIDLIST GetParentPidl(LPITEMIDLIST pidl)
void FILEDLG95_FILENAME_FillFromSelection(HWND hwnd)
static void ArrangeCtrlPositions(HWND hwndChildDlg, HWND hwndParentDlg, BOOL hide_help)
#define TBPLACES_CMDID_PLACE0
static void FILEDLG95_FILETYPE_Clean(HWND hwnd)
static BOOL COMDLG32_GetDisplayNameOf(LPCITEMIDLIST pidl, LPWSTR pwszPath)
void COMDLG32_GetCanonicalPath(PCIDLIST_ABSOLUTE pidlAbsCurrent, LPWSTR lpstrFile, LPWSTR lpstrPathAndFile)
#define TBPLACES_CMDID_PLACE1
static void FILEDLG95_LOOKIN_Clean(HWND hwnd)
#define UNIMPLEMENTED_FLAGS
static WCHAR * heap_strdupAtoW(const char *str)
static void FILEDLG95_Clean(HWND hwnd)
static LRESULT FILEDLG95_SHELL_Init(HWND hwnd)
int FILEDLG95_ValidatePathAction(LPWSTR lpstrPathAndFile, IShellFolder **ppsf, HWND hwnd, DWORD flags, BOOL isSaveDlg, int defAction)
#define TBPLACES_CMDID_PLACE3
static SIZE MemDialogSize
static HRESULT GetName(LPSHELLFOLDER lpsf, LPITEMIDLIST pidl, DWORD dwFlags, LPWSTR lpstrFileName)
static int FILEDLG95_FILENAME_GetFileNames(HWND hwnd, LPWSTR *lpstrFileList, UINT *sizeUsed)
static BOOL FILEDLG95_SHELL_ExecuteCommand(HWND hwnd, LPCSTR lpVerb)
static INT_PTR FILEDLG95_Handle_GetFilePath(HWND hwnd, DWORD size, LPVOID result)
static LRESULT FILEDLG95_ResizeControls(HWND hwnd, WPARAM wParam, LPARAM lParam)
static LRESULT FILEDLG95_LOOKIN_DrawItem(HWND hwnd, LPDRAWITEMSTRUCT pDIStruct)
static LRESULT FILEDLG95_OnWMSize(HWND hwnd, WPARAM wParam)
static void FILEDLG95_SHELL_Clean(HWND hwnd)
static void filedlg_browse_to_pidl(const FileOpenDlgInfos *info, LPITEMIDLIST pidl)
void FILEDLG95_OnOpenMessage(HWND hwnd, int idCaption, int idText)
static BOOL GetFileName95(FileOpenDlgInfos *fodInfos)
#define TBPLACES_CMDID_PLACE4
static BOOL BrowseSelectedFolder(HWND hwnd)
static WCHAR FILEDLG95_MRU_get_slot(LPCWSTR module_name, LPWSTR stored_path, PHKEY hkey_ret)
short WINAPI GetFileTitleW(LPCWSTR lpFile, LPWSTR lpTitle, WORD cbBuf)
static BOOL FILEDLG95_SendFileOK(HWND hwnd, FileOpenDlgInfos *fodInfos)
static BOOL FILEDLG95_SHELL_UpFolder(HWND hwnd)
#define TBPLACES_CMDID_PLACE2
BOOL WINAPI GetOpenFileNameW(OPENFILENAMEW *ofn)
static void FILEDLG95_MRU_load_filename(LPWSTR stored_path)
static int FILEDLG95_LOOKIN_RemoveMostExpandedItem(HWND hwnd)
static void filedlg_collect_places_pidls(FileOpenDlgInfos *fodInfos)
#define WM_GETISHELLBROWSER
static BOOL get_config_key_dword(HKEY hkey, const WCHAR *name, DWORD *value)
static LRESULT FILEDLG95_OnWMGetIShellBrowser(HWND hwnd)
static FORMATETC get_def_format(void)
short WINAPI GetFileTitleA(LPCSTR lpFile, LPSTR lpTitle, WORD cbBuf)
FileOpenDlgInfos * get_filedlg_infoptr(HWND hwnd)
static int FILEDLG95_LOOKIN_AddItem(HWND hwnd, LPITEMIDLIST pidl, int iInsertId)
static int FILEDLG95_LOOKIN_SearchItem(HWND hwnd, WPARAM searchArg, int iSearchMethod)
static BOOL valid_struct_size(DWORD size)
static void FILEDLG95_LOOKIN_Init(HWND hwndCombo)
IShellFolder * GetShellFolderFromPidl(LPITEMIDLIST pidlAbs)
static INT_PTR FILEDLG95_HandleCustomDialogMessages(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
static BOOL FILEDLG95_unixfs_is_rooted_at_desktop(void)
static LRESULT FILEDLG95_InitControls(HWND hwnd)
static LRESULT FILEDLG95_FillControls(HWND hwnd, WPARAM wParam, LPARAM lParam)
static BOOL is_places_bar_enabled(const FileOpenDlgInfos *fodInfos)
static HWND CreateTemplateDialog(FileOpenDlgInfos *fodInfos, HWND hwnd)
static BOOL IsPidlFolder(LPSHELLFOLDER psf, LPCITEMIDLIST pidl)
LRESULT SendCustomDlgNotificationMessage(HWND hwndParentDlg, UINT uCode)
static BOOL filename_is_edit(const FileOpenDlgInfos *info)
BOOL WINAPI GetSaveFileNameA(OPENFILENAMEA *ofn)
static BOOL FILEDLG95_LOOKIN_OnCommand(HWND hwnd, WORD wNotifyCode)
static void init_filedlg_infoA(OPENFILENAMEA *ofn, FileOpenDlgInfos *info)
BOOL WINAPI GetOpenFileNameA(OPENFILENAMEA *ofn)
static const char LookInInfosStr[]
static HRESULT FILEDLG95_FILETYPE_Init(HWND hwnd)
static BOOL FILEDLG95_OnOpenMultipleFiles(HWND hwnd, LPWSTR lpstrFileList, UINT nFileCount, UINT sizeUsed)
static HRESULT COMDLG32_StrRetToStrNW(LPWSTR dest, DWORD len, LPSTRRET src, const ITEMIDLIST *pidl)
static LPITEMIDLIST GetPidlFromName(IShellFolder *psf, LPWSTR lpcstrFileName)
static BOOL get_config_key_as_dword(HKEY hkey, const WCHAR *name, DWORD *value)
static INT_PTR CALLBACK FileOpenDlgProcUserTemplate(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
static void FILEDLG95_MRU_save_filename(LPCWSTR filename)
static LRESULT FILEDLG95_OnWMCommand(HWND hwnd, WPARAM wParam)
static INT_PTR CALLBACK FileOpenDlgProc95(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
static BOOL filedialog_is_readonly_hidden(const FileOpenDlgInfos *info)
static BOOL GetFileDialog95(FileOpenDlgInfos *info, UINT dlg_type)
struct tagLookInInfo LookInInfos
LPITEMIDLIST GetPidlFromDataObject(IDataObject *doSelected, UINT nPidlIndex)
static void init_filedlg_infoW(OPENFILENAMEW *ofn, FileOpenDlgInfos *info)
static int FILEDLG95_LOOKIN_InsertItemAfterParent(HWND hwnd, LPITEMIDLIST pidl)
BOOL WINAPI GetSaveFileNameW(LPOPENFILENAMEW ofn)
static int FILEDLG95_FILETYPE_SearchExt(HWND hwnd, LPCWSTR lpstrExt)
static BOOL is_dialog_hooked(const FileOpenDlgInfos *info)
int FILEDLG95_LOOKIN_SelectItem(HWND hwnd, LPITEMIDLIST pidl)
static BOOL FILEDLG95_FILETYPE_OnCommand(HWND hwnd, WORD wNotifyCode)
static BOOL is_win16_looks(DWORD flags)
static LRESULT FILEDLG95_OnWMGetMMI(HWND hwnd, LPMINMAXINFO mmiptr)
static void COMCTL32_ReleaseStgMedium(STGMEDIUM medium)
static BOOL FILEDLG95_OnOpen(HWND hwnd)
struct SFolder * LPSFOLDER
static BOOL get_config_key_string(HKEY hkey, const WCHAR *name, WCHAR **value)
#define CBGetItemDataPtr(hwnd, iItemId)
#define GetCurrentDirectoryW(x, y)
#define GetProcAddress(x, y)
#define INVALID_HANDLE_VALUE
#define WideCharToMultiByte
#define MultiByteToWideChar
static const WCHAR *const ext[]
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
HANDLE WINAPI FindFirstFileW(IN LPCWSTR lpFileName, OUT LPWIN32_FIND_DATAW lpFindFileData)
BOOL WINAPI FindClose(HANDLE hFindFile)
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
BOOL WINAPI SetCurrentDirectoryW(IN LPCWSTR lpPathName)
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
BOOL WINAPI GetVersionExW(IN LPOSVERSIONINFOW lpVersionInformation)
HRSRC WINAPI FindResourceW(HINSTANCE hModule, LPCWSTR name, LPCWSTR type)
HRSRC WINAPI FindResourceA(HMODULE hModule, LPCSTR name, LPCSTR type)
LPVOID WINAPI LockResource(HGLOBAL handle)
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
LPSTR WINAPI PathFindExtensionA(const char *path)
int WINAPI PathGetDriveNumberW(const WCHAR *path)
WCHAR *WINAPI PathFindFileNameW(const WCHAR *path)
BOOL WINAPI PathRemoveFileSpecW(WCHAR *path)
LPWSTR WINAPI PathFindExtensionW(const WCHAR *path)
BOOL WINAPI PathIsRelativeW(const WCHAR *path)
WCHAR *WINAPI PathSkipRootW(const WCHAR *path)
BOOL WINAPI PathFileExistsW(const WCHAR *path)
char *WINAPI PathFindFileNameA(const char *path)
WCHAR *WINAPI PathFindNextComponentW(const WCHAR *path)
LPWSTR WINAPI CharLowerW(WCHAR *str)
WCHAR *WINAPI StrDupW(const WCHAR *str)
_ACRTIMP wchar_t *__cdecl wcspbrk(const wchar_t *, const wchar_t *)
_ACRTIMP size_t __cdecl strlen(const char *)
HRESULT WINAPI DECLSPEC_HOTPATCH OleInitialize(LPVOID reserved)
void WINAPI DECLSPEC_HOTPATCH OleUninitialize(void)
HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, INT nFolder, LPITEMIDLIST *ppidl)
HRESULT WINAPI SHGetFolderPathW(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwFlags, LPWSTR pszPath)
BOOL WINAPI PathIsDirectoryW(LPCWSTR lpszPath)
HRESULT WINAPI StrRetToBufW(LPSTRRET src, const ITEMIDLIST *pidl, LPWSTR dest, UINT len)
#define IShellFolder_ParseDisplayName
#define IShellFolder_GetDisplayNameOf
#define IDS_INVALID_FILENAME_TITLE
#define IDS_PATHNOTEXISTING
#define IDC_TOOLBARPLACES
#define IDS_FILENOTEXISTING
#define IDC_TOOLBARSTATIC
#define IDS_OVERWRITEFILE
#define IDS_INVALID_FILENAME
GLint GLint GLsizei GLsizei height
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLenum GLsizei const GLchar * buf
GLuint GLsizei GLsizei * length
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
HGLOBAL NTAPI GlobalFree(HGLOBAL hMem)
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
static ERESOURCE GlobalLock
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
int WINAPI lstrlenA(LPCSTR lpString)
#define memcpy(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeStringFromAsciiz(_Out_ PUNICODE_STRING Destination, _In_ PCSZ Source)
#define VER_PLATFORM_WIN32_NT
#define VER_PLATFORM_WIN32_WINDOWS
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
#define PathCanonicalizeW
#define PathAddBackslashW
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
void WINAPI ILFree(LPITEMIDLIST pidl)
HRESULT WINAPI SHParseDisplayName(LPCWSTR pszName, IBindCtx *pbc, LPITEMIDLIST *ppidl, SFGAOF sfgaoIn, SFGAOF *psfgaoOut)
LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
BOOL WINAPI ILRemoveLastID(LPITEMIDLIST pidl)
UINT WINAPI ILGetSize(LPCITEMIDLIST pidl)
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST pidl)
BOOL WINAPI ILIsEqual(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
#define VIEW_PARENTFOLDER
#define ICC_USEREX_CLASSES
struct _IMAGELIST * HIMAGELIST
#define IDB_VIEW_SMALL_COLOR
#define TB_BUTTONSTRUCTSIZE
#define TOOLBARCLASSNAMEW
#define ImageList_AddIcon(himl, hicon)
#define TB_SETBUTTONWIDTH
#define TB_SETMAXTEXTROWS
#define TOOLBARCLASSNAMEA
struct tagNMTTDISPINFOA * LPNMTTDISPINFOA
#define CBEM_GETEDITCONTROL
HWND WINAPI GetFocus(void)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
DWORD WINAPI GetSysColor(_In_ int)
BOOL WINAPI RedrawWindow(_In_opt_ HWND, _In_opt_ LPCRECT, _In_opt_ HRGN, _In_ UINT)
HWND WINAPI CreateWindowExA(_In_ DWORD dwExStyle, _In_opt_ LPCSTR lpClassName, _In_opt_ LPCSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
INT_PTR WINAPI DialogBoxIndirectParamW(_In_opt_ HINSTANCE, _In_ LPCDLGTEMPLATE, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
HANDLE WINAPI GetPropA(_In_ HWND, _In_ LPCSTR)
HANDLE WINAPI RemovePropW(_In_ HWND, _In_ LPCWSTR)
BOOL WINAPI SetPropA(_In_ HWND, _In_ LPCSTR, _In_opt_ HANDLE)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
HBRUSH WINAPI GetSysColorBrush(_In_ int)
LONG WINAPI SetWindowLongW(_In_ HWND, _In_ int, _In_ LONG)
LONG WINAPI GetWindowLongW(_In_ HWND, _In_ int)
BOOL WINAPI AdjustWindowRectEx(_Inout_ LPRECT, _In_ DWORD, _In_ BOOL, _In_ DWORD)
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI SetDlgItemTextW(_In_ HWND, _In_ int, _In_ LPCWSTR)
BOOL WINAPI EndDeferWindowPos(_In_ HDWP)
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
LRESULT WINAPI SendDlgItemMessageW(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI SetWindowTextW(_In_ HWND, _In_opt_ LPCWSTR)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
HWND WINAPI SetFocus(_In_opt_ HWND)
BOOL WINAPI UnhookWindowsHookEx(_In_ HHOOK)
BOOL WINAPI IsChild(_In_ HWND, _In_ HWND)
HWND WINAPI CreateWindowExW(_In_ DWORD dwExStyle, _In_opt_ LPCWSTR lpClassName, _In_opt_ LPCWSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
HWND WINAPI CreateDialogIndirectParamA(_In_opt_ HINSTANCE, _In_ LPCDLGTEMPLATE, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
BOOL WINAPI SetPropW(_In_ HWND, _In_ LPCWSTR, _In_opt_ HANDLE)
struct tagNMHDR * LPNMHDR
UINT WINAPI RegisterWindowMessageW(_In_ LPCWSTR)
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
HDC WINAPI GetDC(_In_opt_ HWND)
int WINAPI GetWindowTextLengthW(_In_ HWND)
BOOL WINAPI SetDlgItemTextA(_In_ HWND, _In_ int, _In_ LPCSTR)
#define MB_ICONEXCLAMATION
INT_PTR WINAPI DialogBoxIndirectParamA(_In_opt_ HINSTANCE, _In_ LPCDLGTEMPLATE, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
BOOL WINAPI SetRectEmpty(_Out_ LPRECT)
#define MAKEINTRESOURCEA(i)
HANDLE WINAPI GetPropW(_In_ HWND, _In_ LPCWSTR)
LRESULT WINAPI CallNextHookEx(_In_opt_ HHOOK, _In_ int, _In_ WPARAM, _In_ LPARAM)
HWND WINAPI GetWindow(_In_ HWND, _In_ UINT)
#define SBS_SIZEBOXBOTTOMRIGHTALIGN
int WINAPI GetDlgCtrlID(_In_ HWND)
HDWP WINAPI DeferWindowPos(_In_ HDWP, _In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
#define MAKEINTRESOURCEW(i)
#define SetWindowLongPtrW
UINT WINAPI RegisterClipboardFormatA(_In_ LPCSTR)
BOOL WINAPI DestroyWindow(_In_ HWND)
BOOL WINAPI EqualRect(_In_ LPCRECT, _In_ LPCRECT)
int WINAPI GetSystemMetrics(_In_ int)
HWND WINAPI CreateDialogIndirectParamW(_In_opt_ HINSTANCE, _In_ LPCDLGTEMPLATE, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
HANDLE WINAPI RemovePropA(_In_ HWND, _In_ LPCSTR)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HDWP WINAPI BeginDeferWindowPos(_In_ int)
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
BOOL WINAPI DestroyIcon(_In_ HICON)
DWORD_PTR WINAPI SHGetFileInfoW(LPCWSTR path, DWORD dwFileAttributes, SHFILEINFOW *psfi, UINT sizeofpsfi, UINT flags)
#define SHGFI_ATTR_SPECIFIED
#define SHGFI_SYSICONINDEX
#define SHGFI_DISPLAYNAME
#define CSIDL_DESKTOPDIRECTORY
#define CSIDL_MYDOCUMENTS
#define CFSTR_SHELLIDLISTA
#define CSIDL_FLAG_CREATE
static IShellBrowser * IShellBrowserImpl_Construct(void)
#define FCIDM_TB_NEWFOLDER
#define FCIDM_TB_SMALLICON
#define FCIDM_TB_UPFOLDER
#define FCIDM_TB_REPORTVIEW
ITEMIDLIST UNALIGNED * LPITEMIDLIST
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
struct FileOpenDlgInfos::@432 ShellInfos
struct FileOpenDlgInfos::@433 DlgInfos
struct FileOpenDlgInfos::@431 Shell
struct FileOpenDlgInfos::@434 HookMsg
ULONG dwOSVersionInfoSize
WCHAR szDisplayName[MAX_PATH]
MRUBinaryCmpFn binary_cmpfn
MRUStringCmpFnW string_cmpfn
union tagMRUINFOW::@424 u
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
DWORD WINAPI GetLastError(void)
DWORD WINAPI GetCurrentThreadId(void)
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
BOOL WINAPI GetTextMetricsW(_In_ HDC, _Out_ LPTEXTMETRICW)
COLORREF WINAPI SetBkColor(_In_ HDC, _In_ COLORREF)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
BOOL WINAPI TextOutW(_In_ HDC hdc, _In_ int x, _In_ int y, _In_reads_(c) LPCWSTR lpString, _In_ int c)
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
COLORREF WINAPI SetTextColor(_In_ HDC, _In_ COLORREF)
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_USER
#define RRF_RT_REG_BINARY