GUIGetMsg() Problem

05/13/2010 18:10 Σternαl.#1
Hey, und schonwieder muss ich euch nerven^^
Ich mach den neuen Thread hier auf, weil es im alten niemand gelesen hätte,
weil das ja ein volkommen anderes Problem/Thema war, also nehmts mir nicht krumm^^

Mein Problem ist:
Ich hab ne GUI erstellt, ohne Rand, ohne Leiste oben, also nur ein Bild.
Natürlich kann man, da die Leiste fehlt, die GUI nicht verschieben.
Da hab ich mir gedacht, dass ich über GUIGetMsg() herausfinde, ob
man auf das Programm draufklickt und wenn man dann die Maus bewegt,
soll die GUI mit der Maus mitkommen, also als würde man es verschieben.
Doch leider hat das ganze jetzt nicht geklappt und ich wollte euch fragen,
ob das grundsätzlich überhaupt möglich ist. Wenn ja, wie?
Wenn nein, gibt es nen anderen Weg, dass ich die GUI verschieben kann?

Btw, GUIGetMsg() hab ich mir schon im AutoIt Forum durchgelesen.

Hier mal ein Bild der GUI:
[Only registered and activated users can see links. Click Here To Register...]

Und hier der Source:
PHP Code:
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>

$Form1 GUICreate("Form1"675443207167$WS_POPUPBitOR($WS_EX_TOPMOST$WS_EX_LAYERED))
GUICtrlCreatePic("C:\Dokumente und Einstellungen\Marius\Eigene Dateien\Eigene Bilder\acccc.bmp", -1, -1676444)
GUISetState(@SW_SHOW)

HotKeySet("{ESC}""_esc")

While 
1
    $msg 
GUIGetMsg()
    If 
$msg $GUI_EVENT_PRIMARYDOWN Then
        
Do
            
$ms MouseGetPos()
            
$Form1 GUICreate("Form1"675443$ms[0], $ms[1], $WS_POPUPBitOR($WS_EX_TOPMOST$WS_EX_LAYERED))
        
Until $msg $GUI_EVENT_PRIMARYUP
    
EndIf
WEnd
        
Func _esc
()
    
GUIDelete()
    Exit
EndFunc 
05/13/2010 18:15 huberhans#2
Versuch mal, anstatt die GUI neu aufzubauen (GUICreate) den Befehl WinMove... Hab's jetzt net getestet, könnte aber funktionieren

PHP Code:
WinMove($Form1,"",$ms[0],$ms[1]) 
05/13/2010 21:58 Σternαl.#3
Ok bewegen klappt jetzt, aber der hört nichmehr auf oO
05/13/2010 22:55 huberhans#4
Quote:
Originally Posted by FooFightah View Post
Ok bewegen klappt jetzt, aber der hört nichmehr auf oO
Hab ich bemerkt, aber momentan noch nicht weiter verfolgt... kannst ja mal 'n wenig rumprobieren, ich schau's mir bei gelegenheit evtl. nochmal an
05/13/2010 22:59 Σternαl.#5
Ja, nur mir fällt kein anderer Weg ein außer Do-Until oO
OK, hab jetzt mehrere Wege ausprobiert.
Mit If und ElseIf kann man immerhin auf das programm klicken, die Maus wegbewegen und wenn man die
Maus wieder loslässt, springt die GUI da hin, wo man die Maus dann hat, aber mitbewegen lässt sie sich nicht.
Ich krig es ums Verrecken nicht hin.
Mittlerweile hab ichs sogar schon so gemacht >.<
PHP Code:
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>

$Form1 GUICreate("Form1"675443207167$WS_POPUPBitOR($WS_EX_TOPMOST$WS_EX_LAYERED))
GUICtrlCreatePic("C:\Dokumente und Einstellungen\Marius\Eigene Dateien\Eigene Bilder\acccc.bmp", -1, -1676444)
GUISetState(@SW_SHOW)

HotKeySet("{ESC}""_esc")

While 
1
    $msg 
GUIGetMsg()
    
$ms MouseGetPos()
    If 
$msg $GUI_EVENT_PRIMARYDOWN Then 
        
Do
            
$ms2 MouseGetPos()
            
WinMove($Form1,"",$ms2[0],$ms2[1])
            
$a 1
        Until Not $msg 
$GUI_EVENT_PRIMARYDOWN
    
ElseIf $msg $GUI_EVENT_PRIMARYUP Then    
        
Do
            
WinMove($Form1""$ms[0], $ms[1])
            
$a += 1
        Until $a 
3
    
EndIf
WEnd
        
Func _esc
()
    
GUIDelete()
    Exit
EndFunc 
05/14/2010 15:00 FichteFoll#6
So funktioniert es:
PHP Code:
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>

