Français
Forum

Flackerfreies Redraw

 
- page 1 -



Normann
Strübli
Moin moin,

ist déjà un peu her seitdem je mich intensiver avec Xprofan
beschäftigt habe alors hoffentlich aucun dumme Frage:

Es um une Statusbar im Hauptfenster, qui je chez
Fenstergrößenänderung récente zeichnen voudrais.
malheureusement flackert cela ganze furchtbar, là gibt es doch sicherlich
une bessere Solution?

cela Subclassing soll conservé rester.
 $H windows.ph
 $H messages.ph
'Statusbar
DEF CreateStatusWindow(4) ! "comctl32","CreateStatusWindow"
Déclarer Dialog&,Status&,SText$,Positions#
Déclarer CLASSNAME$,PROGRESSHandle&,HWND&,ProgressZähler&
Faible Positions#,16
Long Positions#,0=250
Long Positions#,4=500
Long Positions#,8=-1
'**********************

SUBCLASSPROC

    declare dis#,rect#,tcitem#,b#,t$,mx%,my%,i%,o%

    si &sWnd=%HWnd

        si %sMessage= ~wm_size

            SetWindowPos Status& = 0,0 - 0,0; 0'Redraw Statusbar

        ElseIf %sMessage= ~wm_sizing

            SetWindowPos Status& = 0,0 - 0,0; 0'Redraw Statusbar

        EndIf

    ENDPROC

    CLS
    Var TEXT$ = »
    Status&=CreateStatusWindow($50000920,@ADDR(TEXT$),%HWND,1000)
    SendMessage(Status&,$404,3,Positions#)
    Dispose Positions#
    SubClass %HWnd, 1

    Tandis que 1

        Waitinput

    Endwhile

    subclass %HWnd,0
    Fin
 
03.02.2023  
 



« cette Beitrag wurde comme Solution gekennzeichnet. »


H.Brill
cela Flackern entsteht par cela Abfragen des ~wm_sizing.
cela est, chaque fois, si le souris cela la fenêtre dans qui Taille
modifié, sich alors bewegt, allez aussi qui Message ~wm_sizing un.

mais cela brauchst du eigentlich pas. là reicht aussi cela
Ende qui Bewegung zum Neuzeichnen. alors laß cela ~wm_sizing
simple weg.

Anbei qui Verschlimmbesserung, wohin qui aktuelle Breite des Fensters
aussi qui Longueur qui Felder dans qui Statusbar récente mets.
 $H windows.ph
 $H messages.ph
'Statusbar
DEF CreateStatusWindow(4) ! "comctl32","CreateStatusWindow"
Déclarer Dialog&,Status&,SText$,Positions#
Déclarer CLASSNAME$,PROGRESSHandle&,HWND&,ProgressZähler&
Faible Positions#,16
Long Positions#,0=250
Long Positions#,4=500
Long Positions#,8=-1
'**********************

SUBCLASSPROC

    declare Positions#, dis#,rect#,tcitem#,b#,t$,mx%,my%,i%,o%

    si &sWnd=%HWnd

        si %sMessage= ~wm_size

            SetWindowPos Status& = 0,0 - 0,0; 0'Redraw Statusbar
            Faible Positions#, 16
            Long Positions#, 0 = Width(%HWnd, 0) / 4
            Long Positions#, 4 = Width(%Hwnd, 0) / 2
            Long Positions#, 8 = -1
            SendMessage(Status&, $404, 3, Positions#)

        ElseIf %sMessage = ~wm_sizing

            SetText %HWnd, "Fensterbreite : " + Str$(Width(%HWnd))

        EndIf

    ENDPROC

    CLS
    Var TEXT$ = »
    Status&=CreateStatusWindow($50000920,@ADDR(TEXT$),%HWND,1000)
    SendMessage(Status&,$404,3,Positions#)
    Dispose Positions#
    SubClass %HWnd, 1

    Tandis que 1

        Waitinput

    Endwhile

    subclass %HWnd,0
    Dispose Positions#
    Fin

je denke, c'est quoi du meinst.
PS : qui Statusbar gibt es aussi integriert comme StatusWindow dans Profan.
Créer("StatusWindow",N1,S[,N2,B])
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
04.02.2023  
 




Normann
Strübli
Moin,

Im Grunde völlig bien sûr - hab je abgeändert et cela ganze était quand même
am flackern.
je hatte so viel hin - et herprobiert et ensuite cet Beispiel
aus meinen Code zusammengestellt, là était cela setwindowpos ensuite
sowohl chez ~wm_size comme aussi ~wm_sizing drin

tu as mich quand même sur qui Solution gebracht, weil es oui dans deinem
modifié Beispiel pas flackert.

je hatte un überlappendes Static Contrôle - eigentlich J'ai eu qui höhe
qui Statusbar abgezogen, par une kleinen Schreibfehler était cette
Wert mais 0.
Passiert wohl si on trop longtemps den faute à qui falschen Stelle cherchez.

Vielen Dank nochmal !!!
 
04.02.2023  
 




Georg
Teles
Nabend, dedans qui SUBCLASS fehlt incidemment un EndIf, zum faute venez es pas, pourquoi De toute façon pas

également tut cela gleiche suivant Code, si quelqu'un avant XProfan 11 sans SubClassing arbeitet
 $H windows.ph
 $H messages.ph
'Statusbar
DEF CreateStatusWindow(4) ! "comctl32","CreateStatusWindow"
Déclarer Dialog&,Status&,SText$,Positions#,OldWndProc&
Déclarer CLASSNAME$,PROGRESSHandle&,HWND&,ProgressZähler&
Faible Positions#,16
Long Positions#,0=250
Long Positions#,4=500
Long Positions#,8=-1
'**********************

Proc ChangeControl

    Paramètres hWnd&, Message&, wParam&, lParam&
    declare Positions#, dis#,rect#,tcitem#,b#,t$,mx%,my%,i%,o%

    si hWnd&=%HWnd

        si Message&= ~wm_size

            SetWindowPos Status& = 0,0 - 0,0; 0'Redraw Statusbar
            'Faible Positions#, 16
            'Long Positions#, 0 = Width(%HWnd, 0) / 4
            'Long Positions#, 4 = Width(%Hwnd, 0) / 2
            'Long Positions#, 8 = -1
            'SendMessage(Status&, $404, 3, Positions#)

        ElseIf %sMessage = ~wm_sizing

            SetText %HWnd, "Fensterbreite : " + Str$(Width(%HWnd))

        EndIf

    EndIf

    Retour ~CallWindowProc(OldWndProc&, hWnd&, Message&, wParam&, lParam&)

ENDPROC

Set("Fastmode", 1)'FastMode
CLS
Var TEXT$ = »
Status&=CreateStatusWindow($50000920,@ADDR(TEXT$),%HWND,1000)
SendMessage(Status&,$404,3,Positions#)
Dispose Positions#
OldWndProc& = ~GetWindowLong(%hWnd, ~GWL_WNDPROC)' save old WindowLong
~SetWindowLong(%hWnd, ~GWL_WNDPROC, @ProcAddr("ChangeControl", 4))' set new WindowLong

Tandis que 1

    Waitinput

Endwhile

~SetWindowLong(%hWnd, ~GWL_WNDPROC, OldWndProc&)' restore WindowLong
Dispose Positions#
Fin

Grüße
 
Alle Sprachen
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

05.02.2023  
 



répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

2.082 Views

Untitledvor 0 min.
Sven Bader24.11.2023
Axel Berse13.08.2023
Wilfried Friebe28.05.2023
Rainer Hoefs02.05.2023
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie