Español
Foro

Flackerfreies Redraw

 
- Página 1 -



Normann
Strübli
Moin moin,

es ya una wenig her seitdem Yo mich intensiver con Xprofan
beschäftigt habe also hoffentlich no dumme Cuestión:

Lo una Statusbar en el Ventana principal, el Yo en
Fenstergrößenänderung neu dibujar möchte.
Leider flackert todos furchtbar, como hay doch sicherlich
una bessere Solución?

Das Subclassing se obtener bleiben.
 $H windows.ph
 $H messages.ph
'Statusbar
DEF CreateStatusWindow(4) ! "comctl32","CreateStatusWindow"
Declarar Dialog&,Status&,SText$,Positions#
Declarar CLASSNAME$,PROGRESSHandle&,HWND&,ProgressZähler&
Dim Positions#,16
Largo Positions#,0=250
Largo Positions#,4=500
Largo Positions#,8=-1
'**********************

SUBCLASSPROC

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

    if &sWnd=%HWnd

        if %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#)
    Disponer Positions#
    SubClass %HWnd, 1

    Mientras que 1

        Waitinput

    EndWhile

    subclass %HWnd,0
    End
 
03.02.2023  
 



« Dieser Contribución wurde como Solución gekennzeichnet. »


H.Brill
Das Flackern entsteht por el Abfragen des ~wm_sizing.
Das heißt, jedesmal, si la Ratón el Ventana en el Größe
verändert, se also bewegt, va auch el Message ~wm_sizing una.

Aber el necesidad du eigentlich no. Como reicht auch el
Ende el Bewegung para Neuzeichnen. Also laß el ~wm_sizing
simplemente weg.

Anbei el Verschlimmbesserung, wo el aktuelle Breite la ventana
auch el Longitud el Felder en el Statusbar neu setzt.
 $H windows.ph
 $H messages.ph
'Statusbar
DEF CreateStatusWindow(4) ! "comctl32","CreateStatusWindow"
Declarar Dialog&,Status&,SText$,Positions#
Declarar CLASSNAME$,PROGRESSHandle&,HWND&,ProgressZähler&
Dim Positions#,16
Largo Positions#,0=250
Largo Positions#,4=500
Largo Positions#,8=-1
'**********************

SUBCLASSPROC

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

    if &sWnd=%HWnd

        if %sMessage= ~wm_size

            SetWindowPos Status& = 0,0 - 0,0; 0'Redraw Statusbar
            Dim Positions#, 16
            Largo Positions#, 0 = Width(%HWnd, 0) / 4
            Largo Positions#, 4 = Width(%Hwnd, 0) / 2
            Largo 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#)
    Disponer Positions#
    SubClass %HWnd, 1

    Mientras que 1

        Waitinput

    EndWhile

    subclass %HWnd,0
    Disponer Positions#
    End

Yo denke, el es qué du media.
PS : El Statusbar hay auch integriert como StatusWindow en Profano.
Crear("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 klar - tener Yo abgeändert y todos war trotzdem
al flackern.
Tuve así viel hin - y herprobiert y luego dieses Ejemplo
de media Code zusammengestellt, como war el setwindowpos entonces
sowohl en ~wm_size como auch ~wm_sizing drin

Usted hast mich trotzdem en el Solución gebracht, porque lo sí en deinem
geänderten Ejemplo no flackert.

Tuve una überlappendes Static Control - eigentlich Tuve el höhe
el Statusbar abgezogen, por una pequeña Schreibfehler war dieser
Valor aber 0.
Passiert wohl si uno demasiado tiempo el Fehler a el falschen Punto sucht.

Vielen Dank otra vez !!!
 
04.02.2023  
 




Georg
Teles
Nabend, innerhalb el SUBCLASS fehlt de paso una EndIf, para Fehler kommt no, por qué De todos modos no

Ebenfalls tut el gleiche folgender Code, si alguien antes XProfan 11 sin SubClassing arbeitet
 $H windows.ph
 $H messages.ph
'Statusbar
DEF CreateStatusWindow(4) ! "comctl32","CreateStatusWindow"
Declarar Dialog&,Status&,SText$,Positions#,OldWndProc&
Declarar CLASSNAME$,PROGRESSHandle&,HWND&,ProgressZähler&
Dim Positions#,16
Largo Positions#,0=250
Largo Positions#,4=500
Largo Positions#,8=-1
'**********************

Proc ChangeControl

    Parámetros hWnd&, Message&, wParam&, lParam&
    declarar Positions#, dis#,rect#,tcitem#,b#,t$,mx%,my%,i%,o%

    if hWnd&=%HWnd

        if Message&= ~wm_size

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

        ElseIf %sMessage = ~wm_sizing

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

        EndIf

    EndIf

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

ENDPROC

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

Mientras que 1

    Waitinput

EndWhile

~SetWindowLong(%hWnd, ~GWL_WNDPROC, OldWndProc&)' restore WindowLong
Disponer Positions#
End

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

05.02.2023  
 



Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

2.096 Views

Untitledvor 0 min.
Sven Bader24.11.2023
Axel Berse13.08.2023
Wilfried Friebe28.05.2023
Rainer Hoefs02.05.2023
Más...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie