00027 {
00028
PWND pwnd;
00029
PWND pwndOwner;
00030 HWND hwndOwner;
00031
BOOL fWasActive =
FALSE;
00032
#ifdef SYSMODALWINDOWS
00033
HWND hwndOldSysModal;
00034
#endif
00035
00036
if ((pwnd =
ValidateHwnd(hwnd)) ==
NULL) {
00037
return (0
L);
00038 }
00039
00040
CheckLock(pwnd);
00041
00042
00043
00044
00045
if (!
ValidateDialogPwnd(pwnd))
00046
return 0;
00047
00048
if (
SAMEWOWHANDLE(hwnd,
GetActiveWindow())) {
00049 fWasActive =
TRUE;
00050 }
00051
00052
00053
00054
00055 pwndOwner =
GetWindowCreator(pwnd);
00056
00057
if (pwndOwner !=
NULL) {
00058
00059
00060
00061
00062 pwndOwner =
REBASEPTR(pwnd, pwndOwner);
00063 hwndOwner =
HWq(pwndOwner);
00064
if (!
PDLG(pwnd)->fDisabled) {
00065
NtUserEnableWindow(hwndOwner, TRUE);
00066 }
00067 }
else {
00068 hwndOwner =
NULL;
00069 }
00070
00071
00072
00073
00074
PDLG(pwnd)->fEnd =
TRUE;
00075
PDLG(pwnd)->result = result;
00076
00077
if (fWasActive &&
IsChild(hwnd,
GetFocus())) {
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
NtUserSetFocus(hwnd);
00091 }
00092
00093
NtUserSetWindowPos(hwnd, NULL, 0, 0, 0, 0,
00094 SWP_HIDEWINDOW | SWP_NOACTIVATE | SWP_NOMOVE |
00095 SWP_NOSIZE | SWP_NOZORDER);
00096
00097
#ifdef SYSMODALWINDOWS
00098
00099
00100
00101
00102
00103
00104
if (pwnd == gspwndSysModal) {
00105 hwndOldSysModal =
PDLG(pwnd)->hwndSysModalSave;
00106
if (hwndOldSysModal && !
IsWindow(hwndOldSysModal))
00107 hwndOldSysModal =
NULL;
00108
00109
SetSysModalWindow(hwndOldSysModal);
00110
00111
00112
00113
00114
if (hwndOldSysModal)
00115 hwndOwner = hwndOldSysModal;
00116 }
00117
#endif
00118
00119
00120
00121
00122
if (fWasActive && hwndOwner) {
00123
NtUserSetActiveWindow(hwndOwner);
00124 }
else {
00125
00126
00127
00128
00129
00130
00131
00132
00133
if (
SAMEWOWHANDLE(hwnd,
GetActiveWindow())) {
00134
00135
00136
00137
00138
00139
00140
00141
NtUserCallNoParam(SFI_ZAPACTIVEANDFOCUS);
00142 }
00143 }
00144
00145
#ifdef SYSMODALWINDOWS
00146
00147
00148
00149
00150
00151
00152
00153
if (pwnd == gspwndSysModal) {
00154
00155
00156
00157
00158 hwndOldSysModal =
PDLG(pwnd)->hwndSysModalSave;
00159
if (hwndOldSysModal && !
IsWindow(hwndOldSysModal))
00160 hwndOldSysModal =
NULL;
00161
SetSysModalWindow(hwndOldSysModal);
00162 }
00163
#endif
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
PostMessage(hwnd, WM_NULL, 0, 0);
00174
00175
return TRUE;
00176 }