Newsgroups: comp.windows.ms.programmer
Path: utzoo!utgpu!watserv1!watmath!hyper.hyper.com!bonneau
From: bonneau@hyper.hyper.com (Paul Bonneau)
Subject: Re: Activating Dialog Windows
Message-ID: <1991Jun10.212241.999@hyper.hyper.com>
Reply-To: bonneau@hyper.UUCP (Paul Bonneau,,)
Organization: HyperCube Inc.
References: <1125@stewart.UUCP>
Date: Mon, 10 Jun 1991 21:22:41 GMT

In article <1125@stewart.UUCP> jerry@stewart.UUCP (Jerry Shekhel) writes:
>Hello.  Can someone provide a listing of code that, given a window handle,
>will (1) restore the window to normal size if it's minimized, (2) raise the
>window to the top of the stacking order, (3 [MOST IMPORTANT]) give keyboard
>input focus either to the window or to the topmost dialog owned by that window
>if there are any.
>
The following code snippet should work providing every time
you create a dialogs, the parent window is the topmost
dialog.

If you create a popup window that is not a dialog, disable the
topmose dialog or popup, first, else this will not work (it
relies on at most one enable popup at any one time).

Let:
	hwnd be the window handle,
	hins be the instance handle of your application

BOOL FAR PASCAL
FEnumWnd(HWND hwnd, DWORD lParam)
	{
	if ((GetWindowLong(hwnd, GWL_STYLE) & WS_POPUP) &&
	    IsWindowEnabled(hwnd))
		{
		*(HWND FAR *)lParam = hwnd;
		return fFalse;
		}
	return fTrue;
	}


	FARPROC	lpfn;
	HWND	hwndPopup;

	DefWindowProc(hwnd, WM_SYSCOMMAND, SC_RESTORE, 0L);
	BringWindowToTop(hwnd);
	lpfn = MakeProcInstance(hins, FEnumWnd);
	SetFocus(EnumTaskWindows(hwnd, hwndPopup) ? hwnd : hwndPopup);
	FreeProcInstance(lpfn);

cheers - Paul Bonneau.