$Form1 GUICreate("Form1"675443207167$WS_POPUP$WS_EX_TOPMOST) ; BitOR($WS_EX_TOPMOST$WS_EX_LAYERED)
GUICtrlCreatePic("e:\Unbenannt.jpg", -1, -1676444)
GUISetState(@SW_SHOW)

HotKeySet("{ESC}""_esc")

While 
1
    
Switch GUIGetMsg()
        Case 
$GUI_EVENT_PRIMARYDOWN
            
Do
                
$ms2 MouseGetPos()
                
WinMove($Form1,"",$ms2[0],$ms2[1])
                
$a 1
            Until GUIGetMsg
() = $GUI_EVENT_PRIMARYUP
    
EndSwitch
WEnd

Func _esc
()
    
GUIDelete()
    Exit
EndFunc 
Aber es gibt bei Controls den Stil $GUI_WS_EX_PARENTDRAG
"Erlaubt es dem Label- oder Bild-Control, wie eine Titelleiste angesehen zu werden, um das ganze „parent“-Fenster zu ziehen."

Also zB so:
PHP Code:
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>

$Form1 GUICreate("Form1"675443207167$WS_POPUP$WS_EX_TOPMOST) ; BitOR($WS_EX_TOPMOST$WS_EX_LAYERED)
GUICtrlCreatePic("e:\Unbenannt.jpg"00676444, -1$GUI_WS_EX_PARENTDRAG)
GUISetState(@SW_SHOW)


While 
1
    
Switch GUIGetMsg()
        Case 
$GUI_EVENT_CLOSE
            
Exit
    EndSwitch
WEnd 
05/14/2010 15:16 Σternαl.#7
Quote:
Originally Posted by FichteFoll View Post
So funktioniert es:
PHP Code:
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>

$Form1 GUICreate("Form1"675443207167$WS_POPUP$WS_EX_TOPMOST) ; BitOR($WS_EX_TOPMOST$WS_EX_LAYERED)
GUICtrlCreatePic("e:\Unbenannt.jpg", -1, -1676444)
GUISetState(@SW_SHOW)

HotKeySet("{ESC}""_esc")

While 
1
    
Switch GUIGetMsg()
        Case 
$GUI_EVENT_PRIMARYDOWN
            
Do
                
$ms2 MouseGetPos()
                
WinMove($Form1,"",$ms2[0],$ms2[1])
                
$a 1
            Until GUIGetMsg
() = $GUI_EVENT_PRIMARYUP
    
EndSwitch
WEnd

Func _esc
()
    
GUIDelete()
    Exit
EndFunc 
Aber es gibt bei Controls den Stil $GUI_WS_EX_PARENTDRAG
"Erlaubt es dem Label- oder Bild-Control, wie eine Titelleiste angesehen zu werden, um das ganze „parent“-Fenster zu ziehen."

Also zB so:
PHP Code:
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>

$Form1 GUICreate("Form1"675443207167$WS_POPUP$WS_EX_TOPMOST) ; BitOR($WS_EX_TOPMOST$WS_EX_LAYERED)
GUICtrlCreatePic("e:\Unbenannt.jpg"00676444, -1$GUI_WS_EX_PARENTDRAG)
GUISetState(@SW_SHOW)


While 
1
    
Switch GUIGetMsg()
        Case 
$GUI_EVENT_CLOSE
            
Exit
    EndSwitch
WEnd 
Ich....liebe dich *-*
Du hast mir den Tag gerettet^^
€dit: Wenn du mir jetzt noch sagen kannst, wie ich es hinbekomme, dass die GUI nicht 4Eckig ist, sondern wie irgendein Bild aussieht? Also wie zb beim S4 Launcher^^
05/14/2010 15:59 Benhero#8
Was versucht du hier den Bitte zu Progen? Ein Fake Launcher?

Für was soll das gut sein?

Greatz Benhero
05/14/2010 16:15 Σternαl.#9
Nope, nur ich versuche in Sachen GUI-Erstellung ne Menge dazuzulernen, weil
ich die GUI so hinbekommen will, wie ich es gerne hätte. Und nachdem ich so Sachen
wie zb das Interface/GUI von Avast gesehen hab, wollt ich unbedingt auchmal was
Eigenes in der Richtung machen. Keine Angst, wozu solte ich nen Fake-Launcher machen? oO
05/14/2010 16:37 Benhero#10
... es gibt da so einige möglichkeiten.. egla
@b2t
Würde es reichen die Gui Rund zu machen?
Oder muss es mehr sein?

Greatz Benehro
05/14/2010 16:48 Σternαl.#11
Rund ist meinetwegen auch ok, hauptsache was neues :D

