|  |  | 
|  | 
|  | 
|  p.specht
 
 
  | | Bei manchen Programmen begegnet man Fenster-Stilen, die einem im ersten Moment exotisch vorkommen. Bekommt man die Steuerungsnummer des gewählten Stiles heraus, dann ist die Frage, welche Steuerelemente dabei überhaupt angesprochen werden (und wie). Umgekehrt ist es eine ziemliche Rechnerei, sich einen eigenen Fensterstil zu basteln. Obwohl das nachstehende Machwerk noch grobe Macken hat - die Eingabe "t" (= Fenstertest im gewählten Stil) will noch nicht so recht klappen - , so hat es doch einige recht nützliche Funktionen. 
 WindowTitle upper$("    Windowstyle auswerten \\ ermitteln (V 11.2a)")
'(S) Spaghettiware A.D.2017-01 by P.Specht, Wien/Ösiland. Keine Gewähr, per nichts!
CLS : font 2 : usepen 0,2,255:rectangle 257,344-370,374
declare i&, WS$, fs&, tmp$, mb&, mausabfr&, bit&, the_cows_come_home&
fs&=%windowstyle
WS$="   0,Keine Größenänderung\\kein Systemmenü,   1,Vergrößerungspfeil (in Verbindung mit 8),"+\
"   2,Verkleinerungspfeil zu Icon (in Verbindung mit 8),   4,Dimensione änderbar,"+\
"   8,Autom. Systemmenü,  16,kein Autom. Menü,  32,Bildschirmhintergrund,  64,keine Titelleiste,"+\
" 128,kein Abbruch m.Strg+Esc\\Alt+F4 + kein Wechsel\\Alt+Tab,"+\
" 256,kein Abbruch doch Wechsel mit Alt+Tab\MenuItem,"+\
" 512,Hauptfenster reagiert wie Dialogfenster,1024,Tool-Window: Klein\\nicht in Taskleiste,;"+\
"Kombinationen werden durch Addition der einzelnen Werte erreicht.;"+\
"Damit der Befehl Wirkung zeigt, muss er VOR dem ersten Öffnen des Programmfensters erfolgen!;"+\
"Bildschirmhintergrund klappt nicht wenn Erstfenster mit CLS geöffnet wird.;"+\
"Ideal per Bildschirmschoner ist Stil 240.;"+\
"Der Stil 512 ist dann zu verwenden, wenn ein Programm auf dem Hauptfenster Dialogelemente anlegt.;"+\
"Die Stile 256 und 128 sind nicht mit dem neuen Stil 512 zusammen zu verwenden.;"+\
"Dialogfenster-Stil 512 lässt Dialogelemente auf dem Hauptfenster gem. Standard reagieren, ...;"+\
"ad 512: - mit TAB kann zwischen den Dialogelementen umgeschaltet werden, ...;"+\
"ad 512: - Buttons reagieren nur beim Loslassen des Knopfes, ...;"+\
"ad 512: - Hauptfenster reagiert nicht selbst auf Schließen, sondern es wird %Key=2 gesetzt."
REPEAT
    AppendMenuBar 100,substr$(ws$,mb&+2,";")
    locate 3,1
    whileloop 24:i&=&Loop:print "  ";
        case (i& mod 2) and testbit(fs&,&Loop\2-1):color 15,1
        print " ";substr$(ws$,i&,",");
        if i& mod 2: print "    ";:color 0,15
            else:print:print
        endif
        endwhile:print
        huh:
        Print "   ====   Stil: ";right$("    "+str$(fs&),4);
        print "     Abfrage:              Bsp.: 123, %10, $1F, ";
        color 0,14:print "m > Maus":color 0,15
        ifnot mausabfr&
            locate %csrlin-1,35:input tmp$:case tmp$>"":fs&=val(tmp$)
            if lower$(left$(trim$(tmp$),1))="t"
                TESTWINDOW()
            endif
            if lower$(left$(trim$(tmp$),1))="m":mausabfr&=1
                usepen 0,2,$FFFFFF:usebrush 0,0:rectangle 257,344-370,374
                usepen 0,2,255:rectangle 2,23 - 100,333
                : goto "skip":endif
                if (fs&>=2048) or (fs&<-1):locate %csrlin-1,1:beep:goto "huh":endif
                    case fs&=-1:end
                endif
                skip:
                print "\n   ";right$("    "+str$(fs&),4);"   =   ";
                :Whileloop 10,0,-1:print testbit(fs&,&Loop);"  ";:endwhile:print
                if mausabfr&
                    waitinput
                    if (%mousekey=1) AND mouse(0,24-100,333)
                        bit&=int((%mousey-23)/26):case bit&=0:fs&=0
                        'locate 1,1:print bit&-1;"     ";
                        if testbit(fs&,bit&-1)=0
                            fs&=fs& | (2^(bit&-1))
                        else
                            fs&=(fs&) & (2^31-1-2^(bit&-1))
                        endif
                    else
                        mausabfr&=0:sound 100,30
                        cls:usepen 0,2,255:rectangle 257,344-370,374
                    endif
                endif
                RemoveMenu 100:inc mb&:case mb&>9:mb&=0
            UNTIL the_cows_come_home&
            Proc TestWindow
                var Thdl&=@Create("Window",%HWnd,"SO SIEHT DAS LEIDER NOCH NICHT AUS!",100,100,300,200)
                SetStyle Thdl&,1,GetStyle(Thdl&) | FS&
                waitinput 2000
                if destroywindow(Thdl&)<>1:cls:print "\n\n\n      SORRY, DA LIEF JETZT WAS SCHIEF!"
                    sound 2000,200:waitinput:end:endif
                EndProc
                PROGEND
 | 
 | 
|  | 
|  | | Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 24.05.2021  ▲ | 
 | 
|  | 
| 
 
 
 | 
|  | 
|  Michael
 W.
 | | Ich weiß nicht, was da nicht stimmen sollte. 
 Vor UNTIL fehlt ein Doppelpunkt.
 
 Sonst sieht das gut aus.
 | 
 | 
|  | 
|  |  | 
|  | 
| 
 
 
 | 
|  | 
|  p.specht
 
 
  | | Danke per den Hinweis, Michael - oben korrigiert. | 
 | 
|  | 
|  | | XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 07.06.2021  ▲ | 
 | 
|  | 
| 
 
 
 |