1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Darter

Beiträge von Darter

  • Autoit´s Multiplayer Tower Defence

    • Darter
    • 2. Januar 2011 um 16:25
    Zitat von Sprenger120


    Größere Berechnungen hmm. Was sollen das denn für welche sein ?
    Alles was man braucht ist doch nur GDI+, TCP, RectCollision und ein Pathfinder

    Hey. Naja dies war auch eher auf den Server bezogen.

    So wie wollen wir da anfangen, habt ihr alle die mitmachen wllen Skype, dann können wir da nen Skypechat auf machen oder TS ?

    mfg Darter

  • Autoit´s Multiplayer Tower Defence

    • Darter
    • 2. Januar 2011 um 06:17

    Moin.

    Hier im Forum gibt es ja schon 2 ziehmlich gute Tower Defence games.
    Nun bin ich letztens auf https://autoit.de/www.creepsmash.com (momentan scheint der server down zu sein ) gestoßen.
    Die Studenten dort haben in Java ein Multiplayer Tower Defence geschaffen.

    Bei diesem Game werden die Creeps nicht einfach vom System her losgeschickt, sondern ein anderer Spieler schickt diese los.
    Durch senden von Creeps bekommt man mehr Einkommen, kann somit mehr Türme bauen usw.

    Das Game ist Grafisch vllt nicht der Oberkracher, aber es hat Suchtfaktor pur (aus eigener Erfahrung :P ).
    Ich will euch hier jetzt nicht das ganze Game erklären, wenn es euch interessiert, schaut einfach mal auf der Seite vorbei.

    So nun zu meinem Gedankengang.
    Ich würde dieses Spiel gerne nachbauen, bzw. ein multiplayer Tower Defence schaffen, welches an dieses angeleht ist.
    Ich selbst bin in GDI+ (ist höchswarscheinlich es zu langsam) nicht gerade der bringer, dafür behersche ich TCP.
    Also suche ich ein paar Leute, die Zeit und Lust haben an diesem Projekt teil zu nehmen.

    Fals diese Projekt überhaupt zu laufen kommt brauchen wir vllt noch jemand, der einen kleinen root server hat, worauf wir den Server laufen lassen können.

    Außerdem wollte ich mich nicht zu 100 % auf Autoit beschränken, größere berechnungen können gerne in Dll´s ausgelagert werden.

    Einfach per Pn oder am besten hier im Thread melden.

    Einfach in Sype adden: darter1232

    mfg Darter

  • Label automatisch vergrößern

    • Darter
    • 15. Dezember 2010 um 19:47
    Zitat von Oscar

    Man kann aber auch das Feld dynamisch verändern (mit ControlMove).

    Dazu kann man auch die Größe des Textes automatisch ermitteln lassen. Funktioniert allerdings nur bei Arial,11 zufriedenstellend:

    Spoiler anzeigen
    [autoit]


    #include <ComboConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WinAPI.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $Form1 = GUICreate("Form1", 615, 440, 192, 124)
    $Label1 = GUICtrlCreateLabel("Label1", 60, 32, 60, 60, $SS_LEFT)
    GUICtrlSetFont(-1, 11, 0, 0, 'Arial')
    GUICtrlSetBkColor(-1, 0xFFFF88)

    [/autoit] [autoit][/autoit] [autoit]

    $Sprache = GUICtrlCreateCombo("Sprache", 290, 32, 145, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
    GUICtrlSetData(-1, "Deutsch|Englisch")
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Sprache
    _Sprache()
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _Sprache()
    Switch GUICtrlRead($Sprache)
    Case "Deutsch"
    _ControlSetTextSize($Form1, $Label1, "Text in deutsch")
    Case "Englisch"
    _ControlSetTextSize($Form1, $Label1, "This is an english text for you?")
    EndSwitch
    EndFunc ;==>_Sprache

    [/autoit] [autoit][/autoit] [autoit]

    Func _ControlSetTextSize($hWnd, $hControl, $sMsg)
    Local $hDC, $tSize, $iX, $iY, $aPos
    $hDC = _WinAPI_GetDC($hWnd)
    $tSize = _WinAPI_GetTextExtentPoint32($hDC, $sMsg)
    $iX = DllStructGetData($tSize, 'X')
    $iY = DllStructGetData($tSize, 'Y')
    $aPos = ControlGetPos($hWnd, '', $hControl)
    ControlMove($hWnd, '', $hControl, $aPos[0], $aPos[1], $iX, $iY)
    GUICtrlSetData($hControl, $sMsg)
    _WinAPI_ReleaseDC($hWnd, $hDC)
    EndFunc

    [/autoit]


    Hier mal mit gelbem Hintergrund um die Abmessungen besser sehen zu können.

    Alles anzeigen

    Bin letztens hierauf gestoßen ^^

    Spoiler anzeigen
    [autoit]

    Func _GetTextSize($nText, $sFont = 'Microsoft Sans Serif', $iFontSize = 8.5, $iFontAttributes = 0)
    ;Author: Bugfix
    ;Modified: funkey
    If $nText = '' Then Return
    Local $hGui = GUICreate("Textmeter by Bugfix")
    _GDIPlus_Startup()
    Local $hFormat = _GDIPlus_StringFormatCreate(0)
    Local $hFamily = _GDIPlus_FontFamilyCreate($sFont)
    Local $hFont = _GDIPlus_FontCreate($hFamily, $iFontSize, $iFontAttributes, 3)
    Local $tLayout = _GDIPlus_RectFCreate(15, 171, 0, 0)
    Local $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGui)
    Local $aInfo = _GDIPlus_GraphicsMeasureString($hGraphic, $nText, $hFont, $tLayout, $hFormat)
    Local $iWidth = Ceiling(DllStructGetData($aInfo[0], "Width"))
    Local $iHeight = Ceiling(DllStructGetData($aInfo[0], "Height"))
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()
    GUIDelete($hGui)
    Local $aSize[2] = [$iWidth, $iHeight]
    Return $aSize
    EndFunc ;==>_GetTextSize

    [/autoit]
  • Mal wieder ein kleines Logigproblem

    • Darter
    • 6. Dezember 2010 um 19:35

    naja, die 3 Punkte ergeben nicht zwangsläufig ein Rechtwinkliges dreieck oder hab ich deinen Post falsch verstanden?

  • Mal wieder ein kleines Logigproblem

    • Darter
    • 6. Dezember 2010 um 18:17

    thx erstmal für die Antworten.

    Ich meine, ich habe eine Punkt P3, dieser liegt aber nicht auf der geraden von P1 und P2, jetzt will ich wissen,wie groß der abstand von Punkt 3 zu der geraden in einem rechten Winkel ist

  • Mal wieder ein kleines Logigproblem

    • Darter
    • 6. Dezember 2010 um 17:40

    Nehmen wir an, ich hab in einem Koordinatensystem 2 Punkte, z.b. P1(5/10) P2(10/15).
    Die Differenz zu diesen 2 Punken auszurechnen ist ja kein großes Problem.

    So hinzu kommt jetzt ein 3 Punkt hinzu, wie berechne ich am einfachsten ob dieser P3 auf der gerade von P1 und P2 liegt.
    Wenn er nicht direkt drauf liegt, sollte ich herausfinden, wie weit er von dieser Geraden entfernt ist.

    ich hoffe man versteht was ich meine und ihr könnt mir helfen :)

  • Macro Recorder

    • Darter
    • 3. Dezember 2010 um 15:21

    Tach auch :)

    Ich wollte nen kleinen Macro recorder schreiben.
    Habe hier mal angefangen, mit nur ein paar Tasten, jedoch scheint mir Autoit zu langsam um die Zeiten exakt einzuhalten 8|
    ich denke der Code versteht sich von selbst

    Spoiler anzeigen
    [autoit]

    #Include <Misc.au3>
    #Include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet('{ESC}','_exit')
    HotKeySet('r','Aufzeichnen')
    HotKeySet('p','Abspielen')

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(200)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func Aufzeichnen()
    Local $aKeys[5] = [25,26,27,28,20], $aCommands[1], $tTimer, $aTmpPressedKeys[1]
    Local $hDll = DllOpen("user32.dll")
    $tTimer = TimerInit()
    Do
    For $i = 0 To UBound($aKeys)-1
    If _IsPressed($aKeys[$i],$hDll) Then
    $bIsPressed = False
    For $j = 1 To UBound($aTmpPressedKeys)-1
    If $aKeys[$i] = $aTmpPressedKeys[$j] Then $bIsPressed = True
    Next

    [/autoit] [autoit][/autoit] [autoit]

    If Not $bIsPressed Then
    _ArrayAdd($aCommands,TimerDiff($tTimer))
    _ArrayAdd($aCommands,$aKeys[$i] & ';1')
    _ArrayAdd($aTmpPressedKeys,$aKeys[$i])
    $tTimer = TimerInit()
    EndIf
    Else
    $bIsPressed = False
    For $j = 1 To UBound($aTmpPressedKeys)-1
    If $aKeys[$i] = $aTmpPressedKeys[$j] Then $bIsPressed = True
    Next
    If $bIsPressed Then
    _ArrayAdd($aCommands,TimerDiff($tTimer))
    _ArrayAdd($aCommands,$aKeys[$i] & ';0')
    For $j = 1 To UBound($aTmpPressedKeys)-1
    If $aKeys[$i] = $aTmpPressedKeys[$j] Then
    _ArrayDelete($aTmpPressedKeys,$j)
    ExitLoop
    EndIf
    Next
    $tTimer = TimerInit()
    EndIf
    EndIf
    Next
    Until _IsPressed('53',$hDll)
    _ArrayDisplay($aCommands)
    FileWrite(@ScriptDir & '\commands.txt',_ArrayToString($aCommands,'|',1))
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Abspielen()
    Local $aKeys[5][2] = [[25,'LEFT'],[26,'UP'],[27,'RIGHT'],[28,'DOWN'],[20,'SPACE']]
    Local $File = FileRead(@ScriptDir & '\commands.txt')
    If @error Then ExitWithErrorMsg("Fehler",'Datei wurde nicht gefunden!')
    Local $aFile = StringSplit($File,'|',2)
    If @error Then ExitWithErrorMsg("Fehler",'Datei ist nicht im richtigen Format!')
    _ArrayDisplay($aFile)
    For $i = 0 To UBound($aFile)-1
    If StringInStr($aFile[$i],';') Then
    Local $aTmp_Comamnd = StringSplit($aFile[$i],';',2)
    If $aTmp_Comamnd[1] = '1' Then
    For $j = 0 To UBound($aKeys)-1
    If $aKeys[$j][0] = $aTmp_Comamnd[0] Then Send('{' & $aKeys[$j][1] & ' down}')
    Next
    ElseIf $aTmp_Comamnd[1] = '0' Then
    For $j = 0 To UBound($aKeys)-1
    If $aKeys[$j][0] = $aTmp_Comamnd[0] Then Send('{' & $aKeys[$j][1] & ' up}')
    Next
    EndIf
    Else
    Local $ttint = TimerInit()
    Do

    [/autoit] [autoit][/autoit] [autoit]

    Until TimerDiff($ttint) >= $aFile[$i]
    EndIf
    Next
    MsgBox(0,"","")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func ExitWithErrorMsg($Title, $Msg)
    MsgBox(0, $Title, $Msg)
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _exit()
    Exit
    EndFunc

    [/autoit]
  • Viele Controls auf einmal verschieben

    • Darter
    • 29. November 2010 um 01:59

    Ich denke du solltest dir am besten mal die GDI+ Funktionen anschauen

  • Gitternetzlinien

    • Darter
    • 23. November 2010 um 15:30

    Ganz einfach die mausposition beim Mausklick abfragen und überprüfen on es in einem von den 9 Quadraten liegt,

    Die Quadrate lassen sich ja auch ganz einfach mit GDI+ zeichnen :)

  • PHP Login Sicherheitstheorie

    • Darter
    • 20. November 2010 um 20:16

    EInfach bei der Registrierung schon festlegen, dass das passwort länger al 8 Zeich sein muss und nicht glehc sein darf wie der Anmeldename, außerdem sollte man ebenfalls einbinden, dass das pw nicht nur aus einem einzellnen Zeichen bestehen darf, also z.b. 9 mal die 1 ^^.

    Wenn man das alles berücksichtigt wird so ein passwort, wenn man es nicht weiter gibt nie zu knacken sein.

    Zusätzlich könnte man bei 5 maliger falscheingabe des passwortes bei der Anmeldung einen sicherheitscode an die benutzeremail schicken.

    Zitat von SlowlyDead

    Achso meinst du das, ich hatte es als einen Hardware-Hash verstanden, um den Account an einen Rechner zu binden.


    finde ich keine gute Idee, wenn sich die Leute mal bei freunden oder sonst wo einloggen wollen wäre dies ja dann nicht möglich :)

  • Mouseclick keine Koordinaten

    • Darter
    • 20. November 2010 um 20:08

    schau dir mal in der hilfe ControlClick an.

    mfg darter

  • Teamspeak 3 UDF

    • Darter
    • 20. November 2010 um 02:53

    na. da wird auch kein Fenster kommen ^^

    EDIT: Wenn du dir die UDF mal genauer anschaust, dann stellst di (vllt) fest, dass das ganza auf TCP aufgebaut ist.
    Jede dieser funktionen lifern dir einen bestimmten Wert zurück(in der Funktionbeschreibung steht, welcher Wert zu erwarten ist ).
    Nun kannst du dir mit hilfe dieser Funktionen sozusagen deinen eigenen kleinen TS3 lient aufbauen, was aber sinnlos wäre ^^.

    Dies funktionen agieren alle anahen eines sogenanntest Query Clients. Mit diesem Query kannst du weder in den jeweiligen channels Sprechen noch hören, diese Querys sind lediglich dazu da um das TS zu Konfiguieren o.ä.

    mfg Darter

  • Teamspeak 3 UDF

    • Darter
    • 20. November 2010 um 02:29
    Zitat von Viperdriver2000

    erstmal danke.
    Aber irgendwie bekomme ich es bei mir net zum laufen.
    Bekomme immer fehler:

    Code
    ERROR: OnAutoItExitRegister(): undefined function.
    OnAutoItExitRegister("_TS3quit")

    vielleicht ist es schon zu spät aber irgendwie bin ich blind warum net ^^

    Lad dir mal die nue version von Autoit runter ^^

  • Doodle Jump für Pc

    • Darter
    • 7. August 2010 um 04:04

    Soweit mir bekannst ist, ist dieses Projekt schon seit längerem abgeschlossen bzw fertig ^^

  • Leerzeichen löschen

    • Darter
    • 5. August 2010 um 14:29

    StringStripWS ( "string", flag )

  • Aero bsp.

    • Darter
    • 3. August 2010 um 17:26

    Hey ich hab mich vor längerem mal an sowas ähnlichem wie den Aero effekt von Win Vista und Win 7 probiert.
    Ist nichts besonderes ich weiß aber vllt gefällts ja jemand ;)

    Spoiler anzeigen
    [autoit]

    #include <WinAPI.au3>
    #include <GDIPlus.au3>
    #include <Array.au3>
    #Include <Misc.au3>
    #include <MyHover.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Enum $GUIMain, $hGUIMain, $GUITitle, $GUIWidth, $GUIHeight, _
    $ScreenDc, $dc, $tSize, $pSize, $tSource, $pSource, $tBlend, $pBlend, $tPoint, $pPoint , $GUIAnz
    Enum $hGDIGraphic, $hGDIBitmap, $hGDIBuffer, $hGDIBitmapCornerUPLeft, $hGDIBitmapCornerUPRight, $hGDIBitmapCornerDownLeft, $hGDIBitmapCornerDownRight, _
    $hGDIBitmapBorderUP, $hGDIBitmapBorderLeftRight, $hGDIBitmapBorderDown, $hBrushRectClient, $hGDIBitmapSysMenueMini, $hGDIBitmapSysMenueMaxiDea, _
    $hGDIBitmapSysMenueClose, $hGDIBitmapSysMenueCloseAkt, $hTmp_Bitmap, $hTmp_Buffer, $hGDIBitmapSysMenueMiniAkt, $hGDIBitmapAutoItIcon, $GDIAnz
    Global $aGUI[$GUIAnz], $aGDI[$GDIAnz], $aRegions[4][4]

    [/autoit] [autoit][/autoit] [autoit]

    _GUICreate("Mein Fenster", 400, 400)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _GUICreate($sTitle, $iWidth, $iHeight)
    Opt("GUIOnEventMode", 1)
    If $iWidth < 150 Then $iWidth = 150
    If $iHeight < 40 Then $iHeight = 40
    $aGUI[$GUITitle] = $sTitle
    $aGUI[$GUIWidth] = $iWidth
    $aGUI[$GUIHeight] = $iHeight
    ;~ $aGUI[$GUIMain] = GUICreate($aGUI[$GUITitle], $aGUI[$GUIWidth], $aGUI[$GUIHeight], -1, -1, 0x80000000)
    $aGUI[$GUIMain] = GUICreate($aGUI[$GUITitle], $aGUI[$GUIWidth], $aGUI[$GUIHeight], -1, -1, 0x80000000, 0x00080000)
    $aGUI[$hGUIMain] = WinGetHandle($aGUI[$GUIMain])
    GUISetOnEvent(-3, "_exit")

    [/autoit] [autoit][/autoit] [autoit]

    $aGUI[$ScreenDc] = _WinAPI_GetDC($aGUI[$GUIMain])
    $aGUI[$dc] = _WinAPI_CreateCompatibleDC($aGUI[$ScreenDc])

    [/autoit] [autoit][/autoit] [autoit]

    $aGUI[$tSize] = DllStructCreate($tagSIZE)
    $aGUI[$pSize] = DllStructGetPtr( $aGUI[$tSize])
    DllStructSetData($aGUI[$tSize], "X", $aGUI[$GUIWidth])
    DllStructSetData($aGUI[$tSize], "Y", $aGUI[$GUIHeight])
    $aGUI[$tSource] = DllStructCreate($tagPOINT)
    $aGUI[$pSource] = DllStructGetPtr($aGUI[$tSource])
    $aGUI[$tBlend] = DllStructCreate($tagBLENDFUNCTION)
    $aGUI[$pBlend] = DllStructGetPtr($aGUI[$tBlend])
    DllStructSetData($aGUI[$tBlend], "Alpha", 255)
    DllStructSetData($aGUI[$tBlend], "Format", 1)
    $aGUI[$tPoint] = DllStructCreate($tagPOINT)
    $aGUI[$pPoint] = DllStructGetPtr($aGUI[$tPoint])
    DllStructSetData($aGUI[$tPoint], "X", 0)
    DllStructSetData($aGUI[$tPoint], "Y", 0)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    GUI_Register_Hover($aGUI[$hGUIMain],0,0,1,1,"nix");Standardmässig mein ersten mal sonst kackt meine UDF ab.
    Init_GDI()
    Draw_Border_Client_SysMenue()
    Update_Window()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Init_GDI()
    _GDIPlus_Startup()
    $aGDI[$hGDIGraphic] = _GDIPlus_GraphicsCreateFromHWND($aGUI[$hGUIMain])
    $aGDI[$hGDIBitmap] = _GDIPlus_BitmapCreateFromGraphics($aGUI[$GUIWidth], $aGUI[$GUIHeight], $aGDI[$hGDIGraphic])
    $aGDI[$hGDIBuffer] = _GDIPlus_ImageGetGraphicsContext($aGDI[$hGDIBitmap])
    $aGDI[$hGDIBitmapCornerUPLeft] = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\Alle Bilder\CornerUPLeft.png")
    $aGDI[$hGDIBitmapCornerUPRight] = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\Alle Bilder\CornerUPRight.png")
    $aGDI[$hGDIBitmapCornerDownLeft] = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\Alle Bilder\CornerDownLeft.png")
    $aGDI[$hGDIBitmapCornerDownRight] = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\Alle Bilder\CornerDownRight.png")
    $aGDI[$hGDIBitmapBorderUP] = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\Alle Bilder\BorderUP.png")
    $aGDI[$hGDIBitmapBorderLeftRight] = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\Alle Bilder\BorderLeftRight.png")
    $aGDI[$hGDIBitmapBorderDown] = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\Alle Bilder\BorderDown.png")
    $aGDI[$hGDIBitmapSysMenueMini] = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\Alle Bilder\SysMenueMini.png")
    $aGDI[$hGDIBitmapSysMenueMaxiDea] = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\Alle Bilder\SysMenueMaxiDea.png")
    $aGDI[$hGDIBitmapSysMenueClose] = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\Alle Bilder\SysMenueClose.png")
    $aGDI[$hGDIBitmapSysMenueCloseAkt] = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\Alle Bilder\SysMenueCloseAkt.png")
    $aGDI[$hGDIBitmapSysMenueMiniAkt] = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\Alle Bilder\SysMenueMiniAkt.png")
    $aGDI[$hGDIBitmapAutoItIcon] = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\Alle Bilder\au3.ico")
    $aGDI[$hBrushRectClient] = _GDIPlus_BrushCreateSolid("0x" & Hex(255, 2) & Hex(240, 2) & Hex(240, 2) & Hex(240, 2))
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Draw_Border_Client_SysMenue()
    #region Corner UP Left
    $iW_CornerUPLeft = _GDIPlus_ImageGetWidth($aGDI[$hGDIBitmapCornerUPLeft])
    $iH_CornerUPLeft = _GDIPlus_ImageGetHeight($aGDI[$hGDIBitmapCornerUPLeft])
    _GDIPlus_GraphicsDrawImageRect($aGDI[$hGDIBuffer], $aGDI[$hGDIBitmapCornerUPLeft], 0, 0, $iW_CornerUPLeft, $iH_CornerUPLeft )
    #endregion

    [/autoit] [autoit][/autoit] [autoit]

    #region Corner UP Right
    $iW_CornerUPRight = _GDIPlus_ImageGetWidth($aGDI[$hGDIBitmapCornerUPRight])
    $iH_CornerUPRight = _GDIPlus_ImageGetHeight($aGDI[$hGDIBitmapCornerUPRight])
    _GDIPlus_GraphicsDrawImageRect($aGDI[$hGDIBuffer], $aGDI[$hGDIBitmapCornerUPRight], $aGUI[$GUIWidth]-$iW_CornerUPRight, 0, $iW_CornerUPRight, $iH_CornerUPRight )
    #endregion

    [/autoit] [autoit][/autoit] [autoit]

    #region Border UP
    $iW_BorderUP = _GDIPlus_ImageGetWidth($aGDI[$hGDIBitmapBorderUP])
    $iH_BorderUP = _GDIPlus_ImageGetHeight($aGDI[$hGDIBitmapBorderUP])

    [/autoit] [autoit][/autoit] [autoit]

    For $i = $iW_CornerUPLeft To $aGUI[$GUIWidth]-$iW_CornerUPRight
    _GDIPlus_GraphicsDrawImageRect($aGDI[$hGDIBuffer], $aGDI[$hGDIBitmapBorderUP], $i, 0, $iW_BorderUP, $iH_BorderUP )
    Next
    #endregion

    [/autoit] [autoit][/autoit] [autoit]

    #region Corner Down Left
    $iW_CornerDownLeft = _GDIPlus_ImageGetWidth($aGDI[$hGDIBitmapCornerDownLeft])
    $iH_CornerDownLeft = _GDIPlus_ImageGetHeight($aGDI[$hGDIBitmapCornerDownLeft])
    _GDIPlus_GraphicsDrawImageRect($aGDI[$hGDIBuffer], $aGDI[$hGDIBitmapCornerDownLeft], 0,$aGUI[$GUIHeight]-$iH_CornerDownLeft, $iW_CornerDownLeft, $iH_CornerDownLeft )
    #endregion

    [/autoit] [autoit][/autoit] [autoit]

    #region Border Left
    $iW_BorderLeftRight = _GDIPlus_ImageGetWidth($aGDI[$hGDIBitmapBorderLeftRight])
    $iH_BorderLeftRight = _GDIPlus_ImageGetHeight($aGDI[$hGDIBitmapBorderLeftRight])

    [/autoit] [autoit][/autoit] [autoit]

    For $i = $iH_CornerUPLeft To $aGUI[$GUIHeight]-$iH_CornerDownLeft
    _GDIPlus_GraphicsDrawImageRect($aGDI[$hGDIBuffer], $aGDI[$hGDIBitmapBorderLeftRight], 0, $i, $iW_BorderLeftRight, $iH_BorderLeftRight )
    Next
    #endregion

    [/autoit] [autoit][/autoit] [autoit]

    #region Corner Down Right
    $iW_CornerDownRight = _GDIPlus_ImageGetWidth($aGDI[$hGDIBitmapCornerDownRight])
    $iH_CornerDownRight = _GDIPlus_ImageGetHeight($aGDI[$hGDIBitmapCornerDownRight])
    _GDIPlus_GraphicsDrawImageRect($aGDI[$hGDIBuffer], $aGDI[$hGDIBitmapCornerDownRight], $aGUI[$GUIWidth]-$iW_CornerDownRight ,$aGUI[$GUIHeight]-$iH_CornerDownLeft, $iW_CornerDownRight, $iH_CornerDownRight )
    #endregion

    [/autoit] [autoit][/autoit] [autoit]

    #region Border Right
    For $i = $iH_CornerUPRight To $aGUI[$GUIHeight]-$iH_CornerDownRight
    _GDIPlus_GraphicsDrawImageRect($aGDI[$hGDIBuffer], $aGDI[$hGDIBitmapBorderLeftRight], $aGUI[$GUIWidth]-$iW_BorderLeftRight, $i, $iW_BorderLeftRight, $iH_BorderLeftRight )
    Next
    #endregion

    [/autoit] [autoit][/autoit] [autoit]

    #region Border Down
    $iW_BorderDown = _GDIPlus_ImageGetWidth($aGDI[$hGDIBitmapBorderDown])
    $iH_BorderDown = _GDIPlus_ImageGetHeight($aGDI[$hGDIBitmapBorderDown])

    [/autoit] [autoit][/autoit] [autoit]

    For $i = $iW_CornerDownLeft To $aGUI[$GUIWidth]-$iW_CornerDownRight
    _GDIPlus_GraphicsDrawImageRect($aGDI[$hGDIBuffer], $aGDI[$hGDIBitmapBorderDown], $i, $aGUI[$GUIHeight]-$iH_CornerDownRight, $iW_BorderDown, $iH_BorderDown )
    Next
    #endregion

    [/autoit] [autoit][/autoit] [autoit]

    #region Client
    _GDIPlus_GraphicsFillRect($aGDI[$hGDIBuffer], $iW_BorderLeftRight, $iH_BorderUP, $aGUI[$GUIWidth]-$iW_BorderLeftRight*2, $aGUI[$GUIHeight]-$iH_BorderUP-$iH_BorderDown,$aGDI[$hBrushRectClient])
    #endregion

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #region SysMenueClose
    $iW_SysMenueClose = _GDIPlus_ImageGetWidth($aGDI[$hGDIBitmapSysMenueClose])
    $iH_SysMenueClose = _GDIPlus_ImageGetHeight($aGDI[$hGDIBitmapSysMenueClose])
    _GDIPlus_GraphicsDrawImageRect($aGDI[$hGDIBuffer], $aGDI[$hGDIBitmapSysMenueClose], $aGUI[$GUIWidth]-$iW_CornerUPRight-$iW_SysMenueClose ,1, $iW_SysMenueClose, $iH_SysMenueClose )
    #endregion

    [/autoit] [autoit][/autoit] [autoit]

    #region SysMenueMaxiDea
    $iW_SysMenueMaxiDea = _GDIPlus_ImageGetWidth($aGDI[$hGDIBitmapSysMenueMaxiDea])
    $iH_SysMenueMaxiDea = _GDIPlus_ImageGetHeight($aGDI[$hGDIBitmapSysMenueMaxiDea])
    _GDIPlus_GraphicsDrawImageRect($aGDI[$hGDIBuffer], $aGDI[$hGDIBitmapSysMenueMaxiDea], $aGUI[$GUIWidth]-$iW_CornerUPRight-$iW_SysMenueClose-$iW_SysMenueMaxiDea ,1, $iW_SysMenueMaxiDea, $iH_SysMenueMaxiDea )
    #endregion

    [/autoit] [autoit][/autoit] [autoit]

    #region SysMenueMaxiDea
    $iW_SysMenueMini = _GDIPlus_ImageGetWidth($aGDI[$hGDIBitmapSysMenueMini])
    $iH_SysMenueMini = _GDIPlus_ImageGetHeight($aGDI[$hGDIBitmapSysMenueMini])
    _GDIPlus_GraphicsDrawImageRect($aGDI[$hGDIBuffer], $aGDI[$hGDIBitmapSysMenueMini], $aGUI[$GUIWidth]-$iW_CornerUPRight-$iW_SysMenueClose-$iW_SysMenueMaxiDea-$iW_SysMenueMini ,1, $iW_SysMenueMini, $iH_SysMenueMini )
    #endregion

    [/autoit] [autoit][/autoit] [autoit]

    #region Set Regions
    $aRegions[0][0] = 0
    $aRegions[0][1] = 0
    $aRegions[0][2] = ($aGUI[$GUIWidth]-$iW_CornerUPRight-$iW_SysMenueClose-$iW_SysMenueMaxiDea-$iW_SysMenueMini)-$aRegions[0][0]-1
    $aRegions[0][3] = $iH_BorderUP-$aRegions[0][1]
    GUI_Register_Hover($aGUI[$hGUIMain],$aRegions[0][0],$aRegions[0][1],$aRegions[0][2],$aRegions[0][3],"HoverTitle",-1,0)
    ;=>Titelleiste

    [/autoit] [autoit][/autoit] [autoit]

    $aRegions[1][0] = $aGUI[$GUIWidth]-$iW_CornerUPRight-$iW_SysMenueClose-$iW_SysMenueMaxiDea-$iW_SysMenueMini
    $aRegions[1][1] = 0
    $aRegions[1][2] = $iW_SysMenueMini
    $aRegions[1][3] = $iH_SysMenueMini-$aRegions[0][1]
    GUI_Register_Hover($aGUI[$hGUIMain],$aRegions[1][0],$aRegions[1][1],$aRegions[1][2],$aRegions[1][3],"HoverSysMenueMiniHide",-1,0)
    GUI_Register_Hover($aGUI[$hGUIMain],$aRegions[1][0],$aRegions[1][1],$aRegions[1][2],$aRegions[1][3],"HoverSysMenueMini","Update_Window")
    ;=>MinimizeBox

    [/autoit] [autoit][/autoit] [autoit]

    $aRegions[2][0] = $aGUI[$GUIWidth]-$iW_CornerUPRight-$iW_SysMenueClose-$iW_SysMenueMaxiDea
    $aRegions[2][1] = 0
    $aRegions[2][2] = $iW_SysMenueMaxiDea
    $aRegions[2][3] = $iH_SysMenueMaxiDea-$aRegions[0][1]
    ;=>MaxBox

    [/autoit] [autoit][/autoit] [autoit]

    $aRegions[3][0] = $aGUI[$GUIWidth]-$iW_CornerUPRight-$iW_SysMenueClose
    $aRegions[3][1] = 0
    $aRegions[3][2] = $iW_SysMenueClose
    $aRegions[3][3] = $iH_SysMenueClose-$aRegions[0][1]
    GUI_Register_Hover($aGUI[$hGUIMain],$aRegions[3][0],$aRegions[3][1],$aRegions[3][2],$aRegions[3][3],"HoverSysMenueCloseonlyExit",-1,0)
    GUI_Register_Hover($aGUI[$hGUIMain],$aRegions[3][0],$aRegions[3][1],$aRegions[3][2],$aRegions[3][3],"HoverSysMenueClose","Update_Window")
    ;=>CloseBox
    #endregion

    [/autoit] [autoit][/autoit] [autoit]

    #region Icon
    _GDIPlus_GraphicsDrawImageRect($aGDI[$hGDIBuffer], $aGDI[$hGDIBitmapAutoItIcon],$iW_BorderLeftRight,7,16,16)
    #endregion

    [/autoit] [autoit][/autoit] [autoit]

    #region Title
    $aTitle = StringSplit($aGUI[$GUITitle],"")
    $sTitle = ""
    If $aTitle[0] > Round($aRegions[0][2]/7) Then
    For $i = 1 To Round($aRegions[0][2]/7)-5
    $sTitle &= $aTitle[$i]
    Next
    $sTitle &= "..."
    _GDIPlus_GraphicsDrawString($aGDI[$hGDIBuffer], $sTitle, $iW_BorderLeftRight+16+5, 7, "Arial",10)
    Else
    _GDIPlus_GraphicsDrawString($aGDI[$hGDIBuffer], $aGUI[$GUITitle], $iW_BorderLeftRight+16+5, 7, "Arial",10)
    EndIf
    #endregion
    ;_ArrayDisplay($aRegions)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func HoverSysMenueClose()
    $aGDI[$hTmp_Bitmap] = _GDIPlus_BitmapCreateFromGraphics($aGUI[$GUIWidth], $aGUI[$GUIHeight], $aGDI[$hGDIGraphic])
    ;~ $aGDI[$hTmp_Bitmap] = _GDIPlus_BitmapCreateFromHBITMAP($aGDI[$hGDIBitmap])
    $aGDI[$hTmp_Buffer] = _GDIPlus_ImageGetGraphicsContext($aGDI[$hTmp_Bitmap])
    _GDIPlus_GraphicsDrawImage($aGDI[$hTmp_Buffer], $aGDI[$hGDIBitmap], 0, 0)

    [/autoit] [autoit][/autoit] [autoit]

    $iW_SysMenueCloseAkt = _GDIPlus_ImageGetWidth($aGDI[$hGDIBitmapSysMenueCloseAkt])
    $iH_SysMenueCloseAkt = _GDIPlus_ImageGetHeight($aGDI[$hGDIBitmapSysMenueCloseAkt])
    _GDIPlus_GraphicsDrawImageRect($aGDI[$hTmp_Buffer], $aGDI[$hGDIBitmapSysMenueCloseAkt], $aRegions[3][0]-6 ,0, $iW_SysMenueCloseAkt, $iH_SysMenueCloseAkt )

    [/autoit] [autoit][/autoit] [autoit]

    Local $gdibitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($aGDI[$hTmp_Bitmap])
    _WinAPI_SelectObject($aGUI[$dc], $gdibitmap)
    _WinAPI_UpdateLayeredWindow($aGUI[$GUIMain], $aGUI[$ScreenDc], 0, $aGUI[$pSize], $aGUI[$dc], $aGUI[$pSource], 0, $aGUI[$pBlend], 2)
    _WinAPI_DeleteObject($gdibitmap)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func HoverSysMenueCloseonlyExit()
    If _IsPressed(01) Then Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func HoverSysMenueMiniHide()
    If _IsPressed(01) Then
    GUISetState(@SW_MINIMIZE,$aGUI[$hGUIMain])
    Update_Window()
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func HoverSysMenueMini()
    $aGDI[$hTmp_Bitmap] = _GDIPlus_BitmapCreateFromGraphics($aGUI[$GUIWidth], $aGUI[$GUIHeight], $aGDI[$hGDIGraphic])
    ;~ $aGDI[$hTmp_Bitmap] = _GDIPlus_BitmapCreateFromHBITMAP($aGDI[$hGDIBitmap])
    $aGDI[$hTmp_Buffer] = _GDIPlus_ImageGetGraphicsContext($aGDI[$hTmp_Bitmap])
    _GDIPlus_GraphicsDrawImage($aGDI[$hTmp_Buffer], $aGDI[$hGDIBitmap], 0, 0)

    [/autoit] [autoit][/autoit] [autoit]

    $iW_SysMenueMiniAkt = _GDIPlus_ImageGetWidth($aGDI[$hGDIBitmapSysMenueMiniAkt])
    $iH_SysMenueMiniAkt = _GDIPlus_ImageGetHeight($aGDI[$hGDIBitmapSysMenueMiniAkt])
    _GDIPlus_GraphicsDrawImageRect($aGDI[$hTmp_Buffer], $aGDI[$hGDIBitmapSysMenueMiniAkt], $aRegions[1][0]-6 ,0, $iW_SysMenueMiniAkt, $iH_SysMenueMiniAkt )

    [/autoit] [autoit][/autoit] [autoit]

    Local $gdibitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($aGDI[$hTmp_Bitmap])
    _WinAPI_SelectObject($aGUI[$dc], $gdibitmap)
    _WinAPI_UpdateLayeredWindow($aGUI[$GUIMain], $aGUI[$ScreenDc], 0, $aGUI[$pSize], $aGUI[$dc], $aGUI[$pSource], 0, $aGUI[$pBlend], 2)
    _WinAPI_DeleteObject($gdibitmap)
    _GDIPlus_GraphicsClear($aGDI[$hTmp_Buffer])
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func HoverTitle()
    If _IsPressed(01) Then
    ;ConsoleWrite("hover title" & @CRLF)
    $aCursorInfo = GUIGetCursorInfo($aGUI[$hGUIMain])
    Do
    $aMousePos = MouseGetPos()
    WinMove($aGUI[$GUIMain],"",$aMousePos[0]-$aCursorInfo[0],$aMousePos[1]-$aCursorInfo[1])
    Sleep(10)
    Until Not _IsPressed(01)
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Update_Window()
    Local $gdibitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($aGDI[$hGDIBitmap])
    _WinAPI_SelectObject($aGUI[$dc], $gdibitmap)
    _WinAPI_UpdateLayeredWindow($aGUI[$GUIMain], $aGUI[$ScreenDc], 0, $aGUI[$pSize], $aGUI[$dc], $aGUI[$pSource], 0, $aGUI[$pBlend], 2)
    _WinAPI_DeleteObject($gdibitmap)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _exit()
    Exit
    EndFunc

    [/autoit]

    Dateien

    AeroGUI.rar 43,77 kB – 596 Downloads
  • GUI Status Bar Bug?!?

    • Darter
    • 2. August 2010 um 20:34

    Das könnte noch ne Idee sein, jedoch beitze ich selbst leider nur ne x64 Verion von Windoof ^^
    vllt kanns ja mal wer mit der x86 Version testen und dann berichten

  • GUI Status Bar Bug?!?

    • Darter
    • 2. August 2010 um 20:32

    Sehr verzwickte sache. Ich werde ich überprüfung wohl erstmal rauslassen vllt sollte jemand den Bug noch im Englischen Forum bekanntgeben,(fals nicht bereits irgendwo aufgeführt)

  • GUI Status Bar Bug?!?

    • Darter
    • 2. August 2010 um 20:28
    Zitat von Ineluki

    Hm... wenn ich es 64 Bit Compile und Techmix Lösungsvorschlag auch noch einbaue, klappt es bei mir.


    Naja und was machen diejenigen, die keine 64 bit version von Windows haben? :thumbdown:

    Oscar dein Scriptt stürtzt bei mir schon direkt im Scite ab, als exe the same

    Zitat von Raupi

    Edit wenn man _GUICtrlStatusBar_GetText wegläßt lauft das Script

    Jop das ist mir bekannt, jedoch hatte ich diese überprüfung extra eingebau, da die Schleife ja alle zehntel sec wiederwohlt wird fängt die Sb an zu flakern

  • GUI Status Bar Bug?!?

    • Darter
    • 2. August 2010 um 20:23

    hmm erstmal dake für die ersten nützlichen Antworten^^

    Werde ich gleichmal probieren, wenn ich die Variablen austausche.
    Aber eig. verste ich da den Unterschied nicht ganz ^^

    @Raubi. Das sich der Fehler da befindet war mir schon so gut wie klar, da es beim auskommendirern dieser Zeilen immer lief^^.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™