"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 :-)