- Undo - Redo
- Cut - Copy - Paste
- Justify text : Left - Right - Center - Full
- Set Page size and Page Margins
- Insert Image at Caret position ( No OLE )
And PRINT
Code: Select all
#PFA_JUSTIFY = $4
#PFA_FULL_INTERWORD = $4
#PFA_FULL_INTERLETTER = $5
#PFA_FULL_SCALED = $6
#PFA_FULL_GLYPHS = $7
#PFA_SNAP_GRID = $8
#EC_LEFTMARGIN = $1
#EC_RIGHTMARGIN = $2
#EC_USEFONTINFO = $FFFF
#EM_SETMARGINS = $D3
#EM_GETMARGINS = $D4
#CAPTUREBLT = $40000000
UseJPEGImageEncoder()
UsePNGImageEncoder()
Global width,height,ImX,ImY
Procedure SetAlignment(Gad, Align)
alg.PARAFORMAT2
alg\dwMask = #PFM_ALIGNMENT
alg\cbSize = SizeOf(alg)
alg\wAlignment = Align
SendMessage_(GadgetID(Gad), #EM_SETTYPOGRAPHYOPTIONS, #TO_ADVANCEDTYPOGRAPHY, #TO_ADVANCEDTYPOGRAPHY)
SendMessage_(GadgetID(Gad), #EM_SETPARAFORMAT, 0, alg)
EndProcedure
Procedure SetMargin(Gad, PageW,PageH, LeftM, TopM, RightM, BottomM)
r.RECT
r\left = LeftM
r\top = TopM
r\right = PageW - RightM
r\bottom = PageH - BottomM
width = r\right - r\left
height = r\bottom - r\top
SendMessage_(GadgetID(Gad), #EM_SETRECTNP, 0, r)
;SendMessage_(GadgetID(Gad), #EM_SETRECT, 0, r)
EndProcedure
Procedure WndProc(hwnd, uMsg, wParam, lParam)
result = #PB_ProcessPureBasicEvents
Select uMsg
Case #WM_NOTIFY
Case #WM_GETMINMAXINFO
Case #WM_SIZE,#WM_MOVE,#WM_PAINT
GetClientRect_(WindowID(0),r.RECT)
ResizeGadget(1,10,10,r\right-20,r\bottom-60)
ResizeGadget(2,10,r\bottom-32,r\right-20,r\bottom-60)
If IsGadget(20)
ResizeGadget(20,GadgetX(1)+ImX,GadgetY(1)+ImY,#PB_Ignore, #PB_Ignore)
EndIf
EndSelect
ProcedureReturn result
EndProcedure
CreateImage(1, 250, 350)
StartDrawing(ImageOutput(1))
For x = 0 To 249
For y = 0 To 349
Plot(x,y, RGB(x,y,x*y))
Next
Next
StopDrawing()
If OpenWindow(0, 0, 0,500,400, "EditorGadget", #PB_Window_SystemMenu|#PB_Window_ScreenCentered| #PB_Window_MinimizeGadget| #PB_Window_MaximizeGadget|#PB_Window_SizeGadget)
If CreatePopupMenu(0)
MenuItem(1, "Undo")
MenuItem(2, "Redo")
MenuItem(3, "Cut")
MenuItem(4, "Copy")
MenuItem(5, "Paste")
MenuBar()
OpenSubMenu("Options")
MenuItem(6, "Window...")
MenuItem(7, "Gadget...")
CloseSubMenu()
MenuBar()
MenuItem( 8, "Quit")
EndIf
EditorGadget(1, 10, 10, 480, 350)
SendMessage_(GadgetID(1), #EM_CANUNDO, 0, 0)
SendMessage_(GadgetID(1), #EM_CANREDO, 0, 0)
SendMessage_(GadgetID(1), #EM_SETTARGETDEVICE, 0, 0)
SetMargin(1,450,330,10,10,20,50)
LoadFont(0,"Tahoma",14,#PB_Font_HighQuality)
SetGadgetFont(1,FontID(0))
ContainerGadget(2,10,370,480,22)
ButtonGadget(3,0,0,60,22,"Left")
ButtonGadget(4,65,0,60,22,"Center")
ButtonGadget(5,130,0,60,22,"Right")
ButtonGadget(6,195,0,60,22,"Full")
ButtonGadget(7,300,0,70,22,"Insert Image")
ButtonGadget(8,375,0,60,22,"Print")
CloseGadgetList()
SetWindowCallback(@WndProc())
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit = 1
Case #PB_Event_Gadget
Select EventGadget()
Case 3
SetAlignment(1, #PFA_LEFT)
SetActiveGadget(1)
Case 4
SetAlignment(1,#PFA_CENTER)
SetActiveGadget(1)
Case 5
SetAlignment(1,#PFA_RIGHT)
SetActiveGadget(1)
Case 6
SetAlignment(1,#PFA_JUSTIFY)
SetActiveGadget(1)
Case 7
GrabImage(1,2,0,0,200,200)
GetCaretPos_(p.POINT)
ImageGadget(20,p\x,p\y,200,200,ImageID(2))
SetParent_(GadgetID(20),GadgetID(1))
ImX = GadgetX(20)
ImY = GadgetY(20)
Case 8
GetClientRect_(GadgetID(1),rc.RECT)
ClientToScreen_(GadgetID(1),rc)
If width > 0 And height > 0
width+20
height+20
hBitmap = CreateImage(0,width,height)
hdc = StartDrawing(ImageOutput(0))
SelectObject_(hdc, hBitmap)
BitBlt_(hdc, 0, 0, width+20, height+20, GetDC_(GetDesktopWindow_()), rc\left, rc\top, #SRCCOPY | #CAPTUREBLT)
;StretchBlt_(hdc, 0, 0, width*4, height*4, GetDC_(GetDesktopWindow_()), rc\left, rc\top,width,height,#SRCCOPY | #CAPTUREBLT)
StopDrawing()
EndIf
DeleteDC_(hdc)
;SaveImage(0,"F:\Print_Test.png",#PB_ImagePlugin_PNG)
If PrintRequester()
If StartPrinting("PureBasic Test")
If StartDrawing(PrinterOutput())
DrawImage(ImageID(0), 0, 0,width*4,height*4)
StopDrawing()
EndIf
StopPrinting()
EndIf
EndIf
EndSelect
Case #PB_Event_Menu
Select EventMenu()
Case 1
SendMessage_(GadgetID(1),#EM_UNDO,0,0)
;SendMessage_(GetFocus_(),#WM_UNDO,0,0)
Case 2
SendMessage_(GadgetID(1),#EM_REDO,0,0)
Case 3
SendMessage_(GetFocus_(),#WM_CUT,0,0)
Case 4
SendMessage_(GetFocus_(),#WM_COPY,0,0)
Case 5
SendMessage_(GadgetID(1),#WM_PASTE,0,0)
Case 8
Quit = 1
EndSelect
Case #WM_RBUTTONDOWN
DisplayPopupMenu(0, WindowID(0))
EndSelect
Until Quit = 1
EndIf