+
+ case HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID:
+ {
+ PWINDOW_OBJECT Window;
+
+ UserEnterExclusive();
+ if(!(Window = UserGetWindowObject(hWnd)))
+ {
+ UserLeave();
+ return FALSE;
+ }
+
+ if ( Param )
+ IntSetProp(Window, gpsi->atomContextHelpIdProp, (HANDLE)Param);
+ else
+ IntRemoveProp(Window, gpsi->atomContextHelpIdProp);
+
+ UserLeave();
+ return TRUE;
+ }
+
+ case HWNDPARAM_ROUTINE_SETDIALOGPOINTER:
+ {
+ PWINDOW_OBJECT Window;
+ PWND pWnd;
+ USER_REFERENCE_ENTRY Ref;
+
+ UserEnterExclusive();
+
+ if (!(Window = UserGetWindowObject(hWnd)) || !Window->Wnd)
+ {
+ UserLeave();
+ return 0;
+ }
+ UserRefObjectCo(Window, &Ref);
+
+ pWnd = Window->Wnd;
+ if (pWnd->head.pti->ppi == PsGetCurrentProcessWin32Process() &&
+ pWnd->cbwndExtra == DLGWINDOWEXTRA &&
+ !(pWnd->state & WNDS_SERVERSIDEWINDOWPROC))
+ {
+ if (Param)
+ {
+ if (!pWnd->fnid) pWnd->fnid = FNID_DIALOG;
+ pWnd->state |= WNDS_DIALOGWINDOW;
+ }
+ else
+ {
+ pWnd->fnid |= FNID_DESTROY;
+ pWnd->state &= ~WNDS_DIALOGWINDOW;
+ }
+ }
+
+ UserDerefObjectCo(Window);
+ UserLeave();
+ return 0;
+ }