return S_OK;
}
+/**************************************************************************
+ * CStartMenuDummy
+ */
+class CStartMenuDummy :
+ public CComCoClass<CStartMenuDummy, &CLSID_StartMenu>,
+ public CComObjectRootEx<CComMultiThreadModelNoCS>
+{
+private:
+ CStartMenuDummy();
+ virtual ~CStartMenuDummy();
+
+public:
+ DECLARE_REGISTRY_RESOURCEID(IDR_STARTMENU)
+
+ class _CreatorClass
+ {
+ public:
+ static STDMETHODIMP CreateInstance(void *pv, REFIID riid, LPVOID *ppv)
+ {
+ if (ppv == NULL)
+ return E_POINTER;
+ *ppv = NULL;
+ if (pv != NULL)
+ return CLASS_E_NOAGGREGATION;
+ return CStartMenu_Constructor(riid, ppv);
+ }
+ };
+};
+
+/**************************************************************************
+ * CShell32Module
+ */
class CShell32Module : public CComModule
{
public:
OBJECT_ENTRY(CLSID_ShellDesktop, CDesktopFolder)
OBJECT_ENTRY(CLSID_ShellItem, CShellItem)
OBJECT_ENTRY(CLSID_ShellLink, CShellLink)
+ OBJECT_ENTRY(CLSID_Shell, CShellDispatch)
OBJECT_ENTRY(CLSID_DragDropHelper, CDropTargetHelper)
OBJECT_ENTRY(CLSID_ControlPanel, CControlPanelFolder)
OBJECT_ENTRY(CLSID_MyDocuments, CMyDocsFolder)
OBJECT_ENTRY(CLSID_FontsFolderShortcut, CFontsFolder)
OBJECT_ENTRY(CLSID_Printers, CPrinterFolder)
OBJECT_ENTRY(CLSID_AdminFolderShortcut, CAdminToolsFolder)
+ OBJECT_ENTRY(CLSID_ShellFldSetExt, CFolderOptions)
OBJECT_ENTRY(CLSID_RecycleBin, CRecycleBin)
OBJECT_ENTRY(CLSID_OpenWithMenu, COpenWithMenu)
OBJECT_ENTRY(CLSID_NewMenu, CNewMenu)
- OBJECT_ENTRY(CLSID_StartMenu, CStartMenu)
- OBJECT_ENTRY(CLSID_MenuBandSite, CMenuBandSite)
+ OBJECT_ENTRY(CLSID_StartMenu, CStartMenuDummy)
+ OBJECT_ENTRY(CLSID_MenuBandSite, CMenuSite)
OBJECT_ENTRY(CLSID_MenuBand, CMenuBand)
OBJECT_ENTRY(CLSID_MenuDeskBar, CMenuDeskBar)
+ OBJECT_ENTRY(CLSID_MergedFolder, CMergedFolder)
+ OBJECT_ENTRY(CLSID_RebarBandSite, CBandSite)
OBJECT_ENTRY(CLSID_ExeDropHandler, CExeDropHandler)
OBJECT_ENTRY(CLSID_QueryAssociations, CQueryAssociations)
END_OBJECT_MAP()
TRACE("%p 0x%x %p\n", hInstance, dwReason, fImpLoad);
if (dwReason == DLL_PROCESS_ATTACH)
{
- /* HACK - the global constructors don't run, so I placement new them here */
- new (&gModule) CShell32Module;
- new (&_AtlWinModule) CAtlWinModule;
- new (&_AtlBaseModule) CAtlBaseModule;
- new (&_AtlComModule) CAtlComModule;
-
shell32_hInstance = hInstance;
- gModule.Init(ObjectMap, hInstance, NULL);
+ gModule.Init(ObjectMap, hInstance, &LIBID_Shell32);
DisableThreadLibraryCalls (hInstance);
InitCtrls.dwICC = ICC_WIN95_CLASSES | ICC_DATE_CLASSES | ICC_USEREX_CLASSES;
InitCommonControlsEx(&InitCtrls);
- SIC_Initialize();
+ /* Bad idea, initialization in DllMain! */
InitChangeNotifications();
- InitIconOverlays();
}
else if (dwReason == DLL_PROCESS_DETACH)
{
{
HRESULT hr;
- hr = gModule.DllRegisterServer(FALSE);
+ hr = gModule.DllRegisterServer(TRUE);
if (FAILED(hr))
return hr;
{
HRESULT hr;
- hr = gModule.DllUnregisterServer(FALSE);
+ hr = gModule.DllUnregisterServer(TRUE);
if (FAILED(hr))
return hr;