1 2 #ifdef _MSC_VER 3 4 // Disabling spammy warnings when compiling with /W4 or /Wall 5 #pragma warning(disable:4100) // unreferenced formal parameter 6 #pragma warning(disable:4201) // nonstandard extension used 7 #pragma warning(disable:4265) // class has virtual functions, but destructor is not virtual 8 #pragma warning(disable:4365) // signed/unsigned mismatch 9 #pragma warning(disable:4514) // unreferenced inline function 10 #pragma warning(disable:4710) // function was not inlined 11 #pragma warning(disable:4820) // padding added 12 #pragma warning(disable:4946) // reinterpret_cast between related classes 13 14 // Disable some warnings in headers only 15 #pragma warning(push) 16 #pragma warning(disable:4244) // possible loss of data 17 #pragma warning(disable:4512) // assignment operator could not be gernerated 18 #endif 19 20 #include <stdio.h> 21 #include <tchar.h> 22 23 #define WIN32_NO_STATUS 24 #define _INC_WINDOWS 25 #define COM_NO_WINDOWS_H 26 27 #define COBJMACROS 28 29 //#define DEBUG_CCOMOBJECT 30 #define DEBUG_CCOMOBJECT_CREATION 1 31 #define DEBUG_CCOMOBJECT_DESTRUCTION 1 32 #define DEBUG_CCOMOBJECT_REFCOUNTING 1 33 34 #include <windef.h> 35 #include <winbase.h> 36 #include <winreg.h> 37 #include <wingdi.h> 38 #include <winnls.h> 39 #include <wincon.h> 40 #include <shellapi.h> 41 #include <shlobj.h> 42 #include <shlobj_undoc.h> 43 #include <shlwapi.h> 44 #include <shlguid_undoc.h> 45 #include <uxtheme.h> 46 #include <strsafe.h> 47 48 #include <atlbase.h> 49 #include <atlcom.h> 50 #include <atlwin.h> 51 #include <undocshell.h> 52 #include <undocuser.h> 53 54 #include <shellutils.h> 55 #include <ui/rosctrls.h> 56 #include "../shresdef.h" 57 58 #include <wine/debug.h> 59 60 #if _MSC_VER 61 // Restore warnings 62 #pragma warning(pop) 63 #endif 64 65 #define USE_SYSTEM_MENUDESKBAR 0 66 #define USE_SYSTEM_MENUSITE 0 67 #define USE_SYSTEM_MENUBAND 0 68 #define USE_SYSTEM_MERGED_FOLDERS 0 69 70 #define MERGE_FOLDERS 1 71 72 #if USE_SYSTEM_MENUDESKBAR 73 #define CMenuDeskBar_CreateInstance(riid, ppv) (CoCreateInstance(CLSID_MenuDeskBar, NULL, CLSCTX_INPROC_SERVER,riid, ppv)) 74 #else 75 #define CMenuDeskBar_CreateInstance RSHELL_CMenuDeskBar_CreateInstance 76 #endif 77 78 #if USE_SYSTEM_MENUBAND 79 #define CMenuBand_CreateInstance(riid, ppv) (CoCreateInstance(CLSID_MenuBand, NULL, CLSCTX_INPROC_SERVER,riid, ppv)) 80 #else 81 #define CMenuBand_CreateInstance RSHELL_CMenuBand_CreateInstance 82 #endif 83 84 #if USE_SYSTEM_MENUSITE 85 #define CMenuSite_CreateInstance(riid, ppv) (CoCreateInstance(CLSID_MenuBandSite, NULL, CLSCTX_INPROC_SERVER,riid, ppv)) 86 #else 87 #define CMenuSite_CreateInstance RSHELL_CMenuSite_CreateInstance 88 #endif 89 90 #if USE_SYSTEM_MERGED_FOLDERS 91 #define CMergedFolder_CreateInstance(riid, ppv) (CoCreateInstance(CLSID_MergedFolder, NULL, CLSCTX_INPROC_SERVER,riid, ppv)) 92 #else 93 #define CMergedFolder_CreateInstance RSHELL_CMergedFolder_CreateInstance 94 #endif 95 96 extern "C" 97 { 98 extern HINSTANCE shell32_hInstance; 99 100 HRESULT WINAPI RSHELL_CStartMenu_CreateInstance(REFIID riid, void **ppv); 101 HRESULT WINAPI RSHELL_CMenuDeskBar_CreateInstance(REFIID riid, LPVOID *ppv); 102 HRESULT WINAPI RSHELL_CMenuSite_CreateInstance(REFIID riid, LPVOID *ppv); 103 HRESULT WINAPI RSHELL_CMenuBand_CreateInstance(REFIID riid, LPVOID *ppv); 104 HRESULT WINAPI RSHELL_CMergedFolder_CreateInstance(REFIID riid, LPVOID *ppv); 105 106 } 107