Español
Foro

Skalierbares-Ventana redactar, sin Dicken Rahmen

 
- Página 1 -



Julian
Schmidt
¡Hola,
Yo sería gerne de optischen Gründen una Ventana redactar el weiterhin skalierbar es, allerdings no Dicken Rahmen besitzt. Ist así algo posible?

LG

Julian57
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
20.09.2011  
 



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


Andreas
Miethe


IF (21.09.11)
Usted hast sí ya una fetten Block: caso (%mouseXheight(%hWnd)-10) : hwnd.scaleByMouse()


IF (21.09.11)
como kannst Usted doch el hWnd.scaleByMouse-Proc como Parámetro transferencia welche Ecke/ Kante gemeint war en a Ersparen el Usted el en el Proc sólo otra vez ermitteln musst.


Es me irgendwie gegen el Strich

Das se normalerweise en Message WM_NCHITTEST geregelt.

Hier veces una kleines Ejemplo para una skalier / verschiebbaren Button. Sollte se wohl para una Ventana adaptar dejar.
 $H Windows.ph
 $H Messages.ph
 $H Structs.ph
STRUCT TRect         = ~Rect
STRUCT TPoint        = ~Punto

Proc HitTest

    Parámetros hCtl&,lParam&
    Declarar Punto#
    Declarar Rect#
    Dim Punto#,TPoint
    Dim Rect#,TRect
    Punto#.x& = LoWord(lParam&)
    Punto#.y& = HiWord(lParam&)
    ~ScreenToClient(hCtl&,Punto#)
    ~GetWindowRect(hCtl&,Rect#)
    ~MapWindowPoints(~GetDesktopWindow(),%Hwnd,Rect#,2)

    If (Punto#.y& < 4) AND (Punto#.x& < 4)

        Disponer Punto#,Rect#
        Volver  ~HTTOPLEFT

    ElseIf (Punto#.y& < 4) AND (Punto#.x& >= (Rect#.right& - Rect#.left&-4))

        Disponer Punto#,Rect#
        Volver  ~HTTOPRIGHT

    ElseIf (Punto#.y& >= (Rect#.bottom& - Rect#.top&-4)) AND (Punto#.x& >= (Rect#.right& - Rect#.left&-4))

        Disponer Punto#,Rect#
        Volver  ~HTBOTTOMRIGHT

    ElseIf (Punto#.x& < 4) AND (Punto#.y& >= (Rect#.bottom& - Rect#.top& - 4))

        Disponer Punto#,Rect#
        Volver  ~HTBOTTOMLEFT

    ElseIf Punto#.y& < 4

        Disponer Punto#,Rect#
        Volver  ~HTTOP

    ElseIf Punto#.x& < 4

        Disponer Punto#,Rect#
        Volver ~HTLEFT

    ElseIf Punto#.x& >= (Rect#.right& - Rect#.left& - 4)

        Disponer Punto#,Rect#
        Volver ~HTRIGHT

    ElseIf Punto#.y& >= (Rect#.bottom& - Rect#.top& - 4)

        Disponer Punto#,Rect#
        Volver ~HTBOTTOM

    Más

        Disponer Punto#,Rect#
        Volver ~HTCAPTION

    EndIf

ENDPROC

SubClassProc

    If SubClassMessage(&sWnd,~WM_NCHITTEST)

        Conjunto("WinProc", 0)
        Volver HitTest(&swnd,&slParam)

    Endif

ENDPROC

cls
Var Ende& = 0
Var Button& = Crear("Button",%hwnd,"OK",10,10,120,30)
SubClass Button&,1

whilenot ende&

    waitinput

endwhile

 
Gruss
Andreas
________ ________ ________ ________ _
Profan 3.3 - XProfanX2
Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit
ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher
Homepage :  [...] 
21.09.2011  
 



Sí natürlich y como hay viele Wege -

erzeuge z.B. simplemente una Ventana el no dicken Rahmen besitzt y reagiere en el subClassProc en wm_mouseMove a richtiger Position hacer frente a wm_setCursor en el Mauspfeil optisch anzupassen y en wm_lButtonDown speicherst en Globalen aktuelle Breite y Höhe y Mausposition y una IchSkaliereGrad-Flag y zusätzlich en wm_mouseMove si IchSkaliereGrad-Flag gesetzt es simplemente por setWindowPos el FensterGröße adaptar.
 
20.09.2011  
 




Julian
Schmidt
IF (20.09.11)
erzeuge z.B. simplemente una Ventana el no dicken Rahmen besitzt y reagiere en el subClassProc en wm_mouseMove a richtiger Position hacer frente a wm_setCursor en el Mauspfeil optisch anzupassen y en wm_lButtonDown speicherst en Globalen aktuelle Breite y Höhe y Mausposition y una IchSkaliereGrad-Flag y zusätzlich en wm_mouseMove si IchSkaliereGrad-Flag gesetzt es simplemente por setWindowPos el FensterGröße adaptar.


Hört se alles otro como simplemente a.
Hast du así qué ya gemacht y vlt una Ver código fuente parat?
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
20.09.2011  
 



Nein Yo dazu nichts parat aber una Ejemplo dafür schreibt se fast de incluso:
/*
{$ Cleq}
{$compiler c:\XProfan11\}
{$runtime c:\XProfan11\}
*/
windowstyle 1 | 2 | 8 | 16 | 512
window 640,480
mensajes de los usuarios 16,513,20//wm_close,wm_lButtonDown,wm_eraseBkGnd
subClass %hWnd,1

mientras que 1

    waitInput

    seleccionar %uMessage

        caseof 16 : romper

        caseof 513

        caso (%mouseX>width(%hWnd)-10) and (%mouseY>height(%hWnd)-10) : hWnd.scaleByMouse()

    EndSelect

wend

end

subClassProc

    caso subClassMessage(%hWnd, 512):useCursor (%mouseX>width(%hWnd)-10) and (%mouseY>height(%hWnd)-10)*7//wm_mouseMove

endProc

proc hWnd.scaleByMouse

    declarar m#
    dim m#,8
    external("user32","GetCursorPos",m#)
    var omx%=long(m#,0)
    var omy%=long(m#,4)
    var wi&=%winRight-%winLeft
    var he&=%winBottom-%winTop

    mientras que isKey(1)

        waitInput 10
        external("user32","GetCursorPos",m#)
        setWindowPos %hWnd=%winLeft,%winTop - wi&-omx%+long(m#,0),he&-omy%+long(m#,4)

    wend

    disponer m#

endProc

Un XPSE-Variante:

En diesem Ejemplo hast Usted bezogen el Ventana principal unten rechts una Greifpunkt.
 
20.09.2011  
 




Julian
Schmidt
Kann uno esta Greifpunkte auch en todos Ecken, Páginas übertragen?
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
20.09.2011  
 



Usted puede doch por Code así viele Ecken y Kanten definieren como Usted magst y en Murmelei reagieren. oO
 
20.09.2011  
 




Julian
Schmidt
Öhm...sí
sólo Yo bekomme el con el Cursors no geregelt.

Was es el para una komische Konstruktion en el SubclassProc?
useCursor (%mouseX>width(%hWnd)-10) and (%mouseY>height(%hWnd)-10)*7

El normalen Parámetro para UseCursor sehen doch anders de!?
windowstyle 1 | 2 | 8 | 16 | 512 | 64
window 640,480
cls RGB(255,0,0)
mensajes de los usuarios 16,513,20
subClass %hWnd,1

mientras que 1

    waitInput

    seleccionar %uMessage

        caseof 16 : romper

        caseof 513

        caso (%mouseX>width(%hWnd)-10) and (%mouseY>height(%hWnd)-10) : hwnd.scaleByMouse()
        caso (%mouseX<10) and (%mouseY<10) : hwnd.scaleByMouse()
        caso (%mouseX>width(%hWnd)-10): hwnd.scaleByMouse()
        caso (%mouseY>height(%hWnd)-10) : hwnd.scaleByMouse()
        caso (%mouseX<10) : hwnd.scaleByMouse()
        caso (%mouseY<10) : hwnd.scaleByMouse()

    EndSelect

    caso iskey(27) : end

wend

end

subClassProc

    caso subClassMessage(%hWnd, 512): caso (%mouseX>width(%hWnd)-10) and (%mouseY>height(%hWnd)-10): UseCursor 7//wm_mouseMove
    caso subClassMessage(%hWnd, 512): caso (%mouseX<10) and (%mouseY<10): UseCursor 9//wm_mouseMove

endProc

proc hwnd.scaleByMouse

    declarar m#
    dim m#,8
    external("user32","GetCursorPos",m#)
    var omx%=long(m#,0)
    var omy%=long(m#,4)
    var wi&=%winRight-%winLeft
    var he&=%winBottom-%winTop

    mientras que isKey(1)

        waitInput 10
        external("user32","GetCursorPos",m#)
        setWindowPos %hWnd=%winLeft,%winTop - if(wi&-omx%+long(m#,0)>0,wi&-omx%+long(m#,0),10),if(he&-omy%+long(m#,4)>0,he&-omy%+long(m#,4),10)

    wend

    disponer m#

endProc

 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
20.09.2011  
 



... aber auch sólo porque Usted lo eben no regelst.

Usted definierst z.B. no useCursor 0 en el Fall el eben kein Sondercursor gezeigt voluntad se.

Diese de Usted como "komisch" y como "Konstruktion" bezeichnete Anweisung sieht dies aber antes:

porque si el Argument falso es se useCursor 0 angewiesen en lugar de 7.

Den Code en todos Ecken y Kanten umzustellen es reine Fleißarbeit -

Yo quería Usted sí sólo zeigen a) el y b) cómo lo anstellen podría.
 
21.09.2011  
 




Julian
Schmidt
War trotzdem una komische Konstruktion. ^ ^
Aber ahora me está auch klar como funktionierte.
Entweder wirft
(%mouseX>width(%hWnd)-10) and (%mouseY>height(%hWnd)-10)
1 oder 0 zurück.
Dementsprechend: 0*7=0 & 1*7=7

Inzwischen es el con el Cursors alles geregelt.
Yo finde sólo todavía una Bug en el Snippet y zwar el Skalieren de el Links-Oberen Ecke.
Außerdem puede ser el Ventana en 2 Ecken,Kanten en una Größe de 0px ziehen, welches Yo simplemente no rausbekomme. Kann wer helfen?
windowstyle 1 | 2 | 8 | 16 | 512 | 64
window 600,400
cls RGB(255,0,0)
mensajes de los usuarios 16,513,20
subClass %hWnd,1

mientras que 1

    waitInput

    seleccionar %uMessage

        caseof 16 : romper

        caseof 513

        caso (%mouseX<10) and (%mouseY<10) : hwnd.scaleByMouse()'Ecken
        caso (%mouseX>width(%hWnd)-10) and (%mouseY<10) : hwnd.scaleByMouse()
        caso (%mouseX<10) and (%mouseY>height(%hWnd)-10) : hwnd.scaleByMouse()
        caso (%mouseX>width(%hWnd)-10) and (%mouseY>height(%hWnd)-10) : hwnd.scaleByMouse()
        caso (%mouseX<10) : hwnd.scaleByMouse()'Kanten
        caso (%mouseY<10) : hwnd.scaleByMouse()
        caso (%mouseX>width(%hWnd)-10) : hwnd.scaleByMouse()
        caso (%mouseY>height(%hWnd)-10) : hwnd.scaleByMouse()

    EndSelect

    caso iskey(27) : end

Endwhile

end

subClassProc

    if subClassMessage(%hWnd, 512)

        if ((%mouseX<10) and (%mouseY<10)) or ((%mouseX>width(%hWnd)-10) and (%mouseY>height(%hWnd)-10))

            UseCursor 7

        elseif ((%mouseX<10) and (%mouseY>height(%hWnd)-10)) or ((%mouseX>width(%hWnd)-10) and (%mouseY>height(%hWnd)-10))

            UseCursor 8

        elseif (%mouseX<10) or (%mouseX>width(%hWnd)-10)

            UseCursor 9

        elseif (%mouseY<10) or (%mouseY>height(%hWnd)-10)

            UseCursor 10

        más

            UseCursor 0

        Endif

    Endif

endProc

proc hwnd.scaleByMouse

    declarar m#
    dim m#,8
    external("user32","GetCursorPos",m#)
    var omx%=long(m#,0)
    var omy%=long(m#,4)
    var wi&=%winRight-%winLeft
    var he&=%winBottom-%winTop
    var wleft&=%winleft
    var wtop&=%winTop

    mientras que isKey(1)

        waitInput 10
        external("user32","GetCursorPos",m#)
        caso (omx%>%winLeft) and (omy%>%winTop) : setWindowPos %hWnd=%winLeft,%winTop - if(wi&-omx%+long(m#,0)>10,wi&-omx%+long(m#,0),10),if(he&-omy%+long(m#,4)>10,he&-omy%+long(m#,4),10)
        caso (omx%<%winLeft+10) : setWindowPos %hWnd=long(m#,0),%winTop,(wleft&+wi&)-long(m#,0),he&
        caso (omy%<%winTop+10) : setWindowPos %hWnd=%winLeft,long(m#,4),wi&,(wtop&+he&)-long(m#,4)

    Endwhile

    disponer m#

endProc

 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
21.09.2011  
 



Usted hast sí ya una fetten Block:
como kannst Usted doch el hWnd.scaleByMouse-Proc como Parámetro transferencia welche Ecke/ Kante gemeint war en a Ersparen el Usted el en el Proc sólo otra vez ermitteln musst.
 
21.09.2011  
 




Julian
Schmidt
Meinst Si es usted el se entonces kürzer?
Abfragen muss Yo siempre, sei lo nun en el Proc, o "fetten Block"?

Außerdem el Ermitteln cada Kante, Ecke en el Proc es auch no así schwer!
Lo flackert bastante schrecklich de y a beim mover! Ein Fehler?
windowstyle 2+16+64
window 600,400
cls RGB(255,0,0)
mensajes de los usuarios 16,513,20
subClass %hWnd,1

mientras que 1

    waitInput

    seleccionar %uMessage

        caseof 16 : romper

        caseof 513

        caso (%mouseX<10) and (%mouseY<10) : hwnd.scaleByMouse()'Ecken
        caso (%mouseX>width(%hWnd)-10) and (%mouseY<10) : hwnd.scaleByMouse()
        caso (%mouseX<10) and (%mouseY>height(%hWnd)-10) : hwnd.scaleByMouse()
        caso (%mouseX>width(%hWnd)-10) and (%mouseY>height(%hWnd)-10) : hwnd.scaleByMouse()
        caso (%mouseX<10) : hwnd.scaleByMouse()'Kanten
        caso (%mouseY<10) : hwnd.scaleByMouse()
        caso (%mouseX>width(%hWnd)-10) : hwnd.scaleByMouse()
        caso (%mouseY>height(%hWnd)-10) : hwnd.scaleByMouse()

    EndSelect

    caso iskey(27) : end

Endwhile

end

subClassProc

    if subClassMessage(%hWnd, 512)

        if ((%mouseX<10) and (%mouseY<10)) or ((%mouseX>width(%hWnd)-10) and (%mouseY>height(%hWnd)-10))

            UseCursor 7

        elseif ((%mouseX<10) and (%mouseY>height(%hWnd)-10)) or ((%mouseX>width(%hWnd)-10) and (%mouseY>height(%hWnd)-10))

            UseCursor 8

        elseif (%mouseX<10) or (%mouseX>width(%hWnd)-10)

            UseCursor 9

        elseif (%mouseY<10) or (%mouseY>height(%hWnd)-10)

            UseCursor 10

        más

            UseCursor 0

        Endif

    Endif

endProc

proc hwnd.scaleByMouse

    declarar m#
    dim m#,8
    external("user32","GetCursorPos",m#)
    var omx%=long(m#,0)
    var omy%=long(m#,4)
    var wi&=%winRight-%winLeft
    var he&=%winBottom-%winTop
    var wleft&=%winleft
    var wtop&=%winTop

    mientras que isKey(1)

        waitInput 10
        external("user32","GetCursorPos",m#)
        caso (omx%>%winLeft) and (omy%>%winTop) : setWindowPos %hWnd=%winLeft,%winTop - if(wi&-omx%+long(m#,0)>10,wi&-omx%+long(m#,0),10),if(he&-omy%+long(m#,4)>10,he&-omy%+long(m#,4),10)'Kante Unten,Recht; Ecke Rechts-Unten, Rechts-Oben
        caso (omx%<%winLeft+10) and (omy%<%winTop+10) : setWindowPos %hWnd=long(m#,0),long(m#,4),(wleft&+wi&)-long(m#,0),(wtop&+he&)-long(m#,4)'Ecke Links, Oben
        caso (omx%<%winLeft+10) : setWindowPos %hWnd=long(m#,0),%winTop,(wleft&+wi&)-long(m#,0),he&'Kante Links
        caso (omy%<%winTop+10) : setWindowPos %hWnd=%winLeft,long(m#,4),wi&,(wtop&+he&)-long(m#,4)'Kante Oben
        caso (omx%<%winLeft+10) and (omy%>%winTop+10) : setWindowPos %hWnd=long(m#,0),%winTop,(wleft&+wi&)-long(m#,0),if(he&-omy%+long(m#,4)>10,he&-omy%+long(m#,4),10)'Ecke Links-Unten

    Endwhile

    disponer m#

endProc

 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
21.09.2011  
 




E.T.
¿Por qué muss el alles siempre otra vez así kompliziert ser !!??
Wenn Yo hier en el Foro el Búsqueda benutze finde Yo etliche Beispiele a Ventana-Scalierung, incluso con allen darauf befindlichen Elementen.

If ha a una pocos Klasse Sachen beigetragen... sólo uno muss auch veces el SuFu nutzen, y lo incluso algo más entwickeln.

Wer me wohl auch angewöhnen, sólo veces después de ner Solución a fragen, bevor Yo selber el Kopf anstrenge...

SORRY !!!
 
XProfan X2
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
21.09.2011  
 




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

27.909 Views

Untitledvor 0 min.
H.Brill16.09.2023
R.Schneider04.04.2022
Peter Max Müller01.11.2017
Jörg Sellmeyer04.02.2016
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