Hi captain_skank
Not very much complete
But it is a start
For EditorGadget
Code: Select all
#CFM_BOLD = 1
#CFM_ITALIC = 2
#CFM_UNDERLINE = 4
#CFM_STRIKEOUT = 8
#CFM_PROTECTED = $10
#CFM_LINK = $20
#CFM_SMALLCAPS = $40
#CFM_ALLCAPS = $80
#CFM_HIDDEN = $100
#CFM_OUTLINE = $200
#CFM_SHADOW = $400
#CFM_EMBOSS = $800
#CFM_IMPRINT = $1000
#CFM_DISABLED = $2000
#CFM_REVISED = $4000
#CFM_REVAUTHOR = $8000
#CFM_SUPERSCRIPT = $10000
#CFM_SUBSCRIPT = $30000
#CFM_ANIMATION = $40000
#CFM_STYEL = $80000
#CFM_KERNING = $100000
#CFM_SPACING = $200000
#CFM_WEIGHT = $400000
#CFM_UNDERLINETYPE = $800000
#CFM_LCID = $2000000
#CFM_BACKCOLOR = $4000000
#CFM_CHARSET = $8000000
#CFM_OFFSET = $10000000
#CFM_FACE = $20000000
#CFM_COLOR = $40000000
#CFM_SIZE = $80000000
; #CFE_BOLD = 1
; #CFE_ITALIC = 2
; #CFE_UNDERLINE = 4
; #CFE_STRIKEOUT = 8
; #CFE_PROTECTED = $10
; #CFE_LINK = $20
; #CFE_SUBSCRIPT = $10000
; #CFE_SUPERSCRIPT = $20000
; #CFE_AUTOCOLOR = #CFM_COLOR
; #CFE_SMALLCAPS = #CFM_SMALLCAPS
; #CFE_ALLCAPS = #CFM_ALLCAPS
; #CFE_HIDDEN = #CFM_HIDDEN
; #CFE_OUTLINE = #CFM_OUTLINE
; #CFE_SHADOW = #CFM_SHADOW
; #CFE_EMBOSS = #CFM_EMBOSS
; #CFE_IMPRINT = #CFM_IMPRINT
; #CFE_DISABLED = #CFM_DISABLED
; #CFE_REVISED = #CFM_REVISED
; #CFE_AUTOBACKCOLOR = #CFM_BACKCOLOR
#CFU_CF1UNDERLINE = $FF
#CFU_INVERT = $FE
#CFU_UNDERLINETHICKLONGDASH = 18
#CFU_UNDERLINETHICKDOTTED = 17
#CFU_UNDERLINETHICKDASHDOTDOT = 16
#CFU_UNDERLINETHICKDASHDOT = 15
#CFU_UNDERLINETHICKDASH = 14
#CFU_UNDERLINELONGDASH = 13
#CFU_UNDERLINEHEAVYWAVE = 12
#CFU_UNDERLINEDOUBLEWAVE = 11
#CFU_UNDERLINEHAIRLINE = 10
#CFU_UNDERLINETHICK = 9
#CFU_UNDERLINEWAVE = 8
#CFU_UNDERLINEDASHDOTDOT = 7
#CFU_UNDERLINEDASHDOT = 6
#CFU_UNDERLINEDASH = 5
#CFU_UNDERLINEDOTTED = 4
#CFU_UNDERLINEDOUBLE = 3
#CFU_UNDERLINEWORD = 2
#CFU_UNDERLINE = 1
#CFU_UNDERLINENONE = 0
Procedure AutoresizeEG(Gadget)
OldStyle = GetWindowLongPtr_(GadgetID(Gadget),#GWL_STYLE)
For i = 12 To 500 Step 4
MoveWindow_(GadgetID(Gadget),10,10,480,i,1)
SendMessage_(GadgetID(Gadget),#WM_VSCROLL,#SB_TOP,0)
SendMessage_(GadgetID(Gadget),#WM_VSCROLL,#SB_BOTTOM,0)
NewStyle = GetWindowLongPtr_(GadgetID(Gadget),#GWL_STYLE)
If NewStyle <> OldStyle
Break
EndIf
Next
EndProcedure
Procedure LineFormat(Gadget,FName$,FSize,FColor,BColor,FFlags)
format.CHARFORMAT2
format\cbSize = SizeOf(CHARFORMAT2)
format\dwMask = #CFM_FACE|#CFM_COLOR|#CFM_BACKCOLOR|#CFM_SIZE|#CFM_ITALIC|
#CFM_BOLD|#CFM_STRIKEOUT|#CFM_UNDERLINE|#CFM_EMBOSS|
#CFM_OUTLINE|#CFM_SHADOW|#CFM_LINK|#CFM_SUBSCRIPT|
#CFM_SUPERSCRIPT|#CFM_PROTECTED
;format\dwEffects = #CFE_BOLD|#CFE_ITALIC|#CFE_LINK|#CFE_OUTLINE|#CFE_SHADOW|
#CFE_STRIKEOUT|#CFE_AUTOBACKCOLOR|#CFE_AUTOCOLOR|
#CFE_EMBOSS|#CFE_SUBSCRIPT|#CFE_SUPERSCRIPT|#CFE_UNDERLINE
PokeS(@format\szFaceName, FName$)
format\yHeight = FSize*1440/72
format\crTextColor = FColor
format\crBackColor = BColor
format\dwEffects = FFlags
SendMessage_(GadgetID(Gadget), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
EndProcedure
If OpenWindow(0, 0, 0, 500, 500, "EditorGadget", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
EditorGadget(1, 10, 10, 480,12,#PB_Editor_ReadOnly|1) ;0 Left aligned - 1 Center aligned - 2 Right aligned
LineFormat(1,"Forte",52,$0102FE,$02FEFD,#CFM_UNDERLINE|
#CFU_UNDERLINETHICKDASH) ;LineFormat(#Gadget,Font Name,Font Size,Font Color,Font Flags)
AddGadgetItem(1, 0, "This is a RED")
LineFormat(1,"Broadway",24,$73E06D,$02FEFD,#CFM_BOLD)
AddGadgetItem(1, 1, "Times new Roman")
LineFormat(1,"Times new Roman",16,$FB1404,$C5C5C5,#CFM_ANIMATION)
AddGadgetItem(1, 2, "This is Italic and Strikeout")
AddGadgetItem(1, 3, "This is usual Text")
AutoresizeEG(1)
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
For StringGadget
Sparkie code I believe
Code: Select all
Procedure StringGadgetVCenter(GadgetID)
hwndEdit = GadgetID(GadgetID)
LineCount = SendMessage_(hwndEdit,#EM_GETLINECOUNT, 0, 0)
hdc = GetDC_(hwndEdit)
SelectObject_(hdc,GetGadgetFont(0))
GetTextExtentPoint32_(hdc,"ABC",3,fsz.SIZE)
ReleaseDC_(hwndEdit,hdc)
GetClientRect_(hwndEdit,eRect.RECT)
eRect\top = (GadgetHeight(GadgetID) - fsz\cy * LineCount) / 2
eRect\bottom = eRect\top + (fsz\cy * LineCount) + 4
If eRect\bottom < GadgetHeight(GadgetID)
SendMessage_(hwndEdit,#EM_SETRECT,0,eRect)
EndIf
EndProcedure
Text$ = "Vertical and Horizontal" + #CRLF$ + "Centered Text in" + #CRLF$ + "Multiline StringGadget"
OpenWindow(0,0,0,300,200,"Edit Control VCenter",#WS_SYSMENU | #WS_CAPTION | 1)
StringGadget(0,10,10,280,180,Text$,#ES_MULTILINE | #ES_CENTER )
SetGadgetFont(0,LoadFont(0,"Arial",12))
StringGadgetVCenter(0)
LinesNum = SendMessage_(GadgetID(0), #EM_GETLINECOUNT,0,0)
Repeat
EventID = WaitWindowEvent()
Select EventGadget()
Case 0
If EventType() = #PB_EventType_Change And LinesNum <> SendMessage_(GadgetID(0),#EM_GETLINECOUNT,0,0)
LinesNum = SendMessage_(GadgetID(0),#EM_GETLINECOUNT,0,0)
StringGadgetVCenter(0)
EndIf
EndSelect
Until EventID = #PB_Event_CloseWindow