

Code : Tout sélectionner
Enumeration
#IDM_FILE_OPEN
#IDM_EDIT_CUT
#IDM_EDIT_COPY
#IDM_EDIT_PASTE
#IDM_EDIT_DELETE
EndEnumeration
#MENU_OUVRIR = 0
#MENU_QUITTER = 6
#MENU_FONT = 7
#SCF_ALL = 4
#WS_EX_LAYERED = $00080000
#CLSCTX_INPROC_SERVER = $1
#CLSCTX_INPROC_HANDLER = $2
#CLSCTX_LOCAL_SERVER = $4
#CLSCTX_REMOTE_SERVER = $10
#CLSCTX_ALL = (#CLSCTX_INPROC_SERVER|#CLSCTX_INPROC_HANDLER|#CLSCTX_LOCAL_SERVER|#CLSCTX_REMOTE_SERVER)
Procedure InitSpeech()
; PROCEDURE FROM DANILO
Shared VoiceObject
CoInitialize_(0)
If CoCreateInstance_(?CLSID_SpVoice, 0, #CLSCTX_ALL, ?IID_ISpVoice, @VoiceObject) = 0
ProcedureReturn 1
Else
ProcedureReturn 0
EndIf
DataSection
CLSID_SpVoice:
Data.l $96749377
Data.w $3391,$11D2
Data.b $9E,$E3,$00,$C0,$4F,$79,$73,$96
IID_ISpVoice:
Data.l $6C44DF74
Data.w $72B9,$4992
Data.b $A1,$EC,$EF,$99,$6E,$04,$22,$D4
EndDataSection
EndProcedure
Procedure Speak(String.s)
Shared VoiceObject, SelectedVoice, CurrentVolume, CurrentSpeed, CurrentPitch
Text$ = "<voice required="+Chr(34)+"Gender=Male"+Chr(34)+">"+String
; Set Volume
Text$ = "<volume level="+Chr(34)+Str(100)+Chr(34)+"/>"+Text$
; Set Speed
Text$ = "<rate absspeed="+Chr(34)+Str(-2)+Chr(34)+">"+Text$
; Set Pitch
Text$ = "<pitch absmiddle="+Chr(34)+Str(3)+Chr(34)+"/>"+Text$
length = Len(Text$)*2+10
*mem = AllocateMemory(length)
MultiByteToWideChar_(#CP_ACP ,0,Text$,-1,*mem,length)
CallCOM(80,VoiceObject,*mem,0,0)
EndProcedure
Procedure CloseSpeech()
Shared VoiceObject
CallCOM(08,VoiceObject)
CoUninitialize_()
EndProcedure
Procedure Dire(Texte.s)
If InitSpeech()
Speak(Texte)
CloseSpeech()
EndIf
EndProcedure
Global Quit.l,RichEditID.l,rc.RECT,MenuBar.l,WinHandle.l,StatusBar.l,ToolBar.l,file.s
WinHandle = OpenWindow( 0, 0, 0, 800, 600, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered, "Programme ERIX14 (2004)")
SetClassLong_(WinHandle, #GCL_HBRBACKGROUND, 0)
If CreateMenu( 0, WinHandle)
MenuTitle("Fichier")
MenuItem(#MENU_OUVRIR, "Ouvrir...")
MenuItem(#MENU_QUITTER, "Quitter")
MenuTitle("Format")
MenuItem(#MENU_FONT, "Police...")
EndIf
tab.s = Chr(9)
If CreatePopupMenu(1)
MenuItem(#IDM_EDIT_CUT, "Couper"+tab+"Ctl+X")
MenuItem(#IDM_EDIT_COPY, "Copier"+tab+"Ctl+C")
MenuItem(#IDM_EDIT_PASTE, "Coller"+tab+"Ctl+V")
MenuItem(#IDM_EDIT_DELETE, "Suprimer")
EndIf
ToolBar = CreateToolBar( 0, WinHandle)
If ToolBar
ToolBarStandardButton(#IDM_FILE_OPEN, #PB_ToolBarIcon_Open)
ToolBarSeparator()
ToolBarStandardButton(#IDM_EDIT_CUT, #PB_ToolBarIcon_Cut)
ToolBarStandardButton(#IDM_EDIT_COPY, #PB_ToolBarIcon_Copy)
ToolBarStandardButton(#IDM_EDIT_PASTE, #PB_ToolBarIcon_Paste)
ToolBarStandardButton(#IDM_EDIT_DELETE, #PB_ToolBarIcon_Delete)
EndIf
StatusBar = CreateStatusBar( 0, WinHandle)
If CreateGadgetList(WinHandle)
If EditorGadget( 0, 0, 0, 0, 0)
RichEditID = GadgetID(0)
SendMessage_(RichEditID, #EM_LIMITTEXT, -1, 0) ;Enleve la limite de EditorGadget
GetWindowRect_(ToolBar, @rc)
ToolbarHeight = rc\bottom-rc\top
GetWindowRect_(StatusBar, @rc)
StatusBarHeight = rc\bottom-rc\top
GetClientRect_(WinHandle, @rc)
ResizeGadget( 0, 0, ToolbarHeight, rc\right, rc\bottom-ToolbarHeight-StatusBarHeight)
SendMessage_(RichEditID,#EM_SETBKGNDCOLOR,#NULL,RGB(100,100,200))
Taille.l = ?DataFin - ?DataDebut
*MemPtr = AllocateMemory( Taille )
*StrPtr = *MemPtr
*DataPtr = ?DataDebut
For T = 1 To Taille
V.b = PeekB(*DataPtr) & $FF
If V
PokeB(*MemPtr,V)
*MemPtr + 1
EndIf
*DataPtr + 1
Next
PokeB(*MemPtr,0)
SendMessage_(RichEditID,#EM_REPLACESEL,0,*StrPtr)
EndIf
EndIf
CreateThread(@Dire(),"Welcome ? repeat after me ? I love Pure Basic !")
SetForegroundWindow_(WinHandle)
Repeat
Select WaitWindowEvent()
Case #PB_EventMenu
Select EventMenuID()
Case #MENU_OUVRIR
file = OpenFileRequester("Ouvrir", "", "Fichier RTF (*.rtf)|*.rtf", 1)
If file<>""
iFile = OpenFile(#PB_Any, file)
LongFichRTF.l = FileSize(file)
*RTFPtr = AllocateMemory(LongFichRTF)
ReadData(*RTFPtr, LongFichRTF)
CloseFile(iFile)
ClearGadgetItemList(0)
SendMessage_(RichEditID,#EM_REPLACESEL,0,*RTFPtr)
EndIf
Case #MENU_QUITTER
Quit = 1
Dire("Byee Byee")
Case #IDM_EDIT_CUT
SendMessage_(RichEditID, #WM_CUT, 0, 0)
Case #IDM_EDIT_COPY
SendMessage_(RichEditID, #WM_COPY, 0, 0)
Case #IDM_EDIT_PASTE
SendMessage_(RichEditID, #WM_PASTE, 0, 0)
Case #IDM_EDIT_DELETE
SendMessage_(RichEditID, #EM_REPLACESEL, #True, 0)
Case #MENU_FONT
FontName$ = "Arial"
FontSize = 14
Result.l = FontRequester(FontName$, FontSize, #PB_FontRequester_Effects)
If Result
format.CHARFORMAT
format\cbSize = SizeOf(CHARFORMAT)
format\dwMask = #CFM_COLOR | #CFM_FACE | #CFM_SIZE
format\yHeight = SelectedFontSize()*20
PokeS(@format\szFaceName, SelectedFontName())
format\crTextColor = SelectedFontColor()
SendMessage_(GadgetID(Gadget), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
EndIf
EndSelect
Case #WM_RButtonDown
DisplayPopupMenu(1, WinHandle)
Case #WM_SIZE
GetWindowRect_(ToolBar, @rc)
ToolbarHeight = rc\bottom-rc\top
GetWindowRect_(StatusBar, @rc)
StatusBarHeight = rc\bottom-rc\top
GetClientRect_(WindowID(), @rc)
ResizeGadget( 0, 0, ToolbarHeight, rc\right, rc\bottom-ToolbarHeight-StatusBarHeight)
SendMessage_(ToolBar, #TB_AUTOSIZE, 0, 0)
FreeStatusBar(0)
StatusBar = CreateStatusBar(0, WinHandle)
If StatusBar
BarT = WindowWidth() - 120
If BarT < 0 : BarT = 0 : EndIf
AddStatusBarField( 100)
AddStatusBarField( BarT)
StatusBarText(0, 1, "ERIX14 - 2004 -", #PB_StatusBar_BorderLess | #PB_StatusBar_Center)
EndIf
Case #WM_CLOSE
Quit = 1
Dire("Byee Byee")
EndSelect
Until Quit
End
DataSection
DataDebut:
Data.s "{\rtf1\ansi\ansicpg1252\deff0\deftab709{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}{\f1\froman\fprq2\fcharset0 Times;}}"
Data.s "{\colortbl ;\red255\green255\blue255;\red0\green250\blue0;\red128\green0\blue0;\red184\green71\blue71;\red235\green97\blue61;}"
Data.s "\viewkind4\uc1\trowd\trgaph10\trleft-10\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3"
Data.s "\clcbpat4\clbrdrl\brdrw20\brdrs\brdrcf3\clbrdrt\brdrw20\brdrs\brdrcf3\clbrdrr\brdrw1\brdrs\brdrcf3\clbrdrb\brdrw1\brdrs\brdrcf3 "
Data.s "\cellx4808\clcbpat4\clbrdrl\brdrw1\brdrs\brdrcf3\clbrdrt\brdrw20\brdrs\brdrcf3\clbrdrr\brdrw20\brdrs\brdrcf3\clbrdrb\brdrw1\brdrs\brdrcf3 "
Data.s "\cellx9626\pard\intbl\cf1\lang1036\b\f1\cf3\fs44 Bonjour\cell\cf5 ERIX14\cell\row\trowd\trgaph10\trleft-10\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3"
Data.s "\clcbpat1\clbrdrl\brdrw20\brdrs\brdrcf3\clbrdrt\brdrw1\brdrs\brdrcf3\clbrdrr\brdrw1\brdrs\brdrcf3\clbrdrb\brdrw20\brdrs\brdrcf3 "
Data.s "\cellx4808\clcbpat5\clbrdrl\brdrw1\brdrs\brdrcf3\clbrdrt\brdrw1\brdrs\brdrcf3\clbrdrr\brdrw20\brdrs\brdrcf3\clbrdrb\brdrw20\brdrs\brdrcf3 "
Data.s "\cellx9626\pard\intbl\cf2\b0\fs56 I love PureBasic\cell\cf1\b\cell\row\pard\cf0\b0\f0\par}"
DataFin:
EndDataSection
Code : Tout sélectionner
OpenWindow(0, 0, 0, 300, 300, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget, "Mini bloc")
CreateGadgetList(WindowID())
StringGadget(0, 0, 0, 300, 300, "TEXT...", #PB_String_MultiLine)
Repeat
Event = WindowEvent()
If Event = #WM_SIZE ; constante de l'api windows
ResizeGadget(0, 0, 0, WindowWidth(), WindowHeight()) ; on change la taille du gadget avec la taille de la fenetre
EndIf
Until Event = #PB_Event_CloseWindow