https://git.reactos.org/?p=reactos.git;a=commitdiff;h=cc2f0a8868ed4b182560459bfca4738e148f56c8

commit cc2f0a8868ed4b182560459bfca4738e148f56c8
Author:     Mark Jansen <mark.jan...@reactos.org>
AuthorDate: Sun Dec 9 16:11:14 2018 +0100
Commit:     Mark Jansen <mark.jan...@reactos.org>
CommitDate: Wed Dec 12 19:29:09 2018 +0100

    [SHELL32] Add IActiveDesktop stub
    CORE-15424
---
 dll/win32/shell32/CActiveDesktop.cpp        | 156 ++++++++++++++++++++++++++++
 dll/win32/shell32/CActiveDesktop.h          |  65 ++++++++++++
 dll/win32/shell32/CMakeLists.txt            |   2 +
 dll/win32/shell32/precomp.h                 |   2 +
 dll/win32/shell32/res/rgs/activedesktop.rgs |  13 +++
 dll/win32/shell32/rgs_res.rc                |   1 +
 dll/win32/shell32/shell32.cpp               |   1 +
 dll/win32/shell32/shresdef.h                |   1 +
 8 files changed, 241 insertions(+)

diff --git a/dll/win32/shell32/CActiveDesktop.cpp 
b/dll/win32/shell32/CActiveDesktop.cpp
new file mode 100644
index 0000000000..abc47e3e15
--- /dev/null
+++ b/dll/win32/shell32/CActiveDesktop.cpp
@@ -0,0 +1,156 @@
+/*
+ * PROJECT:     shell32
+ * LICENSE:     LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
+ * PURPOSE:     IActiveDesktop stub
+ * COPYRIGHT:   Copyright 2018 Mark Jansen (mark.jan...@reactos.org)
+ */
+
+#include "precomp.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(shell_ad);
+
+/***********************************************************************
+*   IActiveDesktop implementation
+*/
+
+CActiveDesktop::CActiveDesktop()
+{
+    UNIMPLEMENTED;
+}
+
+CActiveDesktop::~CActiveDesktop()
+{
+    UNIMPLEMENTED;
+}
+
+HRESULT WINAPI CActiveDesktop::ApplyChanges(DWORD dwFlags)
+{
+    UNIMPLEMENTED;
+    return E_NOTIMPL;
+}
+
+HRESULT WINAPI CActiveDesktop::GetWallpaper(PWSTR pwszWallpaper, UINT 
cchWallpaper, DWORD dwFlags)
+{
+    UNIMPLEMENTED;
+    return E_NOTIMPL;
+}
+
+HRESULT WINAPI CActiveDesktop::SetWallpaper(PCWSTR pwszWallpaper, DWORD 
dwReserved)
+{
+    UNIMPLEMENTED;
+    return E_NOTIMPL;
+}
+
+HRESULT WINAPI CActiveDesktop::GetWallpaperOptions(LPWALLPAPEROPT pwpo, DWORD 
dwReserved)
+{
+    UNIMPLEMENTED;
+    return E_NOTIMPL;
+}
+
+HRESULT WINAPI CActiveDesktop::SetWallpaperOptions(LPCWALLPAPEROPT pwpo, DWORD 
dwReserved)
+{
+    UNIMPLEMENTED;
+    return E_NOTIMPL;
+}
+
+HRESULT WINAPI CActiveDesktop::GetPattern(PWSTR pwszPattern, UINT cchPattern, 
DWORD dwReserved)
+{
+    UNIMPLEMENTED;
+    return E_NOTIMPL;
+}
+
+HRESULT WINAPI CActiveDesktop::SetPattern(PCWSTR pwszPattern, DWORD dwReserved)
+{
+    UNIMPLEMENTED;
+    return E_NOTIMPL;
+}
+
+HRESULT WINAPI CActiveDesktop::GetDesktopItemOptions(LPCOMPONENTSOPT pco, 
DWORD dwReserved)
+{
+    UNIMPLEMENTED;
+    return E_NOTIMPL;
+}
+
+HRESULT WINAPI CActiveDesktop::SetDesktopItemOptions(LPCCOMPONENTSOPT pco, 
DWORD dwReserved)
+{
+    UNIMPLEMENTED;
+    return E_NOTIMPL;
+}
+
+HRESULT WINAPI CActiveDesktop::AddDesktopItem(LPCCOMPONENT pcomp, DWORD 
dwReserved)
+{
+    UNIMPLEMENTED;
+    return E_NOTIMPL;
+}
+
+HRESULT WINAPI CActiveDesktop::AddDesktopItemWithUI(HWND hwnd, LPCOMPONENT 
pcomp, DWORD dwReserved)
+{
+    UNIMPLEMENTED;
+    return E_NOTIMPL;
+}
+
+HRESULT WINAPI CActiveDesktop::ModifyDesktopItem(LPCCOMPONENT pcomp, DWORD 
dwFlags)
+{
+    UNIMPLEMENTED;
+    return E_NOTIMPL;
+}
+
+HRESULT WINAPI CActiveDesktop::RemoveDesktopItem(LPCCOMPONENT pcomp, DWORD 
dwReserved)
+{
+    UNIMPLEMENTED;
+    return E_NOTIMPL;
+}
+
+HRESULT WINAPI CActiveDesktop::GetDesktopItemCount(int *pcItems, DWORD 
dwReserved)
+{
+    UNIMPLEMENTED;
+    return E_NOTIMPL;
+}
+
+HRESULT WINAPI CActiveDesktop::GetDesktopItem(int nComponent, LPCOMPONENT 
pcomp, DWORD dwReserved)
+{
+    UNIMPLEMENTED;
+    return E_NOTIMPL;
+}
+
+HRESULT WINAPI CActiveDesktop::GetDesktopItemByID(ULONG_PTR dwID, LPCOMPONENT 
pcomp, DWORD dwReserved)
+{
+    UNIMPLEMENTED;
+    return E_NOTIMPL;
+}
+
+HRESULT WINAPI CActiveDesktop::GenerateDesktopItemHtml(PCWSTR pwszFileName, 
LPCOMPONENT pcomp, DWORD dwReserved)
+{
+    UNIMPLEMENTED;
+    return E_NOTIMPL;
+}
+
+HRESULT WINAPI CActiveDesktop::AddUrl(HWND hwnd, PCWSTR pszSource, LPCOMPONENT 
pcomp, DWORD dwFlags)
+{
+    UNIMPLEMENTED;
+    return E_NOTIMPL;
+}
+
+HRESULT WINAPI CActiveDesktop::GetDesktopItemBySource(PCWSTR pwszSource, 
LPCOMPONENT pcomp, DWORD dwReserved)
+{
+    UNIMPLEMENTED;
+    return E_NOTIMPL;
+}
+
+
+/***********************************************************************
+*   IPropertyBag implementation
+*/
+
+HRESULT WINAPI CActiveDesktop::Read(LPCOLESTR pszPropName, VARIANT *pVar, 
IErrorLog *pErrorLog)
+{
+    UNIMPLEMENTED;
+    return E_NOTIMPL;
+}
+
+HRESULT WINAPI CActiveDesktop::Write(LPCOLESTR pszPropName, VARIANT *pVar)
+{
+    UNIMPLEMENTED;
+    return E_NOTIMPL;
+}
+
diff --git a/dll/win32/shell32/CActiveDesktop.h 
b/dll/win32/shell32/CActiveDesktop.h
new file mode 100644
index 0000000000..d11f751b26
--- /dev/null
+++ b/dll/win32/shell32/CActiveDesktop.h
@@ -0,0 +1,65 @@
+/*
+ * PROJECT:     shell32
+ * LICENSE:     LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
+ * PURPOSE:     IActiveDesktop header
+ * COPYRIGHT:   Copyright 2018 Mark Jansen (mark.jan...@reactos.org)
+ */
+
+#ifndef _CACTIVEDESKTOP_H_
+#define _CACTIVEDESKTOP_H_
+
+#undef AddDesktopItem
+
+class CActiveDesktop :
+    public CComCoClass<CActiveDesktop, &CLSID_ActiveDesktop>,
+    public CComObjectRootEx<CComMultiThreadModelNoCS>,
+    public IActiveDesktop,
+    //public IActiveDesktopP,
+    //public IADesktopP2,
+    public IPropertyBag
+{
+public:
+    CActiveDesktop();
+    virtual ~CActiveDesktop();
+
+    /*** IActiveDesktop methods ***/
+    virtual HRESULT WINAPI ApplyChanges(DWORD dwFlags);
+    virtual HRESULT WINAPI GetWallpaper(PWSTR pwszWallpaper, UINT 
cchWallpaper, DWORD dwFlags);
+    virtual HRESULT WINAPI SetWallpaper(PCWSTR pwszWallpaper, DWORD 
dwReserved);
+    virtual HRESULT WINAPI GetWallpaperOptions(LPWALLPAPEROPT pwpo, DWORD 
dwReserved);
+    virtual HRESULT WINAPI SetWallpaperOptions(LPCWALLPAPEROPT pwpo, DWORD 
dwReserved);
+    virtual HRESULT WINAPI GetPattern(PWSTR pwszPattern, UINT cchPattern, 
DWORD dwReserved);
+    virtual HRESULT WINAPI SetPattern(PCWSTR pwszPattern, DWORD dwReserved);
+    virtual HRESULT WINAPI GetDesktopItemOptions(LPCOMPONENTSOPT pco, DWORD 
dwReserved);
+    virtual HRESULT WINAPI SetDesktopItemOptions(LPCCOMPONENTSOPT pco, DWORD 
dwReserved);
+    virtual HRESULT WINAPI AddDesktopItem(LPCCOMPONENT pcomp, DWORD 
dwReserved);
+    virtual HRESULT WINAPI AddDesktopItemWithUI(HWND hwnd, LPCOMPONENT pcomp, 
DWORD dwReserved);
+    virtual HRESULT WINAPI ModifyDesktopItem(LPCCOMPONENT pcomp, DWORD 
dwFlags);
+    virtual HRESULT WINAPI RemoveDesktopItem(LPCCOMPONENT pcomp, DWORD 
dwReserved);
+    virtual HRESULT WINAPI GetDesktopItemCount(int *pcItems, DWORD dwReserved);
+    virtual HRESULT WINAPI GetDesktopItem(int nComponent, LPCOMPONENT pcomp, 
DWORD dwReserved);
+    virtual HRESULT WINAPI GetDesktopItemByID(ULONG_PTR dwID, LPCOMPONENT 
pcomp, DWORD dwReserved);
+    virtual HRESULT WINAPI GenerateDesktopItemHtml(PCWSTR pwszFileName, 
LPCOMPONENT pcomp, DWORD dwReserved);
+    virtual HRESULT WINAPI AddUrl(HWND hwnd, PCWSTR pszSource, LPCOMPONENT 
pcomp, DWORD dwFlags);
+    virtual HRESULT WINAPI GetDesktopItemBySource(PCWSTR pwszSource, 
LPCOMPONENT pcomp, DWORD dwReserved);
+
+    /*** IPropertyBag methods ***/
+    virtual HRESULT STDMETHODCALLTYPE Read(LPCOLESTR pszPropName, VARIANT 
*pVar, IErrorLog *pErrorLog);
+    virtual HRESULT STDMETHODCALLTYPE Write(LPCOLESTR pszPropName, VARIANT 
*pVar);
+
+
+DECLARE_REGISTRY_RESOURCEID(IDR_ACTIVEDESKTOP)
+DECLARE_NOT_AGGREGATABLE(CActiveDesktop)
+
+DECLARE_PROTECT_FINAL_CONSTRUCT()
+
+BEGIN_COM_MAP(CActiveDesktop)
+    COM_INTERFACE_ENTRY_IID(IID_IActiveDesktop, IActiveDesktop)
+    //COM_INTERFACE_ENTRY_IID(IID_IActiveDesktopP, IActiveDesktopP)
+    //COM_INTERFACE_ENTRY_IID(IID_IADesktopP2, IADesktopP2)
+    COM_INTERFACE_ENTRY_IID(IID_IPropertyBag, IPropertyBag)
+END_COM_MAP()
+};
+
+
+#endif // _CACTIVEDESKTOP_H_
diff --git a/dll/win32/shell32/CMakeLists.txt b/dll/win32/shell32/CMakeLists.txt
index c5d247abba..08933dda35 100644
--- a/dll/win32/shell32/CMakeLists.txt
+++ b/dll/win32/shell32/CMakeLists.txt
@@ -25,6 +25,8 @@ include_directories(
     ${REACTOS_SOURCE_DIR})
 
 list(APPEND SOURCE
+    CActiveDesktop.cpp
+    CActiveDesktop.h
     CIDLDataObj.cpp
     CQueryAssociations.cpp
     debughlp.cpp
diff --git a/dll/win32/shell32/precomp.h b/dll/win32/shell32/precomp.h
index 4e694f7b86..62aad907b1 100644
--- a/dll/win32/shell32/precomp.h
+++ b/dll/win32/shell32/precomp.h
@@ -20,6 +20,7 @@
 #include <userenv.h>
 
 #include <shlwapi.h>
+#include <wininet.h>
 #include <shlobj.h>
 #include <shobjidl.h>
 #include <ndk/rtlfuncs.h>
@@ -54,6 +55,7 @@
 #include "wine/shell32_main.h"
 #include "shresdef.h"
 #include "wine/cpanel.h"
+#include "CActiveDesktop.h"
 #include "CEnumIDListBase.h"
 #include "shfldr.h"
 #include "CShellItem.h"
diff --git a/dll/win32/shell32/res/rgs/activedesktop.rgs 
b/dll/win32/shell32/res/rgs/activedesktop.rgs
new file mode 100644
index 0000000000..1f80872c5c
--- /dev/null
+++ b/dll/win32/shell32/res/rgs/activedesktop.rgs
@@ -0,0 +1,13 @@
+HKCR
+{
+       NoRemove CLSID
+       {
+               ForceRemove {75048700-EF1F-11D0-9888-006097DEACF9} = s 
'ActiveDesktop'
+               {
+                       InprocServer32 = s '%MODULE%'
+                       {
+                               val ThreadingModel = s 'Apartment'
+                       }
+               }
+       }
+}
diff --git a/dll/win32/shell32/rgs_res.rc b/dll/win32/shell32/rgs_res.rc
index 67e072d530..c50480d3fd 100644
--- a/dll/win32/shell32/rgs_res.rc
+++ b/dll/win32/shell32/rgs_res.rc
@@ -28,3 +28,4 @@ IDR_MERGEDFOLDER REGISTRY "res/rgs/mergedfolder.rgs"
 IDR_REBARBANDSITE REGISTRY "res/rgs/rebarbandsite.rgs"
 IDR_USERNOTIFICATION REGISTRY "res/rgs/usernotification.rgs"
 IDR_SHELL REGISTRY "res/rgs/shell.rgs"
+IDR_ACTIVEDESKTOP REGISTRY "res/rgs/activedesktop.rgs"
diff --git a/dll/win32/shell32/shell32.cpp b/dll/win32/shell32/shell32.cpp
index a1d11c27ff..d75dccd596 100644
--- a/dll/win32/shell32/shell32.cpp
+++ b/dll/win32/shell32/shell32.cpp
@@ -271,6 +271,7 @@ public:
 
 
 BEGIN_OBJECT_MAP(ObjectMap)
+    OBJECT_ENTRY(CLSID_ActiveDesktop, CActiveDesktop)
     OBJECT_ENTRY(CLSID_ShellFSFolder, CFSFolder)
     OBJECT_ENTRY(CLSID_MyComputer, CDrivesFolder)
     OBJECT_ENTRY(CLSID_ShellDesktop, CDesktopFolder)
diff --git a/dll/win32/shell32/shresdef.h b/dll/win32/shell32/shresdef.h
index 037d1fc0be..2fa3e090f1 100644
--- a/dll/win32/shell32/shresdef.h
+++ b/dll/win32/shell32/shresdef.h
@@ -804,3 +804,4 @@
 #define IDR_REBARBANDSITE       154
 #define IDR_USERNOTIFICATION    155
 #define IDR_SHELL               156
+#define IDR_ACTIVEDESKTOP       157

Reply via email to