Italia
Foro

Minimieren abfangen

 
- Page 1 -



Christian
Schneider
Ciao,

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  
 



 
- Page 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
potrebbe 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
potrebbe 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?

Saluto
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  
 



 
- Page 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.)

Saluto 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 il valore 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.

Saluto
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 il valore sc_minimize.


Danke, so funktionierts.

Falls es mal jemand brauchen sollte, hier die Werte von &Wparam per...

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
nowmactivateproc proc hWnd:DWORD, uMsg:DWORD, wParam:DWORD, lParam:DWORD
pushall

.if uMsg==WM_NCACTIVATE

    popall
    mov eax,0
    ret

.endif

popall
invoke CallWindowProc,oldproc,hWnd,uMsg,wParam,lParam
ret
nowmactivateproc 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 naturalmente 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
Downloadcounter84
Download
 
23.01.2008  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

1.603 Views

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

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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