Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 241004 (2440)

| Suchen
| Zurück zur Übersicht

Autor | Thema: Showwindow unter XP
Martin Pohl
| Datum:21.07.02 23:00 (martin_pohl@msn.com) |
Moin! Ich habe einen Dialog mit dem Handle main%. Mit showwindow möchte ich es in den Vordergrund bringen. Deshalb verwende ich am Ende die -1, um es in den Vordergrund zu bringen und es auch da bleibt. Wenn ich dann einen festgelegten Button drücke reagiert das Prog auch. Wenn ich jedoch dann ein anderes Fenster markiere oder auf den Desktop klicke geriet mein Prog wieder in den Hintergrund, obwohl es vorne bleiben soll. Ist das ein Problem mit WinXP oder ist da eine andere Fehlerquelle? - Profan² 5.0
Rolf Koch
| Datum:21.07.02 23:37 (webmaster@rokosoft.de) |
Hi versuchs mal so: mal nicht showwindow, sondern SetWindowPos main% = x,y - x,y;-1 und gehts? Rolf
Martin Pohl
| Datum:22.07.02 09:34 (martin_pohl@msn.com) |
Nee, das klappt auch nicht. Das soll so gehen: Der Dialog main% wird mit SetWindowPos aus dem Sichtbereich verschoben und soll trotzdem aktiv bleiben (immer).
Alexander Schoenfeld
| Datum:22.07.02 16:59 (alexander.schoenfeld@chronologic.de) |
Das selbe Problem habe ich unter W2K Prof auch... Leider bisher ohne Lösung... Mit freundlichem Gruss / kind regards, Alexander Schoenfeld Email: alexander.schoenfeld@chronologic.de
Frank Abbing
| Datum:22.07.02 17:06 (frankabbing@12move.de) |
Hi, dazu ist Profan's SetWindowPos zu unflexibel. Das geht nur mit API-Mitteln. Schreibt diese beiden Zeilen hinter den Windows-Befehl: DEF NewWindowPos(7) !"USER32","SetWindowPos" NewWindowPos(%hwnd,-1,0,0,0,0,$13) Die Fensterposition und -größe ist hierbei egal. Jetzt läßt sich das Fenster garantiert nicht mehr nach hinten klicken, getestet unter Windows XP... Gruß, Frank
Martin Pohl
| Datum:23.07.02 13:26 (martin_pohl@msn.com) |
Häh? Wo soll ich die Zeilen einfügen? Hier ist ein Teil meines Codes: proc main windowstyle 112 windowtitle "VoiceBox 2.0xp alpha" window @mul(%maxx,3),@mul(%maxy,3)-0,0 usefont "Terminal",14,6,1,0,0 setdialogfont 1 declare status%,status$ let _dlg%=@createdialog(%Hwnd,"VoiceBox v2.0xp alpha",@sub(@div(%maxx,2),123),0,246,70) let hide%=@createbutton(_dlg%,"-",0,0,24,24) let record_wave%=@createbutton(_dlg%,"R",48,0,24,24) let pause_wave%=@createbutton(_dlg%,"II",72,0,24,24) let stop_wave%=@createbutton(_dlg%,"#",96,0,24,24) let options%=@createbutton(_dlg%,"::",144,0,24,24) let quality%=@createdefbutton(_dlg%,"Q",168,0,24,24) let info%=@createbutton(_dlg%,"i",216,0,24,24) let status%=@createedit(_dlg%,"VoiceBox v2.0xp alpha gestartet",-1,24,247,15) @sendmessage(status%,$00CF,1,0) let _ende% = 0 whilenot _ende% waitinput if @equ(%key,2) let _ende% = 1 elseif @getfocus(hide%) 'DIESER BUTTON SOLL DAS PROGRAMM VERSTECKEN declare hidden_end% showwindow(%HWnd,0) 'FENSTER VO DER TASKLEISTE VERSTECKEN setwindowpos _dlg%=@mul(%maxx,3),@mul(%maxy,3)-246,70;-1 'FENSTER AUS DEM SICHTBEREICH BRINGEN MessageBox "VoiceBox ist nun versteckt. Mit F11 kommt VoiceBox wieder zum Vorschein","Verstecken",64 let hidden_end%=0 whilenot hidden_end% waitscan if @equ(%scankey,122) showwindow(%HWnd,1) 'FENSTER IN DER TASKLEISTE SICHTBAR MACHEN main 'DIE GANZE PROZEDUR NOCH MAL VON VORNE endif wend elseif @getfocus(record_wave%) ' Aktion wird nicht verraten elseif @getfocus(pause_wave%) ' Aktion wird nicht verraten elseif @getfocus(stop_wave%) ' Aktion wird nicht verraten elseif @getfocus(options%) ' Aktion wird nicht verraten elseif @getfocus(quality%) ' Aktion wird nicht verraten elseif @getfocus(info%) ' Aktion wird nicht verraten endif wend @destroywindow(_dlg%) endproc main Bitte sag mir, wo die Zeilen hin sollen. Und gibt es irgendwo eine Referenz zu API?
Jörg Sellmeyer
| Datum:23.07.02 14:10 (joerse@gmx.de) |
Hallo Martin, Die Definition einer neuen Funktion kommt ganz an den Anfang Deines Programms. Und statt showwindow oder setwindowpos benutzt Du die neue Funktion. DEF NewWindowPos(7) !"USER32","SetWindowPos" Window 10,10-100,100 NewWindowPos(%hwnd,-1,0,0,0,0,$13) waitinput
Frank Abbing
| Datum: 23.07.02 15:11 |
Hi, danke, Jörg. Hier nochmal die Funktion, etwas variabler: NewWindowPos(%hwnd,HWND_TOPMOST,0,0,0,0,SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE) Gruß, Frank

| Zurück zur Übersicht