Seite 1 von 2

EditorGadget nachträglich zentrieren

Verfasst: 25.02.2007 16:00
von RSBasic
Hallo ihr lieben,
ich komm mit einer WinAPI nicht weiter trotz im Dingelings Chat. :|
Vielleicht habe ich hier mehr Changes.
Ich habe ein EditorGadget und möchte die Möglichkeit geben das Zentrieren nachträglich zu ändern.
Aber anscheinend ist ein Invalid Memory Access Fehler und weis nicht, wie ich dies behebe.

Code: Alles auswählen

If OpenWindow(0,0,0,500,500,"Vorlage",#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered) 
  If CreateGadgetList(WindowID(0)) 
    EditorGadget(1,10,10,400,400,0) 
     
     
    SendMessage_(GadgetID(1),#ES_CENTER,0,0) 
     
  EndIf 
Repeat 
EventID=WaitWindowEvent() 
If EventID = #PB_Event_CloseWindow 
  Quit=1 
EndIf 
Until Quit=1 
EndIf 
Danke im Vorraus :D

Verfasst: 25.02.2007 16:49
von Fluid Byte
Die #ES_CENTER Konstante ist ein Fensterstil, keine Nachricht:

Code: Alles auswählen

OpenWindow(0,0,0,400,300,"",#WS_OVERLAPPEDWINDOW | 1)
CreateGadgetList(WindowID(0))
EditorGadget(0,5,5,390,290,#ES_CENTER)
While WaitWindowEvent() ! 16 : Wend

Verfasst: 25.02.2007 16:56
von RSBasic
@Fluid Byte
Sry aber, erst lesen und dann schreiben.
Ich möchte aber nachträglich ändern.

Verfasst: 25.02.2007 17:05
von Jilocasin
Dann müsste doch eine Änderung durch...

Code: Alles auswählen

Long = GetWindowLong_(GadgetID(1), #GWL_STYLE)
SetWindowLong_(GadgetID(1), #GWL_STYLE, Long | #ES_CENTER)
...möglich sein, funktioniert aber leider ebenfalls nicht :|

MSDN schreibt dazu:
Although it's not possible to change the alignment style of an edit control dynamically.

Verfasst: 25.02.2007 17:12
von Fluid Byte
RSBasic hat geschrieben:@Fluid Byte
Sry aber, erst lesen und dann schreiben.
Ich möchte aber nachträglich ändern.
Sry aber, erst begreifen worum es geht und dann antworten!

Ich wollte dir nicht zeigen wie man es nachträglich ändern kann sonder klarstellen warum du einen Invalid Memory Access Fehler bekommst. Nämlich weil du den #ES_CENTER Still falsch verwendest hast.

Was das Zentrieren angeht, natürlich kann man das nachträglich noch ändern. Man muss lediglich eine Textauswahl treffen und die Formatierung ändern.

Verfasst: 25.02.2007 17:27
von RSBasic
@Fluid Byte
>Was das Zentrieren angeht, natürlich kann man das nachträglich noch >ändern. Man muss lediglich eine Textauswahl treffen und die >Formatierung ändern.
Und wie?

Verfasst: 25.02.2007 17:39
von Fluid Byte

Code: Alles auswählen

RichEditDLL = OpenLibrary(0,"RICHED32.DLL")

dwFlags = #WS_CHILD | #WS_VISIBLE | #ES_MULTILINE | #WS_VSCROLL | #ES_NOHIDESEL | #ES_AUTOVSCROLL

OpenWindow(0,0,0,300,200,"untitled",#WS_OVERLAPPEDWINDOW | #WS_VISIBLE | 1)

*hwndEditor = CreateWindowEx_(#WS_EX_CLIENTEDGE,"RichEdit",0,dwFlags,5,5,290,190,WindowID(0),0,0,0)

SendMessage_(*hwndEditor,#WM_SETFONT,LoadFont(0,"Arial",9),0)

SendMessage_(*hwndEditor,#WM_SETTEXT,0,"OH" + #LF$ + "MEIN" + #LF$ + "GOTT" + #LF$ + "ES" + #LF$ + "IST" + #LF$ + "ZENTRIERT!")

SendMessage_(*hwndEditor,#EM_SETSEL,0,-1) 

pfmt.PARAFORMAT
pfmt\cbSize = SizeOf(PARAFORMAT)
pfmt\dwMask = #PFM_ALIGNMENT
pfmt\wAlignment = #PFA_CENTER
SendMessage_(*hwndEditor,#EM_SETPARAFORMAT,0,pfmt)

SendMessage_(*hwndEditor,#EM_SETSEL,0,0)

HideWindow(0,0)

While WaitWindowEvent() ! 16 : Wend

Verfasst: 25.02.2007 17:45
von RSBasic
@Fluid Byte
Vielen Dank :allright:

Verfasst: 25.02.2007 17:48
von Fluid Byte
Halte inne mit den Danksagungen!

Es geht noch nen' Tick einfacher, ohne API Editor Gadget:

Code: Alles auswählen

OpenWindow(0,0,0,300,200,"",#WS_OVERLAPPEDWINDOW | #WS_VISIBLE | 1)
CreateGadgetList(WindowID(0))
EditorGadget(0,5,5,290,190,dwFlags)

SetGadgetText(0,"OH" + #LF$ + "MEIN" + #LF$ + "GOTT" + #LF$ + "ES" + #LF$ + "IST" + #LF$ + "ZENTRIERT!")

SendMessage_(GadgetID(0),#EM_SETSEL,0,-1) 

pfmt.PARAFORMAT
pfmt\cbSize = SizeOf(PARAFORMAT)
pfmt\dwMask = #PFM_ALIGNMENT
pfmt\wAlignment = #PFA_CENTER
SendMessage_(GadgetID(0),#EM_SETPARAFORMAT,0,pfmt)

SendMessage_(GadgetID(0),#EM_SETSEL,0,0)

HideWindow(0,0)

While WaitWindowEvent() ! 16 : Wend
So, jetzt darfst du deine Bewunderung kundtun! Bild

Verfasst: 25.02.2007 17:51
von RSBasic
@Fluid Byte
OK, so jetzt aber: Vielen Dank :allright: