Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
d083baba
Commit
d083baba
authored
Aug 21, 1999
by
Francois Boisvert
Committed by
Alexandre Julliard
Aug 21, 1999
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Implemented basic browsing in the file name edit of the filedlg 95.
parent
a833f637
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
101 additions
and
16 deletions
+101
-16
cdlg.h
dlls/commdlg/cdlg.h
+29
-0
cdlg32.c
dlls/commdlg/cdlg32.c
+59
-3
filedlg95.c
dlls/commdlg/filedlg95.c
+0
-0
filedlgbrowser.c
dlls/commdlg/filedlgbrowser.c
+13
-13
No files found.
dlls/commdlg/cdlg.h
View file @
d083baba
...
...
@@ -41,6 +41,10 @@ typedef struct {
#define PD32_INVALID_PAGE_RANGE 7003
#include "commctrl.h"
#include "wine/undocshell.h"
#include "shellapi.h"
/* DPA */
extern
HDPA
(
WINAPI
*
COMDLG32_DPA_Create
)
(
INT
);
extern
LPVOID
(
WINAPI
*
COMDLG32_DPA_GetPtr
)
(
const
HDPA
,
INT
);
extern
LPVOID
(
WINAPI
*
COMDLG32_DPA_DeleteAllPtrs
)
(
const
HDPA
hdpa
);
...
...
@@ -48,9 +52,34 @@ extern LPVOID (WINAPI* COMDLG32_DPA_DeletePtr) (const HDPA hdpa, INT i);
extern
INT
(
WINAPI
*
COMDLG32_DPA_InsertPtr
)
(
const
HDPA
,
INT
,
LPVOID
);
extern
BOOL
(
WINAPI
*
COMDLG32_DPA_Destroy
)
(
const
HDPA
);
/* IMAGELIST */
extern
HICON
(
WINAPI
*
COMDLG32_ImageList_GetIcon
)
(
HIMAGELIST
,
INT
,
UINT
);
extern
HIMAGELIST
(
WINAPI
*
COMDLG32_ImageList_LoadImageA
)
(
HINSTANCE
,
LPCSTR
,
INT
,
INT
,
COLORREF
,
UINT
,
UINT
);
extern
BOOL
(
WINAPI
*
COMDLG32_ImageList_Draw
)
(
HIMAGELIST
himl
,
int
i
,
HDC
hdcDest
,
int
x
,
int
y
,
UINT
fStyle
);
extern
BOOL
(
WINAPI
*
COMDLG32_ImageList_Destroy
)
(
HIMAGELIST
himl
);
/* ITEMIDLIST */
extern
LPITEMIDLIST
(
WINAPI
*
COMDLG32_PIDL_ILClone
)
(
LPCITEMIDLIST
);
extern
LPITEMIDLIST
(
WINAPI
*
COMDLG32_PIDL_ILCombine
)(
LPCITEMIDLIST
,
LPCITEMIDLIST
);
extern
LPITEMIDLIST
(
WINAPI
*
COMDLG32_PIDL_ILGetNext
)(
LPITEMIDLIST
);
extern
BOOL
(
WINAPI
*
COMDLG32_PIDL_ILRemoveLastID
)(
LPCITEMIDLIST
);
extern
BOOL
(
WINAPI
*
COMDLG32_PIDL_ILIsEqual
)(
LPCITEMIDLIST
,
LPCITEMIDLIST
);
/* SHELL */
extern
BOOL
(
WINAPI
*
COMDLG32_SHGetPathFromIDListA
)
(
LPCITEMIDLIST
,
LPSTR
);
extern
HRESULT
(
WINAPI
*
COMDLG32_SHGetSpecialFolderLocation
)(
HWND
,
INT
,
LPITEMIDLIST
*
);
extern
DWORD
(
WINAPI
*
COMDLG32_SHGetDesktopFolder
)(
IShellFolder
**
);
extern
DWORD
(
WINAPI
*
COMDLG32_SHGetFileInfoA
)(
LPCSTR
,
DWORD
,
SHFILEINFOA
*
,
UINT
,
UINT
);
extern
DWORD
(
WINAPI
*
COMDLG32_SHFree
)(
LPVOID
);
extern
HRESULT
(
WINAPI
*
COMDLG32_StrRetToBufW
)(
LPSTRRET
,
LPITEMIDLIST
,
LPVOID
,
DWORD
);
extern
HRESULT
(
WINAPI
*
COMDLG32_StrRetToBufA
)(
LPSTRRET
,
LPITEMIDLIST
,
LPVOID
,
DWORD
);
/* PATH */
extern
BOOL
(
WINAPI
*
COMDLG32_PathIsRootA
)(
LPCSTR
x
);
extern
LPCSTR
(
WINAPI
*
COMDLG32_PathFindFilenameA
)(
LPCSTR
path
);
extern
DWORD
(
WINAPI
*
COMDLG32_PathRemoveFileSpecA
)(
LPSTR
fn
);
extern
BOOL
(
WINAPI
*
COMDLG32_PathMatchSpecW
)(
LPCWSTR
x
,
LPCWSTR
y
);
extern
LPSTR
(
WINAPI
*
COMDLG32_PathAddBackslashA
)(
LPSTR
path
);
#endif
dlls/commdlg/cdlg32.c
View file @
d083baba
...
...
@@ -23,7 +23,9 @@ static int COMDLG32_Attach = 0;
HINSTANCE
COMCTL32_hInstance
=
0
;
HINSTANCE
SHELL32_hInstance
=
0
;
HINSTANCE
SHLWAPI_hInstance
=
0
;
/* DPA */
HDPA
(
WINAPI
*
COMDLG32_DPA_Create
)
(
INT
);
LPVOID
(
WINAPI
*
COMDLG32_DPA_GetPtr
)
(
const
HDPA
,
INT
);
LPVOID
(
WINAPI
*
COMDLG32_DPA_DeletePtr
)
(
const
HDPA
hdpa
,
INT
i
);
...
...
@@ -31,11 +33,35 @@ LPVOID (WINAPI* COMDLG32_DPA_DeleteAllPtrs) (const HDPA hdpa);
INT
(
WINAPI
*
COMDLG32_DPA_InsertPtr
)
(
const
HDPA
,
INT
,
LPVOID
);
BOOL
(
WINAPI
*
COMDLG32_DPA_Destroy
)
(
const
HDPA
);
/* IMAGELIST */
HICON
(
WINAPI
*
COMDLG32_ImageList_GetIcon
)
(
HIMAGELIST
,
INT
,
UINT
);
HIMAGELIST
(
WINAPI
*
COMDLG32_ImageList_LoadImageA
)
(
HINSTANCE
,
LPCSTR
,
INT
,
INT
,
COLORREF
,
UINT
,
UINT
);
BOOL
(
WINAPI
*
COMDLG32_ImageList_Draw
)
(
HIMAGELIST
himl
,
int
i
,
HDC
hdcDest
,
int
x
,
int
y
,
UINT
fStyle
);
BOOL
(
WINAPI
*
COMDLG32_ImageList_Destroy
)
(
HIMAGELIST
himl
);
/* ITEMIDLIST */
LPITEMIDLIST
(
WINAPI
*
COMDLG32_PIDL_ILClone
)
(
LPCITEMIDLIST
);
LPITEMIDLIST
(
WINAPI
*
COMDLG32_PIDL_ILCombine
)(
LPCITEMIDLIST
,
LPCITEMIDLIST
);
LPITEMIDLIST
(
WINAPI
*
COMDLG32_PIDL_ILGetNext
)(
LPITEMIDLIST
);
BOOL
(
WINAPI
*
COMDLG32_PIDL_ILRemoveLastID
)(
LPCITEMIDLIST
);
BOOL
(
WINAPI
*
COMDLG32_PIDL_ILIsEqual
)(
LPCITEMIDLIST
,
LPCITEMIDLIST
);
/* SHELL */
BOOL
(
WINAPI
*
COMDLG32_SHGetPathFromIDListA
)
(
LPCITEMIDLIST
,
LPSTR
);
HRESULT
(
WINAPI
*
COMDLG32_SHGetSpecialFolderLocation
)(
HWND
,
INT
,
LPITEMIDLIST
*
);
DWORD
(
WINAPI
*
COMDLG32_SHGetDesktopFolder
)(
IShellFolder
**
);
DWORD
(
WINAPI
*
COMDLG32_SHGetFileInfoA
)(
LPCSTR
,
DWORD
,
SHFILEINFOA
*
,
UINT
,
UINT
);
DWORD
(
WINAPI
*
COMDLG32_SHFree
)(
LPVOID
);
HRESULT
(
WINAPI
*
COMDLG32_StrRetToBufW
)(
LPSTRRET
,
LPITEMIDLIST
,
LPVOID
,
DWORD
);
HRESULT
(
WINAPI
*
COMDLG32_StrRetToBufA
)(
LPSTRRET
,
LPITEMIDLIST
,
LPVOID
,
DWORD
);
/* PATH */
BOOL
(
WINAPI
*
COMDLG32_PathIsRootA
)(
LPCSTR
x
);
LPCSTR
(
WINAPI
*
COMDLG32_PathFindFilenameA
)(
LPCSTR
path
);
DWORD
(
WINAPI
*
COMDLG32_PathRemoveFileSpecA
)(
LPSTR
fn
);
BOOL
(
WINAPI
*
COMDLG32_PathMatchSpecW
)(
LPCWSTR
x
,
LPCWSTR
y
);
LPSTR
(
WINAPI
*
COMDLG32_PathAddBackslashA
)(
LPSTR
path
);
/***********************************************************************
* COMDLG32_DllEntryPoint (COMDLG32.entry)
*
...
...
@@ -84,13 +110,14 @@ BOOL WINAPI COMDLG32_DllEntryPoint(HINSTANCE hInstance, DWORD Reason, LPVOID Res
COMCTL32_hInstance
=
LoadLibraryA
(
"COMCTL32.DLL"
);
SHELL32_hInstance
=
LoadLibraryA
(
"SHELL32.DLL"
);
SHLWAPI_hInstance
=
LoadLibraryA
(
"SHLWAPI.DLL"
);
if
(
!
COMCTL32_hInstance
||
!
SHELL32_hInstance
)
if
(
!
COMCTL32_hInstance
||
!
SHELL32_hInstance
||
!
SHLWAPI_hInstance
)
{
ERR
(
"loading of comctl32 or shell32 failed
\n
"
);
ERR
(
"loading of comctl32 or shell32
or shlwapi
failed
\n
"
);
return
FALSE
;
}
/* DPA */
COMDLG32_DPA_Create
=
(
void
*
)
GetProcAddress
(
COMCTL32_hInstance
,
(
LPCSTR
)
328L
);
COMDLG32_DPA_Destroy
=
(
void
*
)
GetProcAddress
(
COMCTL32_hInstance
,
(
LPCSTR
)
329L
);
COMDLG32_DPA_GetPtr
=
(
void
*
)
GetProcAddress
(
COMCTL32_hInstance
,
(
LPCSTR
)
332L
);
...
...
@@ -98,10 +125,38 @@ BOOL WINAPI COMDLG32_DllEntryPoint(HINSTANCE hInstance, DWORD Reason, LPVOID Res
COMDLG32_DPA_DeletePtr
=
(
void
*
)
GetProcAddress
(
COMCTL32_hInstance
,
(
LPCSTR
)
336L
);
COMDLG32_DPA_DeleteAllPtrs
=
(
void
*
)
GetProcAddress
(
COMCTL32_hInstance
,
(
LPCSTR
)
337L
);
/* IMAGELIST */
COMDLG32_ImageList_GetIcon
=
(
void
*
)
GetProcAddress
(
COMCTL32_hInstance
,
"ImageList_GetIcon"
);
COMDLG32_ImageList_LoadImageA
=
(
void
*
)
GetProcAddress
(
COMCTL32_hInstance
,
"ImageList_LoadImageA"
);
COMDLG32_ImageList_Draw
=
(
void
*
)
GetProcAddress
(
COMCTL32_hInstance
,
"ImageList_Draw"
);
COMDLG32_ImageList_Destroy
=
(
void
*
)
GetProcAddress
(
COMCTL32_hInstance
,
"ImageList_Destroy"
);
/* ITEMISLIST */
COMDLG32_PIDL_ILIsEqual
=
(
void
*
)
GetProcAddress
(
SHELL32_hInstance
,
(
LPCSTR
)
21L
);
COMDLG32_PIDL_ILCombine
=
(
void
*
)
GetProcAddress
(
SHELL32_hInstance
,
(
LPCSTR
)
25L
);
COMDLG32_PIDL_ILGetNext
=
(
void
*
)
GetProcAddress
(
SHELL32_hInstance
,
(
LPCSTR
)
153L
);
COMDLG32_PIDL_ILClone
=
(
void
*
)
GetProcAddress
(
SHELL32_hInstance
,
(
LPCSTR
)
18L
);
COMDLG32_PIDL_ILRemoveLastID
=
(
void
*
)
GetProcAddress
(
SHELL32_hInstance
,
(
LPCSTR
)
17L
);
/* SHELL */
COMDLG32_SHFree
=
(
void
*
)
GetProcAddress
(
SHELL32_hInstance
,
"SHFree"
);
COMDLG32_SHGetSpecialFolderLocation
=
(
void
*
)
GetProcAddress
(
SHELL32_hInstance
,
"SHGetSpecialFolderLocation"
);
COMDLG32_SHGetPathFromIDListA
=
(
void
*
)
GetProcAddress
(
SHELL32_hInstance
,
"SHGetPathFromIDListA"
);
COMDLG32_SHGetDesktopFolder
=
(
void
*
)
GetProcAddress
(
SHELL32_hInstance
,
"SHGetDesktopFolder"
);
COMDLG32_SHGetFileInfoA
=
(
void
*
)
GetProcAddress
(
SHELL32_hInstance
,
"SHGetFileInfoA"
);
/* FIXME - change the followings to call GetProcAddress
when shlwapi.dll will work */
COMDLG32_StrRetToBufW
=
(
void
*
)
GetProcAddress
(
SHLWAPI_hInstance
,
"StrRetToBufW"
);
COMDLG32_StrRetToBufA
=
(
void
*
)
GetProcAddress
(
SHLWAPI_hInstance
,
"StrRetToBufA"
);
/* PATH */
COMDLG32_PathMatchSpecW
=
(
void
*
)
GetProcAddress
(
SHLWAPI_hInstance
,
"PathMatchSpecW"
);
COMDLG32_PathIsRootA
=
(
void
*
)
GetProcAddress
(
SHLWAPI_hInstance
,
"PathIsRootA"
);
COMDLG32_PathRemoveFileSpecA
=
(
void
*
)
GetProcAddress
(
SHLWAPI_hInstance
,
"PathRemoveFileSpecA"
);
COMDLG32_PathFindFilenameA
=
(
void
*
)
GetProcAddress
(
SHLWAPI_hInstance
,
"PathFindFileNameA"
);
COMDLG32_PathAddBackslashA
=
(
void
*
)
GetProcAddress
(
SHLWAPI_hInstance
,
"PathAddBackslashA"
);
break
;
case
DLL_PROCESS_DETACH
:
...
...
@@ -115,6 +170,7 @@ BOOL WINAPI COMDLG32_DllEntryPoint(HINSTANCE hInstance, DWORD Reason, LPVOID Res
}
FreeLibrary
(
COMCTL32_hInstance
);
FreeLibrary
(
SHELL32_hInstance
);
FreeLibrary
(
SHLWAPI_hInstance
);
break
;
}
return
TRUE
;
...
...
dlls/commdlg/filedlg95.c
View file @
d083baba
This diff is collapsed.
Click to expand it.
dlls/commdlg/filedlgbrowser.c
View file @
d083baba
...
...
@@ -9,7 +9,6 @@
#include "filedlgbrowser.h"
#include "winuser.h"
#include "heap.h"
#include "commctrl.h"
#include "wine/obj_dataobject.h"
#include "debugtools.h"
#include "cdlg.h"
...
...
@@ -112,7 +111,7 @@ IShellBrowser * IShellBrowserImpl_Construct(HWND hwndOwner)
sb
->
lpVtbl
=
&
IShellBrowserImpl_Vtbl
;
sb
->
lpVtbl2
=
&
IShellBrowserImpl_ICommDlgBrowser_Vtbl
;
SHGetSpecialFolderLocation
(
hwndOwner
,
COMDLG32_
SHGetSpecialFolderLocation
(
hwndOwner
,
CSIDL_DESKTOP
,
&
fodInfos
->
ShellInfos
.
pidlAbsCurrent
);
...
...
@@ -190,7 +189,7 @@ ULONG WINAPI IShellBrowserImpl_Release(IShellBrowser * iface)
if
(
!--
(
This
->
ref
))
{
SHFree
(
This
);
COMDLG32_
SHFree
(
This
);
return
0
;
}
return
This
->
ref
;
...
...
@@ -283,7 +282,7 @@ HRESULT WINAPI IShellBrowserImpl_BrowseObject(IShellBrowser *iface,
return
hRes
;
}
/* create an absolute pidl */
pidlTmp
=
ILCombine
(
fodInfos
->
ShellInfos
.
pidlAbsCurrent
,
pidlTmp
=
COMDLG32_PIDL_
ILCombine
(
fodInfos
->
ShellInfos
.
pidlAbsCurrent
,
(
LPITEMIDLIST
)
pidl
);
}
...
...
@@ -298,10 +297,11 @@ HRESULT WINAPI IShellBrowserImpl_BrowseObject(IShellBrowser *iface,
else
{
/* An absolute pidl (relative from the desktop) */
pidlTmp
=
ILClone
((
LPITEMIDLIST
)
pidl
);
pidlTmp
=
COMDLG32_PIDL_
ILClone
((
LPITEMIDLIST
)
pidl
);
psfTmp
=
GetShellFolderFromPidl
(
pidlTmp
);
}
/* Retrieve the IShellFolder interface of the pidl specified folder */
if
(
!
psfTmp
)
return
E_FAIL
;
...
...
@@ -345,7 +345,7 @@ HRESULT WINAPI IShellBrowserImpl_BrowseObject(IShellBrowser *iface,
FILEDLG95_LOOKIN_SelectItem
(
fodInfos
->
DlgInfos
.
hwndLookInCB
,
pidlTmp
);
/* Release old pidlAbsCurrent memory and update its value */
SHFree
((
LPVOID
)
fodInfos
->
ShellInfos
.
pidlAbsCurrent
);
COMDLG32_
SHFree
((
LPVOID
)
fodInfos
->
ShellInfos
.
pidlAbsCurrent
);
fodInfos
->
ShellInfos
.
pidlAbsCurrent
=
pidlTmp
;
/* Release the current fodInfos->Shell.FOIShellView and update its value */
...
...
@@ -622,18 +622,18 @@ HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_OnDefaultCommand(ICommDlgBrowse
{
HRESULT
hRes
;
/* Selected item is a directory so browse to it */
ULONG
ulAttr
=
SFGAO_FOLDER
|
SFGAO_HASSUBFOLDER
;
IShellFolder_GetAttributesOf
(
fodInfos
->
Shell
.
FOIShellFolder
,
1
,
&
pidl
,
&
ulAttr
);
if
(
ulAttr
)
hRes
=
IShellBrowser_BrowseObject
((
IShellBrowser
*
)
This
,
pidl
,
SBSP_RELATIVE
);
/* Tell the dialog that the user selected a file */
else
{
hRes
=
FILEDLG95_OnOpen
(
This
->
hwndOwner
);
}
/* Free memory used by pidl */
SHFree
((
LPVOID
)
pidl
);
COMDLG32_
SHFree
((
LPVOID
)
pidl
);
return
hRes
;
}
...
...
@@ -701,9 +701,9 @@ HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_IncludeObject(ICommDlgBrowser *
return
S_OK
;
if
(
SUCCEEDED
(
IShellFolder_GetDisplayNameOf
(
fodInfos
->
Shell
.
FOIShellFolder
,
pidl
,
SHGDN_FORPARSING
,
&
str
)))
{
if
(
SUCCEEDED
(
StrRetToStrNW
(
szPathW
,
MAX_PATH
,
&
str
,
pidl
)))
{
if
(
SUCCEEDED
(
COMDLG32_StrRetToBufW
(
&
str
,
pidl
,
szPathW
,
MAX_PATH
)))
{
if
(
PathMatchSpecW
(
szPathW
,
fodInfos
->
ShellInfos
.
lpstrCurrentFilter
))
if
(
COMDLG32_
PathMatchSpecW
(
szPathW
,
fodInfos
->
ShellInfos
.
lpstrCurrentFilter
))
return
S_OK
;
}
}
...
...
@@ -737,7 +737,7 @@ HRESULT IShellBrowserImpl_ICommDlgBrowser_OnSelChange(ICommDlgBrowser *iface, IS
SetWindowTextA
(
fodInfos
->
DlgInfos
.
hwndFileName
,
lpstrFileName
);
}
SHFree
((
LPVOID
)
pidl
);
COMDLG32_
SHFree
((
LPVOID
)
pidl
);
return
hRes
;
}
...
...
@@ -776,7 +776,7 @@ LPITEMIDLIST GetSelectedPidl(IShellView *ppshv)
{
LPIDA
cida
=
GlobalLock
(
medium
.
u
.
hGlobal
);
TRACE
(
"cida=%p
\n
"
,
cida
);
pidlSelected
=
ILClone
((
LPITEMIDLIST
)(
&
((
LPBYTE
)
cida
)[
cida
->
aoffset
[
1
]]));
pidlSelected
=
COMDLG32_PIDL_
ILClone
((
LPITEMIDLIST
)(
&
((
LPBYTE
)
cida
)[
cida
->
aoffset
[
1
]]));
if
(
medium
.
pUnkForRelease
)
IUnknown_Release
(
medium
.
pUnkForRelease
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment