Español
Fuente/ Codesnippets

Fenstergröße Begrenzen, MINMAXINFO, WM_GETMINMAXINFO

 

Georg
Teles
Damit lässt el Fenstergröße después de Belieben begrenzen - el Message para Cambio el Position / Größe la ventana se aufgefangen, verändert & a el Ventana versendet
'###############################################
'#                                             #
'#  Fenstergröße begrenzen mittels MINMAXINFO  #
'#                                             #
'#          Georg Teles al 27.12.2018          #
'#                                             #
'###############################################
 $H structs.ph
 $H windows.ph
 $H messages.ph
Declarar OldWndProc&, ico&, e%
'-------------# Definitionen
Def GetWindowLong(2)!"USER32","GetWindowLongA"
Def SetWindowLong(3)!"USER32","SetWindowLongA"
Def CallWindowProc(5)!"USER32","CallWindowProcA"
Def RtlMoveMemory(3)!"KERNEL32","RtlMoveMemory"
'-------------# Estructuras
'reserviert, no Verwendung
Struct ptReserved = ptReservedX&, ptReservedY&
'maximale Breite (x) & Höhe (y) beim Maximierten Ventana
Struct ptMaxSize = ptMaxSizeX&, ptMaxSizeY&
'Position links (x) & oben (y) beim Maximierten Ventana
Struct ptMaxPosition = ptMaxPositionX&, ptMaxPositionY&
'kleinste Breite (x) & Höhe (y) beim Vergrößern/Verkleindern la ventana
Struct ptMinTrackSize = ptMinTrackSizeX&, ptMinTrackSizeY&
'größte Breite (x) & Höhe (y) beim Vergrößern/Verkleindern la ventana
Struct ptMaxTrackSize = ptMaxTrackSizeX&, ptMaxTrackSizeY&
'MINMAXINFO Struktur
Struct MinMax = ptReserved, ptMaxSize, ptMaxPosition, ptMinTrackSize, ptMaxTrackSize
'Variable para MINMAXINFO
Declarar MMI#
Dim MMI#, MinMax
'-------------# CallBack Rutina

Proc WindowProc

    Parámetros hWnd&, Message&, wParam&, lParam&
    ' alternativ en el Bucle regeln
    'If Message& = ~WM_KEYFIRST ' TASTEN auswertung
    'Case WParam& = 27:~PostQuitMessage(0) 'zB %Key = 27 para ESC
    'Endif

    If Message& = ~WM_GETMINMAXINFO' Message auffangen

        ' Pointer lParam auffangen y MMI füllen
        RtlMoveMemory(MMI#, lParam&, SizeOf(MMI#))
        ' Werte después de Belieben adaptar
        '-------------# Alternative 1

        With MMI#

            .ptMinTrackSizeX& = 355
            .ptMinTrackSizeY& = 282
            .ptMaxTrackSizex& = 500
            .ptMaxTrackSizey& = 500

        Endwith

        '-------------# Alternative 2
        'MMI#.ptMinTrackSizeX& = 355
        'MMI#.ptMinTrackSizeY& = 282
        'MMI#.ptMaxTrackSizex& = 500
        'MMI#.ptMaxTrackSizey& = 500
        ' MMI el lParam Pointer otra vez zuweisen
        RtlMoveMemory(lParam&, MMI#, SizeOf(MMI#))

    EndIf

    ' alternativ en el Bucle regeln
    'If Message& = ~wm_Destroy
    '  ~PostQuitMessage(0)
    'Endif
    Volver CallWindowProc(OldWndProc&, hWnd&, Message&, wParam&, lParam&)

ENDPROC

'-------------# Programa
Conjunto("FastMode",1)
Conjunto("TrueColor",1)
Windowtitle "Fenstergröße Begrenzen"
Ventana 100,100 - 355,282
ico& = Crear("hIcon",Par$(0),0)' Icon erwünscht ?
SendMessage(%HWnd,$80,1,ico&)' Icon conjunto
SetWindowLong(%HWnd,-16,$92CE0000)' passenden Style wählen
OldWndProc& = GetWindowLong(%hWnd, -4)' original WndProc speichern
SetWindowLong(%hWnd, -4, ProcAddr("WindowProc",4))' WindowProc zuweisen

Sinestar encargado e%

    Waitinput

    If %Key = 27

        Inc e%

    ElseIf %Key = 2

        Inc e%

    EndIf

EndWhile

SetWindowLong(%hWnd, -4, OldWndProc&)' original WndProc wiederherstellen
DeleteObject ico&
DisPose MMI#

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

27.12.2018  
 



Zum Quelltext


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.624 Views

Untitledvor 0 min.
Normann Strübli03.02.2023
Sven Bader24.02.2021
Georg Teles30.12.2020
N.Art18.11.2020
Más...

Themeninformationen

Dieses Thema ha 1 subscriber:

Georg Teles (1x)


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