Page 1 of 1

VISTA BETA 2- ShowWindow

PostPosted: Wed Jul 26, 2006 6:07 pm
by Otto
SW_SHOWMAXIMIZED = 3

ShowWindow(hWnd,3)

System hangs.


SW_RESTORE = 9
Works.


Regards
Otto

PostPosted: Thu Jul 27, 2006 9:31 am
by Antonio Linares
Otto,

This code is properly working on Vista Beta 2 (5384):
Code: Select all  Expand view
#include "FiveWin.ch"

function Main()

   local oWnd
   
   DEFINE WINDOW oWnd TITLE "Test for Otto"
   
   ACTIVATE WINDOW oWnd MAXIMIZED
   
return nil 

MAXIMIZED uses ShowWindow(). Please provide a self contained sample to reproduce the error that you mention, thanks.

PostPosted: Thu Jul 27, 2006 6:20 pm
by Otto
Here is my code.
Regards
Otto


func ziRechnung
LOCAL cHSTIni := ".\INI\WINHOTEL.INI"
LOCAL WIN_HOT_VER := ""
LOCAL nPos := ""
LOCAL hWnd := GetWindow( GetActiveWindow(), GHW_HWNDFIRST )
LOCAL cTask :=""
LOCAL ktowahlaufruf := 0
local cTest :=""
*--------------------------------------------


WIN_HOT_VER := GetPvProfString( "SETUPDATEN","VerzeichnisWinHotel" , "C:\WINHOT96" ,cHSTIni )
nPos := len(WIN_HOT_VER+"WHRG.EXE")


// cTest := UPPER(left(cTask,nPos))
// msginfo( cTest )



while hWnd != 0
cTask = GetModuleFileName( GetWindowWord( hWnd, GWW_HINSTANCE ) )
// msginfo( cTask )

if UPPER(left(cTask,nPos)) = UPPER(WIN_HOT_VER + "WHRG.EXE")
//msginfo("Vor show 9" + UPPER(left(cTask,nPos)))
ShowWindow(hWnd,9)
setFocus(hWnd)
SETFOREGRO(hWnd)
RETURN NIL
endif
hWnd = GetWindow( hWnd, GHW_HWNDNEXT )
end
winexec("WHRG.exe")
RETURN NIL

PostPosted: Thu Jul 27, 2006 6:33 pm
by Antonio Linares
Otto,

Please provide a reduced and self contained sample. A PRG that can be copied, compiled and executed as it is with no changes. Its the only way to provide efficient tech support. Thanks.

PostPosted: Thu Jul 27, 2006 8:16 pm
by Otto

PostPosted: Fri Jul 28, 2006 8:59 am
by Antonio Linares
Otto,

Thanks. Would you mind to explain whats the purpouse of your code ?

PostPosted: Fri Jul 28, 2006 9:23 am
by Otto
If the programm is allready runnig to bring it in the foreground.

PostPosted: Fri Jul 28, 2006 12:36 pm
by Antonio Linares

PostPosted: Fri Jul 28, 2006 2:03 pm
by Otto
BringWindowToTop(hWnd)

does not resolve the problem.

Regards
Otto

PostPosted: Fri Jul 28, 2006 2:24 pm
by James Bott
Otto,

>If the programm is allready running to bring it in the foreground.

Try this:

DLL32 FUNCTION SETFOREGROUNDWINDOW( hWnd AS LONG ) AS BOOL;
PASCAL FROM "SetForegroundWindow" LIB "user32.dll"

PostPosted: Fri Jul 28, 2006 2:47 pm
by Otto
Thank you James. I have this code in my testprg.

But does not work.
Regards
Otto

PostPosted: Sun Aug 13, 2006 8:01 am
by Badara Thiam
Otto,

Try with StopUntil( <bCondition> ).

Regards,

PostPosted: Mon Aug 14, 2006 7:50 am
by Badara Thiam
I have revisited my Windows 2000 API SuperBible,
and it's appear than "ShowWindow does not make sure the window is in the foreground. Use SetWindowPos or SetActiveWindow function to bring a window to the foreground."

Also, there is LockSetForegroundWindow function who
"...disable or enables the calls to the SetForegroundWindow
function for the calling process.

By default, the system automatically enables calls to SetForegroundWindow if the user press the Alt key or takes some
action that causes the system itself to change the foreground window.
This function allows applications to prevent other applications from
making a foreground change that can interrupt its interaction with the user."

Hope this help :wink: