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
40bf27e4
Commit
40bf27e4
authored
Feb 20, 2000
by
Juergen Schmied
Committed by
Alexandre Julliard
Feb 20, 2000
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Started with shell-clipboard handling (context menu cut&paste,
drag&drop).
parent
f3702837
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
85 additions
and
48 deletions
+85
-48
shell32_main.c
dlls/shell32/shell32_main.c
+56
-45
shell32_main.h
dlls/shell32/shell32_main.h
+29
-3
No files found.
dlls/shell32/shell32_main.c
View file @
40bf27e4
...
...
@@ -393,30 +393,47 @@ static BOOL __get_dropline( HWND hWnd, LPRECT lprect )
*/
UINT
WINAPI
SHAppBarMessage
(
DWORD
msg
,
PAPPBARDATA
data
)
{
FIXME
(
"(0x%08lx,%p hwnd=0x%08x): stub
\n
"
,
msg
,
data
,
data
->
hWnd
);
switch
(
msg
)
{
case
ABM_GETSTATE
:
return
ABS_ALWAYSONTOP
|
ABS_AUTOHIDE
;
case
ABM_GETTASKBARPOS
:
/* fake a taskbar on the bottom of the desktop */
{
RECT
rec
;
GetWindowRect
(
GetDesktopWindow
(),
&
rec
);
rec
.
left
=
0
;
rec
.
top
=
rec
.
bottom
-
2
;
}
return
TRUE
;
case
ABM_ACTIVATE
:
case
ABM_GETAUTOHIDEBAR
:
case
ABM_NEW
:
case
ABM_QUERYPOS
:
case
ABM_REMOVE
:
case
ABM_SETAUTOHIDEBAR
:
case
ABM_SETPOS
:
case
ABM_WINDOWPOSCHANGED
:
return
FALSE
;
}
return
0
;
int
width
=
data
->
rc
.
right
-
data
->
rc
.
left
;
int
height
=
data
->
rc
.
bottom
-
data
->
rc
.
top
;
RECT
rec
=
data
->
rc
;
switch
(
msg
)
{
case
ABM_GETSTATE
:
return
ABS_ALWAYSONTOP
|
ABS_AUTOHIDE
;
case
ABM_GETTASKBARPOS
:
GetWindowRect
(
data
->
hWnd
,
&
rec
);
data
->
rc
=
rec
;
return
TRUE
;
case
ABM_ACTIVATE
:
SetActiveWindow
(
data
->
hWnd
);
return
TRUE
;
case
ABM_GETAUTOHIDEBAR
:
data
->
hWnd
=
GetActiveWindow
();
return
TRUE
;
case
ABM_NEW
:
SetWindowPos
(
data
->
hWnd
,
HWND_TOP
,
rec
.
left
,
rec
.
top
,
width
,
height
,
SWP_SHOWWINDOW
);
return
TRUE
;
case
ABM_QUERYPOS
:
GetWindowRect
(
data
->
hWnd
,
&
(
data
->
rc
));
return
TRUE
;
case
ABM_REMOVE
:
CloseHandle
(
data
->
hWnd
);
return
TRUE
;
case
ABM_SETAUTOHIDEBAR
:
SetWindowPos
(
data
->
hWnd
,
HWND_TOP
,
rec
.
left
+
1000
,
rec
.
top
,
width
,
height
,
SWP_SHOWWINDOW
);
return
TRUE
;
case
ABM_SETPOS
:
data
->
uEdge
=
(
ABE_RIGHT
|
ABE_LEFT
);
SetWindowPos
(
data
->
hWnd
,
HWND_TOP
,
data
->
rc
.
left
,
data
->
rc
.
top
,
width
,
height
,
SWP_SHOWWINDOW
);
return
TRUE
;
case
ABM_WINDOWPOSCHANGED
:
SetWindowPos
(
data
->
hWnd
,
HWND_TOP
,
rec
.
left
,
rec
.
top
,
width
,
height
,
SWP_SHOWWINDOW
);
return
TRUE
;
}
return
FALSE
;
}
/*************************************************************************
...
...
@@ -432,12 +449,22 @@ DWORD WINAPI SHHelpShortcuts_RunDLL (DWORD dwArg1, DWORD dwArg2, DWORD dwArg3, D
/*************************************************************************
* SHLoadInProc [SHELL32.225]
*
* Create an instance of specified object class from within
* the shell process and release it immediately
*/
DWORD
WINAPI
SHLoadInProc
(
DWORD
dwArg1
)
{
FIXME
(
"(%lx) empty stub!
\n
"
,
dwArg1
);
return
0
;
DWORD
WINAPI
SHLoadInProc
(
REFCLSID
rclsid
)
{
IUnknown
*
pUnk
=
NULL
;
TRACE
(
"%s
\n
"
,
debugstr_guid
(
rclsid
));
CoCreateInstance
(
rclsid
,
NULL
,
CLSCTX_INPROC_SERVER
,
&
IID_IUnknown
,(
LPVOID
*
)
pUnk
);
if
(
pUnk
)
{
IUnknown_Release
(
pUnk
);
return
NOERROR
;
}
return
DISP_E_MEMBERNOTFOUND
;
}
/*************************************************************************
...
...
@@ -727,15 +754,7 @@ LPVOID (WINAPI *pDPA_DeletePtr) (const HDPA hdpa, INT i);
HICON
(
WINAPI
*
pLookupIconIdFromDirectoryEx
)(
LPBYTE
dir
,
BOOL
bIcon
,
INT
width
,
INT
height
,
UINT
cFlag
);
HICON
(
WINAPI
*
pCreateIconFromResourceEx
)(
LPBYTE
bits
,
UINT
cbSize
,
BOOL
bIcon
,
DWORD
dwVersion
,
INT
width
,
INT
height
,
UINT
cFlag
);
/* ole2 */
HRESULT
(
WINAPI
*
pOleInitialize
)(
LPVOID
reserved
);
void
(
WINAPI
*
pOleUninitialize
)(
void
);
HRESULT
(
WINAPI
*
pDoDragDrop
)(
IDataObject
*
pDataObject
,
IDropSource
*
pDropSource
,
DWORD
dwOKEffect
,
DWORD
*
pdwEffect
);
HRESULT
(
WINAPI
*
pRegisterDragDrop
)(
HWND
hwnd
,
IDropTarget
*
pDropTarget
);
HRESULT
(
WINAPI
*
pRevokeDragDrop
)(
HWND
hwnd
);
static
HINSTANCE
hComctl32
;
static
HINSTANCE
hOle32
;
static
INT
shell32_RefCount
=
0
;
INT
shell32_ObjCount
=
0
;
...
...
@@ -773,10 +792,9 @@ BOOL WINAPI Shell32LibMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
shell32_hInstance
=
hinstDLL
;
hComctl32
=
LoadLibraryA
(
"COMCTL32.DLL"
);
hOle32
=
LoadLibraryA
(
"OLE32.DLL"
);
hUser32
=
GetModuleHandleA
(
"USER32"
);
if
(
!
hComctl32
||
!
hUser32
||
!
hOle32
)
if
(
!
hComctl32
||
!
hUser32
)
{
ERR
(
"P A N I C SHELL32 loading failed
\n
"
);
return
FALSE
;
...
...
@@ -803,12 +821,6 @@ BOOL WINAPI Shell32LibMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
/* user32 */
pLookupIconIdFromDirectoryEx
=
(
void
*
)
GetProcAddress
(
hUser32
,
"LookupIconIdFromDirectoryEx"
);
pCreateIconFromResourceEx
=
(
void
*
)
GetProcAddress
(
hUser32
,
"CreateIconFromResourceEx"
);
/* ole2 */
pOleInitialize
=
(
void
*
)
GetProcAddress
(
hOle32
,
"OleInitialize"
);
pOleUninitialize
=
(
void
*
)
GetProcAddress
(
hOle32
,
"OleUninitialize"
);
pDoDragDrop
=
(
void
*
)
GetProcAddress
(
hOle32
,
"DoDragDrop"
);
pRegisterDragDrop
=
(
void
*
)
GetProcAddress
(
hOle32
,
"RegisterDragDrop"
);
pRevokeDragDrop
=
(
void
*
)
GetProcAddress
(
hOle32
,
"RevokeDragDrop"
);
/* initialize the common controls */
if
(
pDLLInitComctl
)
...
...
@@ -851,7 +863,6 @@ BOOL WINAPI Shell32LibMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
}
}
FreeLibrary
(
hOle32
);
FreeLibrary
(
hComctl32
);
TRACE
(
"refcount=%u objcount=%u
\n
"
,
shell32_RefCount
,
shell32_ObjCount
);
...
...
dlls/shell32/shell32_main.h
View file @
40bf27e4
...
...
@@ -54,12 +54,13 @@ extern HICON (WINAPI *pLookupIconIdFromDirectoryEx)(LPBYTE dir, BOOL bIcon, INT
extern
HICON
(
WINAPI
*
pCreateIconFromResourceEx
)(
LPBYTE
bits
,
UINT
cbSize
,
BOOL
bIcon
,
DWORD
dwVersion
,
INT
width
,
INT
height
,
UINT
cFlag
);
/* ole2 */
/*
extern HRESULT (WINAPI* pOleInitialize)(LPVOID reserved);
extern void (WINAPI* pOleUninitialize)(void);
extern HRESULT (WINAPI* pDoDragDrop)(IDataObject* pDataObject, IDropSource * pDropSource, DWORD dwOKEffect, DWORD * pdwEffect);
extern HRESULT (WINAPI* pRegisterDragDrop)(HWND hwnd, IDropTarget* pDropTarget);
extern HRESULT (WINAPI* pRevokeDragDrop)(HWND hwnd);
*/
BOOL
WINAPI
Shell_GetImageList
(
HIMAGELIST
*
lpBigList
,
HIMAGELIST
*
lpSmallList
);
HRESULT
WINAPI
StrRetToStrNA
(
LPVOID
dest
,
DWORD
len
,
LPSTRRET
src
,
LPITEMIDLIST
pidl
);
...
...
@@ -93,8 +94,8 @@ LPDATAOBJECT IDataObject_Constructor(HWND hwndOwner, LPITEMIDLIST myPidl, LPITEM
LPENUMFORMATETC
IEnumFORMATETC_Constructor
(
UINT
,
const
FORMATETC
[]);
LPCLASSFACTORY
IClassFactory_Constructor
(
REFCLSID
);
IContextMenu
*
I
ContextMenu
_Constructor
(
LPSHELLFOLDER
pSFParent
,
LPCITEMIDLIST
pidl
,
LPCITEMIDLIST
*
aPidls
,
UINT
uItemCount
);
IContextMenu
*
ISvBgCm_Constructor
(
void
);
IContextMenu
*
I
SvItemCm
_Constructor
(
LPSHELLFOLDER
pSFParent
,
LPCITEMIDLIST
pidl
,
LPCITEMIDLIST
*
aPidls
,
UINT
uItemCount
);
IContextMenu
*
ISvBgCm_Constructor
(
LPSHELLFOLDER
pSFParent
);
LPSHELLVIEW
IShellView_Constructor
(
LPSHELLFOLDER
);
LPSHELLLINK
IShellLink_Constructor
(
BOOL
);
...
...
@@ -141,4 +142,29 @@ HRESULT WINAPI Shell_MergeMenus (HMENU hmDst, HMENU hmSrc, UINT uInsert, UINT uI
/* Systray */
BOOL
SYSTRAY_Init
(
void
);
/* Clipboard */
void
InitShellOle
(
void
);
void
FreeShellOle
(
void
);
BOOL
GetShellOle
(
void
);
HRESULT
(
WINAPI
*
pOleInitialize
)(
LPVOID
reserved
);
void
(
WINAPI
*
pOleUninitialize
)(
void
);
HRESULT
(
WINAPI
*
pRegisterDragDrop
)(
HWND
hwnd
,
IDropTarget
*
pDropTarget
);
HRESULT
(
WINAPI
*
pRevokeDragDrop
)(
HWND
hwnd
);
HRESULT
(
WINAPI
*
pDoDragDrop
)(
LPDATAOBJECT
,
LPDROPSOURCE
,
DWORD
,
DWORD
*
);
void
(
WINAPI
*
pReleaseStgMedium
)(
STGMEDIUM
*
pmedium
);
HRESULT
(
WINAPI
*
pOleSetClipboard
)(
IDataObject
*
pDataObj
);
HRESULT
(
WINAPI
*
pOleGetClipboard
)(
IDataObject
**
ppDataObj
);
HGLOBAL
RenderHDROP
(
LPITEMIDLIST
pidlRoot
,
LPITEMIDLIST
*
apidl
,
UINT
cidl
);
HGLOBAL
RenderSHELLIDLIST
(
LPITEMIDLIST
pidlRoot
,
LPITEMIDLIST
*
apidl
,
UINT
cidl
);
HGLOBAL
RenderSHELLIDLISTOFFSET
(
LPITEMIDLIST
pidlRoot
,
LPITEMIDLIST
*
apidl
,
UINT
cidl
);
HGLOBAL
RenderFILECONTENTS
(
LPITEMIDLIST
pidlRoot
,
LPITEMIDLIST
*
apidl
,
UINT
cidl
);
HGLOBAL
RenderFILEDESCRIPTOR
(
LPITEMIDLIST
pidlRoot
,
LPITEMIDLIST
*
apidl
,
UINT
cidl
);
HGLOBAL
RenderFILENAME
(
LPITEMIDLIST
pidlRoot
,
LPITEMIDLIST
*
apidl
,
UINT
cidl
);
HGLOBAL
RenderPREFEREDDROPEFFECT
(
DWORD
dwFlags
);
/* Change Notification */
void
InitChangeNotifications
(
void
);
void
FreeChangeNotifications
(
void
);
#endif
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