Achja und noch eine Frage, wie krig ich es hin, dass ich sozusagen selbstkreierte Buttons benutzen kann?
Also angenommen ich füg ein Bild in die GUI ein und dieses Bild soll ein Button sein.
In meiner GUI soll der "selbstkreierte Button" das schwarz umrandete rote Kreuz sein.
Wenn man draufkickt soll sich das Programm schließen. Habs mit GUISetOnEvent und GUICtrlSetOnEvent versucht.
Ich hab das rote Kreuz auch extra als eigenes Bild mithinzugefügt, damit man dem ne
eigene Funktion geben kann, aber leider hat bis jetzt nichts davon geklappt, hoffe ihr könnt mir helfen.

[Only registered and activated users can see links. Click Here To Register...]

Hier mal mein Source, falls ihr den braucht.
PHP Code:
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>

Opt("GUIOnEventMode"1)

$Form1 GUICreate("Form1"624442207167$WS_POPUPBitOR($WS_EX_TOPMOST$WS_EX_LAYERED))
$pic1 GUICtrlCreatePic("C:\Dokumente und Einstellungen\Marius\Eigene Dateien\Eigene Bilder\ddugoöud.bmp", -1, -1625443, -1$GUI_WS_EX_PARENTDRAG)
$pic2 GUICtrlCreatePic("C:\Dokumente und Einstellungen\Marius\Eigene Dateien\Eigene Bilder\piece.bmp", -1, -17984, -1$GUI_WS_EX_PARENTDRAG)
GUICtrlSetOnEvent($pic2"_esc")
GUISetState(@SW_SHOW)

HotKeySet("{ESC}""_esc")

While 
1
    
Switch GUIGetMsg()
        Case 
$GUI_EVENT_CLOSE
            
Exit
    EndSwitch
WEnd

Func _esc
()
    
GUIDelete()
    Exit
EndFunc 
05/14/2010 16:52 Benhero#12
Machs so dann sollte es gehen:
PHP Code:
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>

Opt("GUIOnEventMode"1)

$Form1 GUICreate("Form1"624442207167$WS_POPUPBitOR($WS_EX_TOPMOST$WS_EX_LAYERED))
$pic1 GUICtrlCreatePic("C:\Dokumente und Einstellungen\Marius\Eigene Dateien\Eigene Bilder\ddugoöud.bmp", -1, -1625443, -1$GUI_WS_EX_PARENTDRAG)
$pic2 GUICtrlCreatePic("C:\Dokumente und Einstellungen\Marius\Eigene Dateien\Eigene Bilder\piece.bmp", -1, -17984, -1$GUI_WS_EX_PARENTDRAG)
GUISetState(@SW_SHOW)

HotKeySet("{ESC}""_esc")

While 
1
    
Switch GUIGetMsg()
        Case 
$GUI_EVENT_CLOSE
            
Exit
        Case 
$pic2
            
Exit
    EndSwitch
WEnd

Func _esc
()
    
GUIDelete()
    Exit
EndFunc 
Greatz Benhero
05/14/2010 16:58 Σternαl.#13
Nope, funktioniert leider nicht.
Und wie krig ich die GUI jetzt rund?^^
05/14/2010 17:04 Benhero#14
So sollte es gehen: (Gleich mal bissel verändert und gekürzt.
PHP Code:
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>

Opt("GUIOnEventMode"1)

$Form1 GUICreate("Form1"624442207167$WS_POPUPBitOR($WS_EX_TOPMOST$WS_EX_LAYERED))
$pic1 GUICtrlCreatePic("C:\Dokumente und Einstellungen\Marius\Eigene Dateien\Eigene Bilder\ddugoöud.bmp", -1, -1625443, -1$GUI_WS_EX_PARENTDRAG)
$pic2 GUICtrlCreatePic("C:\Dokumente und Einstellungen\Marius\Eigene Dateien\Eigene Bilder\piece.bmp", -1, -17984)
GUISetState(@SW_SHOW)

HotKeySet("{ESC}""_esc")

While 
1
       $k 
=  GUIGetMsg()
       If 
$k $GUI_EVENT_CLOSE Then Exit
       If 
$k $pic2 Then Exit
WEnd

Func _esc
()
    Exit
EndFunc 
Greatz Benhero

Wegen Gui Round machen suche ich noch was... gab da so ein gutes Include was es machte..
05/14/2010 17:10 Σternαl.#15
OK, dann such du mal^^
Aber leider klappts immernoch nicht. Außer die Switch Combi in ne If Combo zu ändern haste ja auch nix gemacht :p
Ich hab irgendwie das Gefühl, dass man GUIGetMsg, $pic2 und $GUI_EVENT_PRIMARYDOWN/$GUI_EVENT_PRIMARYUP
zusammenbringen muss, aber wie?