"Steven Edwards" steven_ed4153@yahoo.com wrote:
The ReactOS guys are tired of seeing the fixme message.
Changelog: Implement ShellDDEInit
Index: lib/shell32/shell32_main.c
--- lib/shell32/shell32_main.c (revision 14808) +++ lib/shell32/shell32_main.c (working copy) @@ -979,13 +979,66 @@ FIXME("%lx: stub\n",dw); }
+ATOM ProgmanAtom; +DWORD hDde; +UINT hProgmanTopic, hProgmanService, hStar, hShell, hAppProps, hFolders;
/*************************************************************************
- ShellDDEInit (SHELL32.@)
*/ -void WINAPI ShellDDEInit(BOOL start) +void WINAPI ShellDDEInit(BOOL Start) {
- FIXME("stub: %d\n", start);
- WCHAR wszSHELL_PROGMAN[] = {'P','R','O','G','M','A','N',0};
- WCHAR wszSHELL_TOPIC[] = {'P','r','o','g','m','a','n',0};
- WCHAR wszSHELL_SERVICE[] = {'P','r','o','g','m','a','n',0};
- WCHAR wszSHELL_STAR[] = {'*',0};
- WCHAR wszSHELL_SHELL[] = {'S','h','e','l','l',0};
- WCHAR wszSHELL_APPPROPS[] = {'A','p','p','P','r','o','p', 'e', 'r', 't', 'i', 'e', 's',0};
- WCHAR wszSHELL_FOLDERS[] = {'F','o','l','d','e','r','s',0};
- if (Start)
- {
/* Create Atom */ProgmanAtom = GlobalAddAtomW(wszSHELL_PROGMAN);/* Initialize DDE */DdeInitializeW(&hDde, NULL, CBF_FAIL_POKES | CBF_FAIL_ADVISES, 0L);/* Register the Strings */hProgmanTopic = DdeCreateStringHandleW(hDde, wszSHELL_TOPIC, CP_WINUNICODE);hProgmanService = DdeCreateStringHandleW(hDde, wszSHELL_SERVICE, CP_WINUNICODE);hStar = DdeCreateStringHandleW(hDde, wszSHELL_STAR, CP_WINUNICODE);hShell = DdeCreateStringHandleW(hDde, wszSHELL_SHELL, CP_WINUNICODE);hAppProps = DdeCreateStringHandleW(hDde, wszSHELL_APPPROPS, CP_WINUNICODE);hFolders = DdeCreateStringHandleW(hDde, wszSHELL_FOLDERS, CP_WINUNICODE);/* Register the Service Names */DdeNameService(hDde, hFolders, 0, DNS_REGISTER);DdeNameService(hDde, hProgmanService, 0, DNS_REGISTER);DdeNameService(hDde, hShell, 0, DNS_REGISTER);- }
- else
- {
/* Unregister the Service Names */DdeNameService(hDde, hFolders, 0, DNS_UNREGISTER);DdeNameService(hDde, hProgmanService, 0, DNS_UNREGISTER);DdeNameService(hDde, hShell, 0, DNS_UNREGISTER);/* Free the Handles */DdeFreeStringHandle(hDde, hProgmanTopic);DdeFreeStringHandle(hDde, hProgmanService);DdeFreeStringHandle(hDde, hStar);DdeFreeStringHandle(hDde, hShell);DdeFreeStringHandle(hDde, hAppProps);DdeFreeStringHandle(hDde, hFolders);/* Uninitialize DDE */DdeUninitialize(hDde);hDde = 0;/* Delete the Atom */if (ProgmanAtom) ProgmanAtom = GlobalDeleteAtom(ProgmanAtom);- }
}
If ReactOS guys could use 'static const' for unicode strings, make global variables visible inside of the single source file static, check whether DDE connection is being already [de]initialed and a little bit of error checking that would be even better :-)