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. Nestos

Beiträge von Nestos

  • Free AutoIt Object

    • Nestos
    • 31. Mai 2010 um 02:14
    Zitat von Darter

    Naja ich weiß nicht genau, was das sein soll und das als free autoit Objekt zu bezeichnen ist denke ich mal nicht richtig. das es keine Objekte sind, sondern nur etwas auf eine gui gezeichnet wird.
    Das ist die einige Funktion aus eurer UDF die wirklich wichtig ist und die es im Web so, oder so ähnlich schon 1000 mal gibt.

    Spoiler anzeigen
    [autoit]

    Func _StartUp($title, $width, $height, $X, $Y)
    $hWnd = GUICreate($title, $width, $height, $X, $Y, 0x80000000, BitOR(0x00000080, 0x00080000, 0x00000008))
    GUISetOnEvent(-3, "_ShutDown")
    GUISetState()

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

    _GDIPlus_Startup()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($width, $height, $hGraphic)
    $backbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($backbuffer, 4)

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

    $ScreenDc = _WinAPI_GetDC($hWnd)
    $dc = _WinAPI_CreateCompatibleDC($ScreenDc)

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

    $tSize = DllStructCreate($tagSIZE)
    $pSize = DllStructGetPtr($tSize)
    DllStructSetData($tSize, "X", $width)
    DllStructSetData($tSize, "Y", $height)
    $tSource = DllStructCreate($tagPOINT)
    $pSource = DllStructGetPtr($tSource)
    $tBlend = DllStructCreate($tagBLENDFUNCTION)
    $pBlend = DllStructGetPtr($tBlend)
    DllStructSetData($tBlend, "Alpha", 255)
    DllStructSetData($tBlend, "Format", 1)
    $tPoint = DllStructCreate($tagPOINT)
    $pPoint = DllStructGetPtr($tPoint)
    DllStructSetData($tPoint, "X", 0)
    DllStructSetData($tPoint, "Y", 0)
    EndFunc ;==>_StartUp

    [/autoit]


    diese funktion:

    Spoiler anzeigen
    [autoit]

    Func _AutoIt_FreeObject_StringDraw($String, $WindowTitle, $WindowX, $WindowY, $iSize = 15, $brush = 0xA50029)
    Local $WinPosition = WinGetPos($WindowTitle)
    $State = WinGetState($WindowTitle)
    If BitAND($State, 8) Then
    $Family = _GDIPlus_FontFamilyCreate("Arial")
    $Font = _GDIPlus_FontCreate($Family, $iSize, 1)
    $Layout = _GDIPlus_RectFCreate($WinPosition[0] + $WindowX + 1, $WinPosition[1] + $WindowY + 27, @DesktopWidth, @DesktopHeight)
    $Format = _GDIPlus_StringFormatCreate()
    $brush = _GDIPlus_BrushCreateSolid($brush + 0xFF000000)
    $Info = _GDIPlus_GraphicsMeasureString($backbuffer, $String, $Font, $Layout, $Format)
    _GDIPlus_GraphicsDrawStringEx($backbuffer, $String, $Font, $Info[0], $Format, $brush)
    EndIf
    EndFunc ;==>_AutoIt_FreeObject_StringDraw

    [/autoit]


    ist nichts anderes als die hier aus der gdi+

    Spoiler anzeigen
    [autoit]

    Func _GDIPlus_GraphicsDrawString($hGraphics, $sString, $nX, $nY, $sFont = "Arial", $nSize = 10, $iFormat = 0)
    Local $hBrush = _GDIPlus_BrushCreateSolid()
    Local $hFormat = _GDIPlus_StringFormatCreate($iFormat)
    Local $hFamily = _GDIPlus_FontFamilyCreate($sFont)
    Local $hFont = _GDIPlus_FontCreate($hFamily, $nSize)
    Local $tLayout = _GDIPlus_RectFCreate($nX, $nY, 0, 0)
    Local $aInfo = _GDIPlus_GraphicsMeasureString($hGraphics, $sString, $hFont, $tLayout, $hFormat)
    Local $aResult = _GDIPlus_GraphicsDrawStringEx($hGraphics, $sString, $hFont, $aInfo[0], $hFormat, $hBrush)
    Local $iError = @error
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_BrushDispose($hBrush)
    Return SetError($iError, 0, $aResult)
    EndFunc ;==>_GDIPlus_GraphicsDrawString

    [/autoit]

    und solch eine funktion:

    Spoiler anzeigen
    [autoit]

    Func _GDIPlus_GraphicsDrawRoundedRect($hGraphics, $iX, $iY, $iWidth, $iHeight, $iRadius = 30, $Pen = "")
    _GDIPlus_GraphicsDrawArc($hGraphics, $iX, $iY, $iRadius, $iRadius, 180, 90, $Pen)
    _GDIPlus_GraphicsDrawArc($hGraphics, $iX + $iWidth - $iRadius, $iY, $iRadius, $iRadius, 270, 90, $Pen)
    _GDIPlus_GraphicsDrawArc($hGraphics, $iX, $iY + $iHeight - $iRadius, $iRadius, $iRadius, 90, 90, $Pen)
    _GDIPlus_GraphicsDrawArc($hGraphics, $iX + $iWidth - $iRadius, $iY + $iHeight - $iRadius, $iRadius, $iRadius, 360, 90, $Pen)

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

    _GDIPlus_GraphicsDrawLine($hGraphics, $iX + $iRadius / 2, $iY, $iX + $iWidth - $iRadius / 2, $iY, $Pen)
    _GDIPlus_GraphicsDrawLine($hGraphics, $iX, $iY + $iRadius / 2, $iX, $iY + $iHeight - $iRadius / 2, $Pen)
    _GDIPlus_GraphicsDrawLine($hGraphics, $iX + $iRadius / 2, $iY + $iHeight, $iX + $iWidth - $iRadius / 2, $iY + $iHeight, $Pen)
    _GDIPlus_GraphicsDrawLine($hGraphics, $iX + $iWidth, $iY + $iRadius / 2, $iX + $iWidth, $iY + $iHeight - $iRadius / 2, $Pen)
    EndFunc ;==>_GDIPlus_GraphicsDrawRoundedRect

    [/autoit]


    hat letztens jemand hier im forum veröffentlicht.

    Alles anzeigen

    Ich hab die _StartUp() selbst erstellt, und nur die DllStructs übernommen.

    Und derjenige, der die _GDIPlus_GraphicsDrawRoundedRect() veröffentlicht hat, war auch ich (Obwohl das keine schwierige Sache war :S).

    Und nun zum Thema:
    Ich find die Idee nicht schlecht, und man kann sicher noch viel daraus machen.

    Idee: * * * * *
    Umsetzung: * * * *

  • Gdi+ Tutorial [Part 5]

    • Nestos
    • 30. Mai 2010 um 13:19
    Zitat von Ubuntu

    @All:
    @H1221:
    Wenns passt werde ich das vielleicht noch aufnehmen.
    (Natürlich nur wenn du willst und natürlich wüdest du dann auch in den Cedits stehen.)

    Natürlich darfst du das übernehmen, habs ja nur deswegen geschrieben. ;)

  • Real Dektop Tools [Leute gesucht & in bearbeitung]

    • Nestos
    • 30. Mai 2010 um 13:02

    Wenn ihr noch wen braucht, der sich mit GDI+ auskennt, würde ich euch gerne Behilflich sein. :)

  • Gdi+ Tutorial [Part 5]

    • Nestos
    • 30. Mai 2010 um 11:16

    Da ich keinen neuen Thread aufmachen wollte, schreib ich das hier rein:

    GDI+ Tut: Auf einem transparentem Fenster zeichnen:

    Script
    [autoit]

    #include <GDIPlus.au3>

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

    Opt("GUIOnEventMode", 1)

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

    Global $hWnd, $hGraphic, $hBitmap, $backbuffer
    Global $ScreenDc, $dc, $tSize, $pSize, $tSource, $pSource, $tBlend, $pBlend, $tPoint, $pPoint, $gdibitmap
    Global $title = "GDI+ Beispiel: Transparentes Fenster", _
    $width = 150, _
    $height = 150

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

    _StartUp()

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

    _GDIPlus_GraphicsDrawRoundedRect($backbuffer, 0, 0, $width - 1, $height - 1, 15)

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

    _UpDate()

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

    While 1
    Sleep(100)
    WEnd

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

    Func _StartUp()
    $hWnd = GUICreate($title, $width, $height, -1, -1, 0x80000000, BitOR(0x00000080, 0x00080000, 0x00000008))
    GUISetOnEvent(-3, "_ShutDown")
    GUISetState()

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

    _GDIPlus_Startup()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($width, $height, $hGraphic)
    $backbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($backbuffer, 4)

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

    $ScreenDc = _WinAPI_GetDC($hWnd)
    $dc = _WinAPI_CreateCompatibleDC($ScreenDc)

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

    $tSize = DllStructCreate($tagSIZE)
    $pSize = DllStructGetPtr($tSize)
    DllStructSetData($tSize, "X", $width)
    DllStructSetData($tSize, "Y", $height)
    $tSource = DllStructCreate($tagPOINT)
    $pSource = DllStructGetPtr($tSource)
    $tBlend = DllStructCreate($tagBLENDFUNCTION)
    $pBlend = DllStructGetPtr($tBlend)
    DllStructSetData($tBlend, "Alpha", 255)
    DllStructSetData($tBlend, "Format", 1)
    $tPoint = DllStructCreate($tagPOINT)
    $pPoint = DllStructGetPtr($tPoint)
    DllStructSetData($tPoint, "X", 0)
    DllStructSetData($tPoint, "Y", 0)
    EndFunc

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

    Func _ShutDown()
    _WinAPI_DeleteDC($dc)
    _WinAPI_ReleaseDC($hWnd, $ScreenDc)
    _GDIPlus_GraphicsDispose($backbuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()
    GUIDelete($hWnd)
    Exit
    EndFunc

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

    Func _UpDate()
    $gdibitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
    _WinAPI_SelectObject($dc, $gdibitmap)
    _WinAPI_UpdateLayeredWindow($hWnd, $ScreenDc, 0, $pSize, $dc, $pSource, 0, $pBlend, 2)
    _WinAPI_DeleteObject($gdibitmap)
    EndFunc

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

    Func _GDIPlus_GraphicsDrawRoundedRect($hGraphics, $iX, $iY, $iWidth, $iHeight, $iRadius = 30, $Pen = "")
    _GDIPlus_GraphicsDrawArc($hGraphics, $iX, $iY, $iRadius, $iRadius, 180, 90, $Pen)
    _GDIPlus_GraphicsDrawArc($hGraphics, $iX + $iWidth - $iRadius, $iY, $iRadius, $iRadius, 270, 90, $Pen)
    _GDIPlus_GraphicsDrawArc($hGraphics, $iX, $iY + $iHeight - $iRadius, $iRadius, $iRadius, 90, 90, $Pen)
    _GDIPlus_GraphicsDrawArc($hGraphics, $iX + $iWidth - $iRadius, $iY + $iHeight - $iRadius, $iRadius, $iRadius, 360, 90, $Pen)

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

    _GDIPlus_GraphicsDrawLine($hGraphics, $iX + $iRadius / 2, $iY, $iX + $iWidth - $iRadius / 2, $iY, $Pen)
    _GDIPlus_GraphicsDrawLine($hGraphics, $iX, $iY + $iRadius / 2, $iX, $iY + $iHeight - $iRadius / 2, $Pen)
    _GDIPlus_GraphicsDrawLine($hGraphics, $iX + $iRadius / 2, $iY + $iHeight, $iX + $iWidth - $iRadius / 2, $iY + $iHeight, $Pen)
    _GDIPlus_GraphicsDrawLine($hGraphics, $iX + $iWidth, $iY + $iRadius / 2, $iX + $iWidth, $iY + $iHeight - $iRadius / 2, $Pen)
    EndFunc

    [/autoit]

    Das gute daran, auf einem transparentem Fenster zu zeichnen ist, dass man nicht immer neuzeichnen muss.
    Das heißt:
    Wenn man am Anfang vom Script, nach dem Aufruf von _StartUp() was in den Buffer zeichnet, bleibt das solange am Bildschirm, bis man die Graphic mit _GDIPlus_GraphicsClear($backbuffer, 0x00000000) leert, oder das Script beendet.

  • Abgerundetes Rechteck (GDI+ Form)

    • Nestos
    • 30. Mai 2010 um 10:36

    Hier mal kurz und bündig ;) :

    [autoit]

    Func _GDIPlus_GraphicsDrawRoundedRect($hGraphics, $iX, $iY, $iWidth, $iHeight, $iRadius = 30, $Pen = "")
    _GDIPlus_GraphicsDrawArc($hGraphics, $iX, $iY, $iRadius, $iRadius, 180, 90, $Pen)
    _GDIPlus_GraphicsDrawArc($hGraphics, $iX + $iWidth - $iRadius, $iY, $iRadius, $iRadius, 270, 90, $Pen)
    _GDIPlus_GraphicsDrawArc($hGraphics, $iX, $iY + $iHeight - $iRadius, $iRadius, $iRadius, 90, 90, $Pen)
    _GDIPlus_GraphicsDrawArc($hGraphics, $iX + $iWidth - $iRadius, $iY + $iHeight - $iRadius, $iRadius, $iRadius, 360, 90, $Pen)

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

    _GDIPlus_GraphicsDrawLine($hGraphics, $iX + $iRadius / 2, $iY, $iX + $iWidth - $iRadius / 2, $iY, $Pen)
    _GDIPlus_GraphicsDrawLine($hGraphics, $iX, $iY + $iRadius / 2, $iX, $iY + $iHeight - $iRadius / 2, $Pen)
    _GDIPlus_GraphicsDrawLine($hGraphics, $iX + $iRadius / 2, $iY + $iHeight, $iX + $iWidth - $iRadius / 2, $iY + $iHeight, $Pen)
    _GDIPlus_GraphicsDrawLine($hGraphics, $iX + $iWidth, $iY + $iRadius / 2, $iX + $iWidth, $iY + $iHeight - $iRadius / 2, $Pen)
    EndFunc

    [/autoit]

    Edit:
    Hier noch als Fill Funktion. ;)

    [autoit]

    Func _GDIPlus_GraphicsFillRoundedRect($hGraphics, $iX, $iY, $iWidth, $iHeight, $iRadius = 30, $Brush = "")
    _GDIPlus_GraphicsFillPie($hGraphics, $iX, $iY, $iRadius, $iRadius, 180, 90, $Brush)
    _GDIPlus_GraphicsFillPie($hGraphics, $iX + $iWidth - $iRadius, $iY, $iRadius, $iRadius, 270, 90, $Brush)
    _GDIPlus_GraphicsFillPie($hGraphics, $iX, $iY + $iHeight - $iRadius, $iRadius, $iRadius, 90, 90, $Brush)
    _GDIPlus_GraphicsFillPie($hGraphics, $iX + $iWidth - $iRadius, $iY + $iHeight - $iRadius, $iRadius, $iRadius, 360, 90, $Brush)

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

    _GDIPlus_GraphicsFillRect($hGraphics, $iX, $iY + $iRadius / 2 - 1, $iWidth, $height - $iRadius + 1, $Brush)
    _GDIPlus_GraphicsFillRect($hGraphics, $iX + $iRadius / 2 - 1, $iY, $iWidth - $iRadius + 2, $height, $Brush)
    EndFunc

    [/autoit]
  • Abgerundetes Rechteck (GDI+ Form)

    • Nestos
    • 29. Mai 2010 um 22:44

    Ersetz:

    [autoit]

    _GDIPlus_GraphicsDrawPie()

    [/autoit]

    Durch:

    [autoit]

    _GDIPlus_GraphicsDrawArc()

    [/autoit]

    Sind die selben Parameter. ;)

  • Gdi+ Tutorial

    • Nestos
    • 28. Mai 2010 um 16:37

    Du könntest transparenten Hintergrund und drehung mit Sin Cos oder auch Matrizen einfügen, dass würd mich intressieren. ^^

  • Happy Birthday GtaSpider

    • Nestos
    • 27. Mai 2010 um 19:19

    Von mir auch alles Gute!

  • Tempelsoft.de = Klau-Seite?

    • Nestos
    • 23. Mai 2010 um 20:09

    Also sowas ist doch echt einmal armselig.

    Wenn du schon willst, dass deine Seite groß rauskommt, dann schreib gefälligst deine eigenen Programme.
    Es ist doch einfach das Letzte, von anderen Leuten die Arbeit zu stehlen um damit selber gut dazustehen.

    Ich finde du hast es mehr als verdient, dass dein Name, deine Addresse und der Name deiner Website hier stehen. Ich bin auch gegen die Löschung dieser Posts, damit jeder sehen kann, was du wirklich kannst. Und das ist nicht mehr als kopieren und umschreiben.

    Wenn man einen Fehler macht, sollte man dazu stehen, und nicht versuchen alles zu verwischen. Es weiß sowieso immer irgendwer, was du getahn hast, und es wird auch imme irgendjemand wissen.

    MfG,
    H2112.

  • Letzte Erinnerung - Die Rache der verlorenen Seelen [2D-RPG]

    • Nestos
    • 21. Mai 2010 um 16:15

    Ich hab mich ja eigentlich schon gemeldet. ;)

  • Avi in GUI

    • Nestos
    • 18. Mai 2010 um 20:38
    [autoit]

    GUICtrlCreateAvi()

    [/autoit]
  • [IN ARBEIT] Neues Design?!?

    • Nestos
    • 17. Mai 2010 um 20:12

    Ich hatte gerade Langeweile, also hab ich dir ein neues Logo gemacht (Nichts besonderes, also erhoff dir nicht alzuviel xD).

    Bilder

    • INRadio.png
      • 18,44 kB
      • 300 × 100
  • PerfectSoft - Eine Art AutoIt-Firma?

    • Nestos
    • 16. Mai 2010 um 20:46

    Ich hatte einmal das selbe Problem.

    Nachdem wir einen neuen Router, Firewall und Splitter bekommen haben, gings. ^^

  • RichEdit Text unlöschbar

    • Nestos
    • 16. Mai 2010 um 17:19

    Hab ich vor. ;)

  • RichEdit Text unlöschbar

    • Nestos
    • 16. Mai 2010 um 16:58

    Danke. :D
    Genau den selben Ansatz hatte ich auch, bin aber nicht auf das Case Else gekommen. ;)

    Edit: Das funktioniert irgendwie doch nicht. Jetzt wird der Text, der protect ist, zwar nicht mehr gelöscht, aber danach kann man alle anderen Buchstaben auch nicht mehr löschen. :(
    Edit2: Hab jetzt erst den Post von Progandy gesehen, Danke funktioniert! :D

  • RichEdit Text unlöschbar

    • Nestos
    • 16. Mai 2010 um 16:31

    Danke Autobert, jetzt hab ichs geschafft, dass ich die Nachricht abfange.

    Nun weiß ich jedoch nicht, wie ich verhindern soll, dass der Text gelöscht wird.

    Bisheriger Code
    [autoit]

    #AutoIt3Wrapper_Au3Check_Parameters= -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #include <GuiRichEdit.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    Opt('MustDeclareVars', 1)

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

    Global $lblMsg, $hRichEdit, $hGui

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

    Main()

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

    Func Main()
    Local $iMsg, $btnNext, $iStep = 0
    $hGui = GUICreate("Example (" & StringTrimRight(@ScriptName,4) &")", 320, 350, -1, -1)
    $hRichEdit = _GUICtrlRichEdit_Create($hGui, "This is a test.", 10, 10, 300, 220, _
    BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
    $lblMsg = GUICtrlCreateLabel("", 10, 235, 300, 60)
    $btnNext = GUICtrlCreateButton("Next", 270, 310, 40, 30)
    GUISetState()

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

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    _GuiCtrlRichEdit_SetText($hRichEdit, "Paragraph 1 ")
    _GuiCtrlRichEdit_SetEventMask($hRichEdit, $ENM_PROTECTED)
    While True
    $iMsg = GUIGetMsg()
    Select
    Case $iMsg = $GUI_EVENT_CLOSE
    GUIDelete()
    Exit
    Case $iMsg = $btnNext
    $iStep += 1
    Switch $iStep
    Case 1
    _GuiCtrlRichEdit_SetSel($hRichEdit, 0, 2)
    _GuiCtrlRichEdit_SetCharAttributes($hRichEdit, "+un")
    Report("1. Two characters underlined")
    Case 2
    _GuiCtrlRichEdit_SetSel($hRichEdit, 1, 5)
    ;~ _GuiCtrlRichEdit_SetCharAttributes($hRichEdit, "+bo")
    _GuiCtrlRichEdit_SetCharAttributes($hRichEdit, "+pr")
    Report("2. Some characters protect")
    Case 3
    ; Stream all text to the Desktop so you can look at settings in Word
    _GuiCtrlRichEdit_Deselect($hRichEdit)
    _GuiCtrlRichEdit_StreamToFile($hRichEdit, @DesktopDir & "\gcre.rtf")
    GUICtrlSetState($btnNext, $GUI_DISABLE)
    EndSwitch
    EndSelect
    WEnd
    EndFunc ;==>Main

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

    Func WM_NOTIFY($hWnd, $iMsg, $iWparam, $iLparam)
    #forceref $hWnd, $iMsg, $iWparam
    Local $iCode, $tNMHDR
    $tNMHDR = DllStructCreate($tagNMHDR, $iLparam)
    $iCode = DllStructGetData($tNMHDR, "Code")
    Select
    Case $iCode = $EN_PROTECTED
    MsgBox(0, "", "")
    EndSelect
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

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

    Func Report($sMsg)
    $sMsg = $sMsg & @CR & @CR & _GUICtrlRichEdit_GetCharAttributes($hRichEdit)
    GUICtrlSetData($lblMsg, $sMsg)
    ControlFocus($hRichEdit, "", "")
    EndFunc ;==>Report

    [/autoit]
  • RichEdit Text unlöschbar

    • Nestos
    • 16. Mai 2010 um 15:24

    Gefunden hab ich bis jetzt noch keine. :S

  • RichEdit Text unlöschbar

    • Nestos
    • 16. Mai 2010 um 15:03

    Wie der Titel schon sagt, will ich einen bestimmten Text in einem RichEdit unlöschbar machen.
    Nun komm ich aber nicht weiter.

    Ich hab die Hilfe durchforstet, und bin dabei auf diese beiden Funktionen gestoßen:

    [autoit]

    _GUICtrlRichEdit_SetEventMask() & _GUICtrlRichEdit_SetCharAttributes()

    [/autoit]


    Mit

    [autoit]

    _GUICtrlRichEdit_SetCharAttributes()

    [/autoit]

    kann man den Text auf Protect stellen.
    Jetzt kann man den Text jedoch immernoch löschen.

    Mit

    [autoit]

    _GUICtrlRichEdit_SetEventMask()

    [/autoit]

    kann man $ENM_PROTECTED auf das RichEdit-Controle registrieren, welches dann immer, wenn man einen geschützten Text löschen will, eine $EN_PROTECTED Benachrichtigung bekommt.

    Nun weiß ich nicht, wie ich die Nachricht abfragen soll, oder was ich tun muss, wenn er die Nachricht bekommt.

    Danke schonmal für eure Hilfe. :)

    MfG,
    H2112

    Edit:

    Lösung
    [autoit]

    #AutoIt3Wrapper_Au3Check_Parameters= -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #include <GuiRichEdit.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    Opt('MustDeclareVars', 1)

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

    Global $lblMsg, $hRichEdit, $hGui

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

    Main()

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

    Func Main()
    Local $iMsg, $btnNext, $iStep = 0
    $hGui = GUICreate("Example (" & StringTrimRight(@ScriptName,4) &")", 320, 350, -1, -1)
    $hRichEdit = _GUICtrlRichEdit_Create($hGui, "This is a test.", 10, 10, 300, 220, _
    BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
    $lblMsg = GUICtrlCreateLabel("", 10, 235, 300, 60)
    $btnNext = GUICtrlCreateButton("Next", 270, 310, 40, 30)
    GUISetState()

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

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    _GuiCtrlRichEdit_SetText($hRichEdit, "Paragraph 1 ")
    _GuiCtrlRichEdit_SetEventMask($hRichEdit, $ENM_UPDATE)
    _GuiCtrlRichEdit_SetEventMask($hRichEdit, $ENM_PROTECTED)
    While True
    $iMsg = GUIGetMsg()
    Select
    Case $iMsg = $GUI_EVENT_CLOSE
    GUIDelete()
    Exit
    Case $iMsg = $btnNext
    $iStep += 1
    Switch $iStep
    Case 1
    _GuiCtrlRichEdit_SetSel($hRichEdit, 0, 2)
    _GuiCtrlRichEdit_SetCharAttributes($hRichEdit, "+un")
    Report("1. Two characters underlined")
    Case 2
    _GuiCtrlRichEdit_SetSel($hRichEdit, 1, 5)
    ;~ _GuiCtrlRichEdit_SetCharAttributes($hRichEdit, "+bo")
    _GuiCtrlRichEdit_SetCharAttributes($hRichEdit, "+pr")
    Report("2. Some characters protect")
    Case 3
    ; Stream all text to the Desktop so you can look at settings in Word
    _GuiCtrlRichEdit_Deselect($hRichEdit)
    _GuiCtrlRichEdit_StreamToFile($hRichEdit, @DesktopDir & "\gcre.rtf")
    GUICtrlSetState($btnNext, $GUI_DISABLE)
    EndSwitch
    EndSelect
    WEnd
    EndFunc ;==>Main

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

    Func WM_NOTIFY($hWnd, $iMsg, $iWparam, $iLparam)
    #forceref $hWnd, $iMsg, $iWparam
    Local $iCode, $tNMHDR
    $tNMHDR = DllStructCreate($tagNMHDR, $iLparam)
    $iCode = DllStructGetData($tNMHDR, "Code")
    Select
    Case $iCode = $EN_PROTECTED
    Return 1
    EndSelect
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

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

    Func Report($sMsg)
    $sMsg = $sMsg & @CR & @CR & _GUICtrlRichEdit_GetCharAttributes($hRichEdit)
    GUICtrlSetData($lblMsg, $sMsg)
    ControlFocus($hRichEdit, "", "")
    EndFunc ;==>Report

    [/autoit]
  • Filin

    • Nestos
    • 16. Mai 2010 um 13:44
    Zitat von Alina

    Herzlich Willkommen im Forum.

    Das nenn ich Epic-Fail. :rofl:

  • Worms

    • Nestos
    • 16. Mai 2010 um 13:18

    Stimmt nicht ganz:
    Roms dürfen runtergeladen und gespielt werden, solange man das Originale besitzt. ;)

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™