![]() |
Anzeige:
|
|
|||||||
| Spezielles Für die Bereiche API, Subclassing, Inline-Assembler, Prozesse, ect. |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
|
Hi Profis.
Weiß jemand welche Messages gesendet werden, wenn ein Fenster maximiert wird bzw. wenn es wieder auf normale Größe gebracht wird? Hab WM_MAXIMIZE und WM_NORMALIZE gefunden, aber ich finde nicht, welche Konstanten das sind (XPSE kennt die nicht). Jac
__________________
XProfan-Profi (XProfan X2+XPIA) http://jacdelad.bplaced.net http://jacdelad.square7.ch |
|
|
|
|
|
|
#2 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
WM_MAXIMIZE = $F030
Die zweite Message kennt nicht mal MSDN.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#3 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
|
Nee, das hilft nicht. Ich habs aber gefunden: WM_Syscommand und dann SC_Maximize. Nur leider klappt die Abfrage der Fenstergröße mittels Width() und Height() nicht mehr.
Jac
__________________
XProfan-Profi (XProfan X2+XPIA) http://jacdelad.bplaced.net http://jacdelad.square7.ch |
|
|
|
|
|
#4 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
|
Problem gelöst. War wieder mal meine Dummheit.
__________________
XProfan-Profi (XProfan X2+XPIA) http://jacdelad.bplaced.net http://jacdelad.square7.ch |
|
|
|
|
|
#5 (Direktlink) |
|
MoRoGeP-Träger 2011
![]() Registriert seit: 06.02.2009
Ort: Heidelberg
Alter: 71
Beiträge: 1.877
|
@Jac
Lass uns an der Lösung "Deiner Dummheit" teilhaben !
__________________
Gruss, horst Computer werden kleiner und kleiner, bald verschwinden sie völlig. (Ephraim Kishon 1924-2005) http://www.web-treffpunkt.de |
|
|
|
|
|
|
#6 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
|
Jo, gleich heute abend. Muss erstmal arbeiten.
__________________
XProfan-Profi (XProfan X2+XPIA) http://jacdelad.bplaced.net http://jacdelad.square7.ch |
|
|
|
|
|
#7 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
|
Code:
SubClassProc
If SubClassMessage(%hWnd,wm_sizing)
Resize
Set("WinProc",0)
elseIf SubClassMessage(%hWnd,wm_size)
SetMenuItem 500
Set("WinProc",0)
endif
endproc
proc Resize
SetStyle %hwnd, 1, GetStyle(%hwnd, 1) | $02000000
SetWindowPos st&=0,0-0,0
SetWindowPos tb&=0,0-0,0
'Weitere Controls; Fenstergröße mit Width()/Height() abfragbar; ACHTUNG: Gibt Clientbereich zurück!
SetStyle %hwnd, 1, GetStyle(%hwnd, 1) - $02000000
endproc
cls
declare st&,tb&
st&=Create("Statuswindow",%hWnd,"Text")
tb&=Create("Toolbar",%hWnd,0,12,3,1000,1)
SubClass %hWnd,1
while 1
waitinput
case MenuItem(500):Resize
endwhile
end
__________________
XProfan-Profi (XProfan X2+XPIA) http://jacdelad.bplaced.net http://jacdelad.square7.ch |
|
|
|
|
|
#8 (Direktlink) |
|
Gast
Beiträge: n/a
|
Irgentwas klappt da nicht XProfan sagt mit immer das wm_sizing und wm_size keine zahl sind
|
|
|
|
#9 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
|
Jo, stimmt, ich hab XPSE verwendet. Der folgende Quelltext wurde durch XPSE gejagt und enthält nocht wm_ncpaint und wm_displaychange, was ich für genauso wichtig halte.
Code:
proc __xpse__endofprogram__
PARAMETERS exitcode&
REM {{SOMEEXTRAENDCOMMAND}}
case %pcount=1 : end exitcode&
end
endproc
DECLARE ST&,TB&
subclassproc
IF SUBCLASSMESSAGE(%HWND,126)'WM_DISPLAYCHANGE
RESIZE
SET("WinProc",0)
IF SUBCLASSMESSAGE(%HWND,133)'WM_NCPAINT
RESIZE
SET("WinProc",0)
IF SUBCLASSMESSAGE(%HWND,532)'WM_SIZING
RESIZE
SET("WinProc",0)
ELSEIF SUBCLASSMESSAGE(%HWND,5)'WM_SIZE
SETMENUITEM 500
SET("WinProc",0)
ENDIF
endproc
proc RESIZE
SETSTYLE %HWND, 1, GETSTYLE(%HWND, 1) | $02000000
SETWINDOWPOS ST&=0,0-0,0
SETWINDOWPOS TB&=0,0-0,0
SETSTYLE %HWND, 1, GETSTYLE(%HWND, 1) - $02000000
endproc
CLS
ST&=CREATE("Statuswindow",%HWND,"Text")
TB&=CREATE("Toolbar",%HWND,0,12,3,1000,1)
SUBCLASS %HWND,1
WHILE 1
WAITINPUT
IF MENUITEM(500)
RESIZE
ENDIF
ENDWHILE
END
__xpse__endofprogram__
__________________
XProfan-Profi (XProfan X2+XPIA) http://jacdelad.bplaced.net http://jacdelad.square7.ch Geändert von Jac de Lad (16.02.2009 um 20:34 Uhr) |
|
|
|
|
|
#10 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
|
Zur Erklärung:
wm_displaychange -> Auflösung wurde geändert wm_ncpaint -> Neuzeichnen wird erwartet (z.B. Sidebar beendet oder gestartet; Taskbargröße geändert -> alles, was den Clientbereich des Fensters betrifft) wm_sizing -> Fenstergröße wird geändert wm_size -> Fenstergröße wurde geändert
__________________
XProfan-Profi (XProfan X2+XPIA) http://jacdelad.bplaced.net http://jacdelad.square7.ch |
|
|
|
|
|
|
#11 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Wenn man den ganzen Messagekram mal halbwegs verstanden hat, ist es gar nicht mehr so schwer.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#12 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
|
Joar, das stimmt. Ich hab ne Weile gebraucht bis ich verstanden habe, dass zum Neuzeichnen nicht immer wm_paint gesendet wird sondern auch manchmal andere. Das hat den Vorteil, dass man auf die Ereignisse unterschiedlich reagieren kann (sie zum Beispiel verhindern indem man sie verwirft), aber im Normalfall muss man da ne Menge durchschleifen.
__________________
XProfan-Profi (XProfan X2+XPIA) http://jacdelad.bplaced.net http://jacdelad.square7.ch |
|
|
|
|
|
#13 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
|
Code:
DECLARE ST&,TB&
proc RESIZE
SETSTYLE %HWND, 1, GETSTYLE(%HWND, 1) | $02000000
SETWINDOWPOS ST&=0,0-0,0
SETWINDOWPOS TB&=0,0-0,0
SETSTYLE %HWND, 1, GETSTYLE(%HWND, 1) - $02000000
endproc
subclassproc
IF SUBCLASSMESSAGE(%HWND,126)'WM_DISPLAYCHANGE
RESIZE
'SET("WinProc",0)
elseIF SUBCLASSMESSAGE(%HWND,133)'WM_NCPAINT
RESIZE
'SET("WinProc",0)
elseIF SUBCLASSMESSAGE(%HWND,532)'WM_SIZING
RESIZE
'SET("WinProc",0)
ELSEIF SUBCLASSMESSAGE(%HWND,5)'WM_SIZE
SETMENUITEM 500
'SET("WinProc",0)
ENDIF
endproc
CLS
ST&=CREATE("Statuswindow",%HWND,"Text")
TB&=CREATE("Toolbar",%HWND,0,12,3,1000,1)
SUBCLASS %HWND,1
WHILE 1
WAITINPUT
IF MENUITEM(500)
RESIZE
ENDIF
ENDWHILE
__________________
XProfan-Profi (XProfan X2+XPIA) http://jacdelad.bplaced.net http://jacdelad.square7.ch |
|
|
|
|
|
#14 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Das hier läuft bei mir flackerfrei:
Code:
{$iq}
DECLARE ST&,TB&
SubClassproc
IF SUBCLASSMESSAGE(%HWND,WM_SIZING) or SUBCLASSMESSAGE(%HWND,WM_SIZE)
RESIZE
SET("WinProc",0)
ENDIF
endproc
proc RESIZE
SETWINDOWPOS TB&=0,0-0,0
SETWINDOWPOS ST&=0,0-0,0
UpdateWindow(tb&)
UpdateWindow(st&)
endproc
CLS
ST&=CREATE("Statuswindow",%HWND,"Text")
TB&=CREATE("Toolbar",%HWND,0,12,3,1000,1)
SETSTYLE %HWND, 1, GETSTYLE(%HWND, 1) | $02000000
SUBCLASS %HWND,1
WHILE 1
WAITINPUT
ENDWHILE
END
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Zwischen Fenstern switchen? | -Alex- | Windows Vista | 6 | 19.04.2008 18:56 |
| Zwischen Fenstern umschalten?? | wick1712 | Windows Vista | 24 | 19.08.2007 10:40 |
| Web-Seiten in zwei Fenstern | Gast-xp | Windows XP | 3 | 09.01.2007 11:10 |
| Net Send Messages automatisch schließen? | Abby | Windows XP | 3 | 14.07.2006 13:44 |
| Mehrfach öffnen von Fenstern | Hilfe | Windows XP | 3 | 01.09.2005 15:07 |