EditorGadget nachträglich zentrieren

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

EditorGadget nachträglich zentrieren

Beitrag 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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag 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
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

@Fluid Byte
Sry aber, erst lesen und dann schreiben.
Ich möchte aber nachträglich ändern.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Jilocasin
Beiträge: 665
Registriert: 13.05.2006 16:04
Kontaktdaten:

Beitrag 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.
Bild
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag 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.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag 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?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag 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
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

@Fluid Byte
Vielen Dank :allright:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag 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
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

@Fluid Byte
OK, so jetzt aber: Vielen Dank :allright:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten