Italia
Fonte/ 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#,362>)

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%

c

einfacher immer auch per den Prozessor (also energiesparender):
KompilierenMarkierenSeparieren
Proc workarea

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

endproc


bzw. per 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 possibile zu kommentieren & auszuschreiben, Übersichts- & Verständlichkeitshalber per 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 per mehrere Monitore gesucht & per Andere nachvollziehbar umschrieben wie im vorherigen Workarea bzw. aus Faulheit gelassen ... Divertimento beiseite

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

bin auch der Meinung so wenig wie possibile zu schreiben & viel wie possibile 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"-File 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 presumibilmente 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 possibile soviel wie possibile herauszuholen & elegant wie possibile 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


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

15.627 Views

Untitledvor 0 min.
Georg Teles29.08.2024
Torsten Boo09.06.2022
RudiB.07.02.2022
p.specht20.11.2021
Di più...

Themeninformationen

Dieses Thema hat 2 subscriber:

Georg Teles (6x)
iF (5x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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