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

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

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!

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