Deutsch
Forum

Kleinstmögliche Fenstergröße

 

E.T.
Wird dir kleinsmögliche Fenster-Größe durch Windows bestimmt oder passt da was in XProfan nicht .

Erzeuge Fenster 800*600 und lasse mir per %cyCaption  die Höhe der Titelzeile anzeigen (Bei meiner Auflösung 22 px.):
KompilierenMarkierenSeparieren
Nun Ändere ich die Fenstergröße per
KompilierenMarkierenSeparieren
SetWindowPos %HWnd = 10,10 - 100,%cyCaption;-1

und erhalte per @Height(%HWnd,1)  38 ,
auch wenn ich statt %cyCaption  25 angebe, wirds nicht kleiner als die (ominösen?) 38...
...irgendwo muss diese Zahl doch her kommen

Hintergrund: ich möchte von meinem Fenster in einer Ecke (oder sonstwo) ein Mini-Fenster haben, welches für D&D empfänglich ist, soll aber nicht allzusehr stören
 
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...
26.12.2014  
 



E.T. (26.12.14)
Wird dir kleinsmögliche Fenster-Größe durch Windows bestimmt oder passt da was in XProfan nicht .


Die wird zunächst in der wproc bestimmt  [...]  die wiederum kommt zunächst von XProfan oder man klingt eine eigene ein.

Die 38 ist glaube ich irgend eine sysprop einstellbar bei Anzeige->Schema->Erweitert (oder so ähnlich).

Bei Fenstern mit Titelzeile kann y vlt. nicht kleiner als die Titelzeile sein,
ein Windowstyle 80 Fenster hingegen kann imho auch 0x0 sein.
 
26.12.2014  
 




Georg
Teles
Also von Windows zu Windows & vom Stil zu Stil (Fenster die von diesen Windows Styles / Unterstilen abhängig sind) werden die Ränder der Fenster ja noch berücksichtigt

Sowas ist mir schonmal aufgefallen, dass bei XP zB nach mit Create erzeugten Objekten das Fenster "früher abschneidet" als bei 8

Bei XP gab / gibt es diese .msstyles Dateien, die man mit ResHacker zb. bearbeiten kann, unter dem Ressourcennamen TEXTFILE oder wie auch immer vom Autor benannt, sind alle INIs der einzelnen Unterstile zu finden, wo Farben Größen bspw. definiert sind --- bei 7 & 8 habe ich keine Ahnung

d.h. wenn man window 0,0-800,600 erzeugt, sind die Außenmaße 800 * 600, die Fensterfläche ist also minus die Ränder bzw. minus die Titelleiste oben

wie man nun den Rand des aktuellen Stils auslesen kann, habe ich keine Ahnung
( Ich wette dafür gibt es Abfragen in Windows mit deren Hilfe man alle Metrics auslesen kann )
 
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

30.12.2014  
 




HofK
Georg Teles (30.12.14)
( Ich wette dafür gibt es Abfragen in Windows mit deren Hilfe man alle Metrics auslesen kann )


... das müsste GetSystemMetrics( index ) sein

Dazu gibt es zwei Seiten mit den Indizes
Der Index SM_CYCAPTION sollte die Höhe der normalen Titelleiste sein.

Im eigenen System kan man mit regedit schauen. So ist' s bei mir in Win 8.1 (Anlage)

Mit XProfan kan man schnell schauen wie es genauer aussieht:
__________________________________
$H Windows.ph

' aus der Windows.ph in xprofan/bin kopiert:
'-----------------------------------
' SM_CXSCREEN = 0;
' SM_CYSCREEN = 1;
' SM_CXVSCROLL = 2;
' SM_CYHSCROLL = 3;
' SM_CYCAPTION = 4;
' SM_CXBORDER = 5;
' SM_CYBORDER = 6;
' SM_CXDLGFRAME = 7;
' SM_CYDLGFRAME = 8;
' SM_CYVTHUMB = 9;
' SM_CXHTHUMB = 10;
' SM_CXICON = 11;
' SM_CYICON = 12;
' SM_CXCURSOR = 13;
' SM_CYCURSOR = 14;
' SM_CYMENU = 15;
' SM_CXFULLSCREEN = 16; (bei mir steht da identisch $10)
' SM_CYFULLSCREEN = 17;
' SM_CYKANJIWINDOW = 18;
' SM_MOUSEPRESENT = 19;
' SM_CYVSCROLL = 20;
' SM_CXHSCROLL = 21;
' und so weiter ...
'----------------------------------

windowtitle "Sysmetric"
windowstyle 24
window 25,25 - 500,800

whileloop 0,21
drawtext 10,20*&loop, ~GetSystemMetrics( &loop )
endwhile

waitinput
____________________________________________

165 kB
Hochgeladen:30.12.2014
Ladeanzahl94
Herunterladen
 
30.12.2014  
 




Georg
Teles
OK also
KompilierenMarkierenSeparieren
 $H Windows.ph
WindowStyle 4+8+512
Window 800,600
ausgabe()

While 1

    WaitInput

    If %Key = 2

        Break

    EndIf

    ausgabe()

EndWhile

Proc ausgabe

    Declare w_aussen&, h_aussen&
    CLS
    locate 0,0
    ' Rand Links & Rechts
    '  32 = SM_CXFRAME - This value is the same as SM_CXSIZEFRAME.
    ' Rand Oben & Unten
    '  4  = SM_CYCAPTION - The height of a caption area, in pixels.
    '  33 = SM_CYFRAME - This value is the same as SM_CYSIZEFRAME.
    w_aussen& = Width(%HWnd)+(~GetSystemMetrics(32)*2)
    h_aussen& = Height(%HWnd)+(~GetSystemMetrics(4))+(~GetSystemMetrics(33))+(~GetSystemMetrics(33))
    print "Äußere Fensterbreite: ";w_aussen&
    print "Innere Fensterbreite: ";width(%HWnd)
    print
    print "Äußere Fensterhöhe:   ";h_aussen&
    print "Innere Fensterhöhe:   ";height(%HWnd)

EndProc


Zu SM_CYCAPTION (Win8: 23 Px) muss der normale vertikale Rand SM_CYFRAME (8 Px) dazu addiert werden, damit die richtige Höhe der Titelleiste rauskommt (31 Px), kann das jemand noch bestätigen?

EDIT:
Kleinstmögliche Breite gibt SM_CXMIN an (28) - The minimum width of a window, in pixels.
 
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

07.01.2015  
 




E.T.
Hm, bei mir ist ein Fenster 800x600 auch außen genau so groß:
KompilierenMarkierenSeparieren
 $H Windows.ph
WindowStyle 4+8+512
Window 800,600
print "Minimale Breite lt. System:",~GetSystemMetrics(28)
print "Minimale Höhe lt. System:",~GetSystemMetrics(29)
print "*************************************************************************"
print "--------------XProfan-Werte:"
print "Fenster-Größe AUSSEN lt. XProfan:",Width(%HWnd,1),"x",height(%HWnd,1)
print "Fenster-Größe INNEN lt. XProfan:",Width(%HWnd,0),"x",height(%HWnd,0)
print "Höhe Titelzeile lt. XProfan:",%cyCaption
print "Höhe Menü lt. XProfan:",%cyMenu
print "Rahmen oben und unten lt. XProfan:", "???"
print "Rahmen links und rechst lt. XProfan:", "???"
print "--------------System-Werte:"
print "Rahmen unten und oben lt. System:",~GetSystemMetrics(33)
print "Rahmen links und rechts lt. System:",~GetSystemMetrics(32)
print "Höhe Titelzeile lt. System:",~GetSystemMetrics(4)
print "Höhe Menü lt. System:",~GetSystemMetrics(15)
print "--------------Gerechnet:"
print "  (Rahmen oben + Titel + Menü + innere Höhe(XProfan) + Rahmen)"
print "Fenster-Höhe lt. System + XProfan:",~GetSystemMetrics(33)+~GetSystemMetrics(4)+~GetSystemMetrics(15)+height(%HWnd,0)+~GetSystemMetrics(33)
Waitinput
end

Also ist meine ominöse "38"  vom System als kleinste Fenster-Höhe vorgegeben, naja, muss ich halt leben damit oder mir was anderes einfallen lassen...

Georg Teles (07.01.15)
Zu SM_CYCAPTION (Win8: 23 Px) muss der normale vertikale Rand SM_CYFRAME (8 Px) dazu addiert werden, damit die richtige Höhe der Titelleiste rauskommt (31 Px), kann das jemand noch bestätigen?


Kann ich so nicht bestätigen. Ich denke, den vertikalen  Rand dazu zu addieren, um die Höhe  zu bekommen, kann nicht ganz passen.
Bin aber grad zu faul zum denken zum Feierabend
 
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...
07.01.2015  
 




HofK
kleiner Trost:  meine kleinste Fenster-Höhe bei Win8.1 ist 47

Habe aber auch bei der Programmierung meiner CPU Simulation kräftig in der Registry rumgespielt und beim Testen bemerkt, dass die Darstellung des Fensters, der Controls zwischen Windows XP, 7, 8.1 nicht konsistent ist.

Besonders die Gridbox war stark abweichend und ich habe letztendlich auf 7, 8.1 optimiert.

Meine Registry Einstellungen sind nicht mehr der Urzustand, habs aber nicht notiert.
 
07.01.2015  
 



Darum ja auch sowas hier:  [...] 

Oder man erzeugt ein Fenster mit Stil 80 { | 512 }

Da hat man dann die volle Kontrolle darüber was angezeigt werden soll
und kann auch Titelzeile etc. selbst zeichnen.
 
07.01.2015  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

5.829 Betrachtungen

Unbenanntvor 0 min.
Sven Bader06.08.2023
Normann Strübli03.02.2023
Nico Madysa28.03.2016
E.T.02.01.2016
Mehr...

Themeninformationen

Dieses Thema hat 4 Teilnehmer:

HofK (2x)
Georg Teles (2x)
iF (2x)
E.T. (2x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie