Deutsch
Forum

Minimieren abfangen

 
- Seite 1 -



Christian
Schneider
Hallo,

gibt es irgendeine Möglichkeit die Minimierung des Hauptfensters (per Systemmenü) abzufangen und das Ganze selbst in die Hand zu nehmen (so wie bei schließen per Usermessages 16)?
 
XProfan 11| Vista(64) SP2
22.01.2008  
 



 
- Seite 1 -


RGH
m erstgenannten Fall wir die Original Fensterprozedur nicht mehr aufgerufen und der ggf. mit Return angegebene Wert wird dem Aufrufer zurückgeliefert. Im zweiten Fall wird anschließend die ursprüngliche Fensterprozedur aufgerufen.


Jau!
 
22.01.2008  
 




Frank
Abbing
Genauso meinte ich es...
 
22.01.2008  
 



Kurze Fragen hierzu, wenn ich im Minibrowser diese 2 Zeilen hinzufüge:
KompilierenMarkierenSeparieren
dürfte das hWnd doch nicht aktivierbar sein, korrekt?

Wir also trotz return 0 zur original wndproc weitergeleitet?
 
22.01.2008  
 




RGH
iF
Kurze Fragen hierzu, wenn ich im Minibrowser diese 2 Zeilen hinzufüge:
KompilierenMarkierenSeparieren
dürfte das hWnd doch nicht aktivierbar sein, korrekt?


Das return 0 brauchst Du nicht einmal. Durch das SubClassMessage() hast Du die Message behandelt und die ursprüngliche Fensterprozedur wird gar nicht mehr aufgerufen. Im Beispiel, dass ich im Thread zum Thema Subclassing gepostet habe, kommt ~wm_close ja auch nicht mehr an.

BTW: Wieso im Minibrowser? Verwechselst Du die Beispiele?

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
22.01.2008  
 



Ich glaube ich verwechsle die Beispiele, korrekt!

Aber was ist mit meiner Frage? Das hWnd ist dennoch aktivierbar was imho nicht korrekt ist. (ich hoffe ich verwechsle jetzt nicht auch noch die Message)
 
22.01.2008  
 



 
- Seite 2 -



RGH
Ach so: So wie ich das verstehe, teilt diese essage dem Fenster nur mit, DASS es aktiviert (bzw. deaktiviert, je nach WPARAM) wurde und zwar exakt nachdem dies geschehen ist. Die Message veranlaßt nicht das Aktivieren oder Deaktivieren. Dazu ist die API activateWindow zuständig ... wenn ich mich recht entsinne. (Ich hab die API nicht komplett im Kopf.)

Gruß Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
22.01.2008  
 



Hm, da bin ich mir grad nicht sicher - ich meine mich zu erinnern das ich auf diesem Wege bereits das Aktivieren verhindern konnte - auch das Deaktivieren. Ich werde wohl innerhalb einer dll das xprofan hwnd gesubclasst haben. Die GUI hat das Fenster sichtlich nicht aktiviert oder deaktiviert bei Anwahl per Maus oder Tastatur. Ich hoffe ich verwechsle die Message nicht!

Leider hier (noch) keine Werkzeuge zur Hand...

@Frank: Kannst Du grad mal nen InlineASM bereitstellen welcher das XProfan-hWnd subclasst und wm_activate abfängt?
 
22.01.2008  
 




RGH
Und um zum Threadthema zurückzukommen:

Es müßte die Message wm_syscommand abgefragt werden. In wParam steht dann, welches Systemkommando abgesetz wurde. Der Verkleinerungsbutton hat den Wert sc_minimize.

ACHTUNG: Wenn man das als Usermessage deklariert oder ab XProfan 11 im Subclassing abfängt, muß man darauf achten, auch auf die anderen Systemkommandos korrekt zu reagieren, sonst kann das Fenster z.B. nicht mehr ohne Einsatz des Taskmanagers geschlossen werden.

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
22.01.2008  
 




Frank
Abbing

@Frank: Kannst Du grad mal nen InlineASM bereitstellen welcher das XProfan-hWnd subclasst und wm_activate abfängt?


Ja. Aber eine Fensteraktivierung läßt sich mit WM_ACTIVATE so nicht verhindern. Ist nur eine Meldung, dass aktiviert wurde?
 
23.01.2008  
 




Christian
Schneider
RGH
Es müßte die Message wm_syscommand abgefragt werden. In wParam steht dann, welches Systemkommando abgesetz wurde. Der Verkleinerungsbutton hat den Wert sc_minimize.


Danke, so funktionierts.

Falls es mal jemand brauchen sollte, hier die Werte von &Wparam für...

schließen: 20
minimieren: 8
die normale Anzeige (nach Minimierung): 61728
Alt+F4: 61536
 
XProfan 11| Vista(64) SP2
23.01.2008  
 




Jac
de
Lad
Poste bitte mal ein Minimalbeispiel.
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
23.01.2008  
 



Zurück zum Unterthema:
KompilierenMarkierenSeparieren
Hiermit verhindere ich per ASM erfolgreich die sichtliche Aktivierbarkeit des Zielfensters - ich nutze also nicht wm_activate sondern WM_NCACTIVATE.

Hier von mir ein Uralt-Code der schön zeig das/wie es funktioniert:
KompilierenMarkierenSeparieren
 {$cleq}
Set(FastMode,1)
Def Cwp(5) !user32,CallWindowProcA
Declare Ex%,_owp&,Sb&
DEF CreateStatusBar(6) @control(msctls_statusbar32,@$(2),add(000256,$50800040-16),@%(3),@%(4),@%(5),@%(6),@%(1),100, %HInstance)
windowstyle 512+8
window 100,100 - 640,480
_owp&:=External(user32,SetWindowLongA,%Hwnd,-4, Procaddr(_wproc,4))

Whilenot Ex%

    Waitinput

Endwhile

End

Proc _wproc

    Parameters Wnd&, Msg&, Wparam&, Lparam&

    If (Msg&==16)// close

        Ex%:=1

    Elseif (Msg& == WM_NCACTIVATE)

        return 0

    endif

    Return Cwp(_owp&,Wnd&, Msg&, Wparam&, Lparam&)

Endproc


Leider habe ich nun hier wieder grad nicht den aktuellsten XProfan-Compiler zur Hand sodass ich WM_NCACTIVATE nicht innerhalb der SubClassProc testen kann. Könnte das jemand versuchen und hier posten?
KompilierenMarkierenSeparieren
Ich meine mich zu erinnern es auch ermöglicht zu haben das ein Fenster noch nicht einmal reagiert / in den Vordergrund geholt wird nachdem man es anwählt - gleichwohl aber alle daraufliegenden Controls durchaus empfangsfähig waren. Ich empfand es als Manko das nicht per windowStyle einstellen zu können.

Es ist natürlich richtig dass das Abfangen des Minimierens so geschehen kann:
KompilierenMarkierenSeparieren
Proc _wproc

    ...

Elseif (Msg& == wm_syscommand)

    case wparam&==sc_minimize : return 0
    ...

Endproc


Da ich wie bereits erwähnt hier grad kein neusten XProfan Compiler zu Hand habe würde ich auch gerne wissen ob das MinMax-Geschenen mit der SubClassProc zu handeln ist. (Glaube dem XProfan11 fehlt dafür noch ein eigenes Peek/Poke)

745 kB
Hochgeladen:23.01.2008
Ladeanzahl84
Herunterladen
 
23.01.2008  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

1.597 Betrachtungen

Unbenanntvor 0 min.
Joerg16.06.2016
Ernst14.03.2015
E.T.25.12.2014
RICOSCH17.12.2011

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie