Deutsch
Quelltexte/ Codesnippets

Mehrere Monitore Workarea

 

Georg
Teles
Ist die Erweiterung von [...] 
KompilierenMarkierenSeparieren
'###########################################
'#                                         #
'#  Snippet von Georg Teles am 09.10.2014  #
'#                                         #
'###########################################
 $H Windows.ph
Def GetMonitorInfoA(2)!"user32","GetMonitorInfoA"
Def MonitorFromWindow(2)!"user32","MonitorFromWindow"
Def GetAsyncKeyState(1) ! "user32.dll","GetAsyncKeyState"
Struct RECT = left&,top&,right&,bottom&
Declare rcMonitor#, rcWork#
Dim rcMonitor#, RECT
Dim rcWork#, RECT
STRUCT MONITORINFO = cbSize&, rcMonitor#(16), rcWork#(16), dwFlags&
Declare mon#
Dim mon#, MONITORINFO
mon#.cbSize& = SizeOf(mon#)
CLS
' Information das erste mal in mon# einlesen
GetMonitorInfoA(MonitorFromWindow(%HWnd,2),mon#)' für OK gibt 1 zurück, 0 = Fehler
info()
Usermessages $201

While 1

    Waitinput
    Case %UMessage=$201 : movebymouse()
    info()

EndWhile

Dispose rcWork#
Dispose rcMonitor#
Dispose mon#

Proc movebymouse

    Parameters m&
    Declare mpos#, x1&, y1&
    Dim mpos#,8
    ~GetCursorPos(mpos#)
    var wix&=%winLeft-long(mpos#,0)
    var wiy&=%winTop-long(mpos#,4)

    While iskey(1)

        Sendmessage(%hwnd,$0112,$0F012,0)

    EndWhile

    ' deren (vom aktiven Monitor) Workarea ermitteln erst nachdem das Fenster auf diesen Monitor verschoben wurde
    GetMonitorInfoA(MonitorFromWindow(%HWnd,2),mon#)
    ~GetCursorPos(mpos#)
    x1&=(long(mpos#,0)+wix&)
    case x1&<workarea("Links") : x1&=workarea("Links")
    case x1&>workarea("Rechts")-(%winRight-%winLeft) : x1&=workarea("Rechts")-(%winRight-%winLeft)
    y1&=(long(mpos#,4)+wiy&)
    case y1&<workarea("Oben") : y1&=workarea("Oben")
    case y1&>workarea("Unten")-(%winBottom-%winTop) : y1&=workarea("Unten")-(%winBottom-%winTop)
    setWindowPos %hWnd=x1&,y1& - (%winRight-%winLeft),(%winBottom-%winTop);0
    Dispose mpos#

EndProc

Proc workarea

    Parameters position$
    Declare x%
    case position$="Links":x%=Long(mon#,20)
    case position$="Oben":x%=Long(mon#,24)
    case position$="Rechts":x%=Long(mon#,28)
    case position$="Unten":x%=Long(mon#,32)
    Return x%

EndProc

Proc info

    CLS
    print "cbSize&: ";Long(mon#,0)
    print
    print "hMon X: (left)   - ";Long(mon#,4)
    print "hMon Y: (top)    - ";Long(mon#,8)
    print "hMon W: (right)  - ";Long(mon#,12)
    print "hMon H: (bottom) - ";Long(mon#,16)
    print
    print "WORK X: (left)   - ";Long(mon#,20)
    print "WORK Y: (top)    - ";Long(mon#,24)
    print "WORK W: (right)  - ";Long(mon#,28)
    print "WORK H: (bottom) - ";Long(mon#,32)
    print
    print "dwFlags&:";Long(mon#,36)

EndProc

 
XProfan X2
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

09.10.2014  
 



Ja sowas ist immer sehr nice.

Vlt. als Tipp bei sowas:
KompilierenMarkierenSeparieren
Proc workarea

    Parameters position$
    Declare x%
    case position$="Links":x%=Long(mon#,20)
    case position$="Oben":x%=Long(mon#,24)
    case position$="Rechts":x%=Long(mon#,28)
    case position$="Unten":x%=Long(mon#,32)
    Return x%

EndProc


einfacher immer auch für den Prozessor (also energiesparender):
KompilierenMarkierenSeparieren
Proc workarea

    Parameters pos&// 0L;1O;2R;3U
    return long(mon#,20+pos&*4)

endproc


bzw. für Xpsenutzer:
KompilierenMarkierenSeparieren
workarea(long p){return long(mon#,20+p*4)}

oder nProc:
KompilierenMarkierenSeparieren
Soll heissen dass es sich bei solch aneinanderhängenden Speicherplätzen gut anbietet mit einem Faktor billig direkt zu adressieren.

Muss man net, kann man aber.
 
10.10.2014  
 




Georg
Teles
Ein Freund sagte mir als er meine Codes gesehen hatte (PHP), beim Programmieren soviel wie möglich zu kommentieren & auszuschreiben, Übersichts- & Verständlichkeitshalber für andere Programmierer, er macht es auch beruflich & es arbeiten mehrere Leute an einem Projekt. Das war aber hier unnötige Nebeninfo habe einfach nach der Lösung für mehrere Monitore gesucht & für Andere nachvollziehbar umschrieben wie im vorherigen Workarea bzw. aus Faulheit gelassen ... Spaß beiseite

ja das bietet sich auf jeden Fall an, die xpse Variante gefällt mir am besten.

bin auch der Meinung so wenig wie möglich zu schreiben & viel wie möglich abzukürzen, bei fertigen Programmen entferne ich sogar leere zeilen, Tabs & Leerzeichen
 
XProfan X2
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

10.10.2014  
 



Georg Teles (10.10.14)
bei fertigen Programmen entferne ich sogar leere zeilen, Tabs & Leerzeichen


Irghh.

Das tätentut der xpse in der "enh"-Datei die er zum XProfan-Kompilierer gibt.

Ich spreche mich nicht gegen Kommentare in der Quelle aus sondern eher gegen
"unnötigen" Prozessoraufwand beziehungsweise gegen wenig-effizienten Code.

Bei Funktionen wie hier bei der Workarea ist das vermutlich wumpe da die Funktion
vmtl. kaum regelmäßig aufgerufen wird.

Wollte auch nur bisl Klugscheißen, mache ich regelmäßig - Profilneurosen.
 
10.10.2014  
 




Georg
Teles
( ich sagte ja auch unnötige von mir Info, der erste Satz ) Ich entferne die Zeilen weil ich mit XPSE nur kompiliere, wenn es um nProc's geht ... ja da hast du recht, aus wenig wie möglich soviel wie möglich herauszuholen & elegant wie möglich formulieren, ist die Kunst im Programmieren ( & optimiert ist es ja dann automatisch bzw = optimiert, dann ist es perfekt )
 
XProfan X2
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

10.10.2014  
 



Perfekt wirds nie.

Obwohl das wieder auch nach solch einem Satz wie klingt wie der da lautet: "weltweiter bedarf an homecomputern max 5" -

nichtmal bei der aussage das man sich immer irrt kann man sich nicht irren
 
10.10.2014  
 




Georg
Teles
Wenn man sich 100% sicher ist kann man sich trotzdem irren, das stimmt ... unser Physiklehrer sagte mal: "wenn ich die Hand vor meinem Gesicht halte, bin ich mir nicht sicher, ob zwischen meinen Augen und der Hand nichts (nicht Luft gemeint) ist, denn ich sehe nur das, was meine Augen mir zeigen"

streng genommen sind zB. physikalische Gesetzte Annäherungen an die Wahrheit durch Kalkulation, manchmal basierend auf Beobachtungen, Analyse, Auswertung, ... von gesammelten Daten --- bei menschlichen Emotionen kann das Wort "Cool" eine ganz andere Bedeutung & Empfindungen bei dir herforrufen als bei mir oder jemand anders, selbst wenn man situationsbedingt es richtig aufnimmt, kann es zu Missverständnissen führen wenn mann es ganz genau nimmt

perfekt war schlechte Wortwahl von mir, es wird tatsächlich nichts perfekt sein
 
XProfan X2
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

10.10.2014  
 



Da isser wieder der Bug:

Georg Teles (10.10.14)
es wird tatsächlich nichts perfekt sein


Das Perfekte ist perfekt!
 
10.10.2014  
 




Georg
Teles
würde da das Wort werden stehen, gäbe es kein Bug:

es wird tatsächlich nichts perfekt werden

ich gebe nach, das perfekte ist (bereits) perfekt & wird weiterhin perfekt sein
 
XProfan X2
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

11.10.2014  
 



Georg Teles (11.10.14)
... & wird weiterhin perfekt sein


Sind wir jetzt also erfolgreich im Land der Spekulationen angekommen?
 
11.10.2014  
 




Georg
Teles
scheint so zu sein
 
XProfan X2
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

12.10.2014  
 



Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

15.521 Betrachtungen

Unbenanntvor 0 min.
Georg Teles29.08.2024
Torsten Boo09.06.2022
RudiB.07.02.2022
p.specht20.11.2021
Mehr...

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

Georg Teles (6x)
iF (5x)


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