modeless dialog Z order problem
Todd Southwell -- todd@odessa.nosc.mil Friday, July 12, 1996 msvc 1.5 win 3.1 Hello- I have a formview-based application. Modeless dialogs which are created upon the push of a button, [ Create(IDD_DIALOG?, NULL) ], work fine except: When the dialog is up, and the user clicks on the formview, the formview does not come to the top. Instead, the frame of the formview flashes upon clicking the formview's titlebar, gains focus, but does not get drawn on top. The modeless dialog remains on top, *without the focus*. I can place other apps(terminal, paintbrush, etc.) on top of both windows no prob. yet, when the user clicks either the formview or modeless dialog titlebar, both windows come up, with the modeless dialog on top, regardless. Any ideas? I believe the second parameter in the Create call( listed as NULL), is a valid parent, because it will search for the parent frame, no? I'm short on time. Regards, Todd
Jim Tannenbaum -- jimt1@voicenet.com Monday, July 15, 1996 [Mini-digest: 5 responses] Todd, This isn't as straight forward as you might think. The FormView is the framework for the app. Therefore, it can't be on top of the modeless dialog boxes. Either close them when they loss focus or minimize them or ?(via over ride of OnActivate is easiest). Good Luck, Jet JJM Systems, Inc Phone: (215) 672-3660 1 Ivybrook Blvd, Suite 190 Fax: (215) 672-5702 Ivyland, PA 19874 Net: jimt1@voicenet.com -----From: "michael"Michael says.. If you check the archives for this forum, you'll find the following post back in February '96. Caveat: This solution is for VC++ 4.x ---------------------------------------------------------------------------- ---------------------------------------- Subject: Re: How to make a modeless dialog box NOT always on top I had a similar situation, and came up with a solution, but I'm not sure whether it has any bad side effects or not. I created the dialog with the desktop window as the parent ( GetDesktopWindow() ). I know it requires a little more attention to what happens when you close the app, since the dialog doesn't get a close message when the main window closes, but that isn't really a problem. Marty Fried (mfried@linex.com) ---------------------------------------------------------------------------- ---------------------------------------- >msvc 1.5 win 3.1 > >Hello- > >I have a formview-based application. Modeless dialogs which are created >upon the push of a button, [ Create(IDD_DIALOG?, NULL) ], work fine except: > >When the dialog is up, and the user clicks on the formview, the >formview does not come to the top. Instead, the frame of the formview >flashes upon clicking the formview's titlebar, gains focus, but does not >get drawn on top. The modeless dialog remains on top, *without the focus*. > >I can place other apps(terminal, paintbrush, etc.) on top of both windows >no prob. yet, when the user clicks either the formview or modeless dialog >titlebar, both windows come up, with the modeless dialog on top, regardless. > >Any ideas? I believe the second parameter in the Create call( listed as >NULL), is a valid parent, because it will search for the parent frame, no? > >I'm short on time. > >Regards, >Todd --------------------------- Michael Thal Data Tree Corporation voice: (619) 231-3300 fax: (619) 231-3301 -----From: "R.H.J. Geraets" Use GetDesktopWindow() in stead of NULL as the second parameter in the Create call for your modeless dialog. Rene' Geraets -----From: Kostya Sebov Dear Tod, The dialog (no matter modal or modeless) is usually pop-up window (the one having WS_POPUP style). Yout formview is in short a child (WS_CHILD) of the app's main window, which is WS_OVERLAPPEDWINDOW. Pop-up windows *by definition* appear above the overlapped windows of the same app (probably thread -- not sure) and obviously their children. The quickiest solution is to move your dialog into another formview. Moreover it will avoid user's possible confusion between the windows of the different type, each of whic can have the focus. You can also experimant with the dialog as a child of your main window, but ussualy it doesn't yeld any success. Sincerely, --- Kostya Sebov. ---------------------------------------------------------------------------- Tel: (38 044) 266-6387 | Fax: (38 044) 266-6195 | E-mail: sebov@is.kiev.ua -----From: ted r lowe Environment: vc++ 4.1/winnt,win95 i'm experiencing the exact same problem and need to solve it soon. i spent hours hacking TOPMOST/BOTTOMMOST parameters, etc. for both the parent and (modeless dialog) child windows to no avail. The only reply on this problem so far, posted some code for hiding the modeless dialog window, which is not helpful in this case, since i just want the z order to change. thank you for any reply! ted --- who: ted r lowe \ "Imagination is more \ where: Wheaton, IL, USA, Earth \ important than knowledge" \ e-mail: trl@mcs.net \ \ url: http://www.mcs.net/~trl/ \ Albert Einstein \ phone: voice=708-260-0424 fax=260-0570 \ \
Roger Onslow -- Roger_Onslow@compsys.com.au Monday, July 22, 1996 Frame is parent of the dialog, and, like and good parent, it always puts its children first. (ie. parent frame always displays underneath its children -- otherwise you'd never see the views inside a frame!!) /|\ Roger Onslow ____|_|.\ ============ _/.........\Senior Software Engineer /CCC.SSS..A..\ /CC..SS...A.A..\ Computer /.CC...SS..AAA...\ Systems /\.CC....SSAA.AA../ Australia \ \.CCCSSS.AA.AA_/ \ \...........// Ph: +61 49 577155 \ \...._____// Fax: +61 49 675554 \ \__|_/\_// RogerO@compsys.com.au \/_/ \//
| Вернуться в корень Архива |