UDF > WinAPIEx > GDI > Font & Text >


_WinAPI_AddFontMemResourceEx

Ajoute une ressource de police au système à partir d'une image mémoire

#include <WinAPIGdi.au3>
_WinAPI_AddFontMemResourceEx ( $pData, $iSize )

Paramètres

$pData Le pointeur sur la ressource de police.
$iSize Le nombre d'octets dans la ressource de police.

Valeur de retour

Succès: Retourne le handle qui identifie les polices qui ont été installés sur le système,
@extended contiendra un certain nombre de polices ajoutées au système à la suite de cet appel.
Échec: Retourne 0.

Remarques

Cette fonction permet à une application d'obtenir une police qui est incorporé dans un document ou une page Web.
Une police qui est ajoutée de cette façon est toujours privée au processus qui a fait l'appel et n'est pas énumérable.

Lorsque la fonction réussit, l'appelant de cette fonction peut libérer la mémoire pointée par $pData parce que le système a fait sa propre copie de la mémoire.
Pour supprimer les polices qui ont été installées, appeler _WinAPI_RemoveFontMemResourceEx().
Toutefois, lorsque le processus s'arrêtera, le système déchargera les polices.

En relation

_WinAPI_RemoveFontMemResourceEx

Voir aussi

Consultez AddFontMemResourceEx dans la librairie MSDN.

Exemple

#include <APIMiscConstants.au3>
#include <APIResConstants.au3>
#include <GUIConstantsEx.au3>
#include <Memory.au3>
#include <MsgBoxConstants.au3>
#include <StaticConstants.au3>
#include <WinAPIGdi.au3>
#include <WinAPIMisc.au3>
#include <WinAPIRes.au3>

Local Const $sJpg = @TempDir & '\~Tech.jpg'

; Charge Resources.dll en mémoire
Local $hInstance = _WinAPI_LoadLibraryEx(@ScriptDir & '\Extras\Resources.dll', $LOAD_LIBRARY_AS_DATAFILE)
If Not $hInstance Then
    MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Error', @ScriptDir & '\Extras\Resources.dll n''est pas trouvé.')
    Exit
EndIf

; Charge une ressource JPEG de la bibliothèque Resources.dll
Local $hResource = _WinAPI_FindResource($hInstance, 'JPEG', 1)
Local $iSize = _WinAPI_SizeOfResource($hInstance, $hResource)
Local $hData = _WinAPI_LoadResource($hInstance, $hResource)
Local $pData = _WinAPI_LockResource($hData)

; Enregistre la ressource dans un fichier jpg
Local $hFile = FileOpen($sJpg, 2 + 16)
Local $tData = DllStructCreate('byte['& $iSize & ']', $pData)
FileWrite($hFile, DllStructGetData($tData, 1))
FileClose($hFile)

; Charge la ressource de police de la bibliothèque Resources.dll
$hResource = _WinAPI_FindResource($hInstance, $RT_FONT, 'TECHNOVIA_CAPS')
$iSize = _WinAPI_SizeOfResource($hInstance, $hResource)
$hData = _WinAPI_LoadResource($hInstance, $hResource)
$pData = _WinAPI_LockResource($hData)

; Ajoute une police en mémoire au système
Local $hFont = _WinAPI_AddFontMemResourceEx($pData, $iSize)

; Charge une ressource SOUND de la bibliothèque Resources.dll
$hResource = _WinAPI_FindResource($hInstance, 'SOUND', 1)
$iSize = _WinAPI_SizeOfResource($hInstance, $hResource)
$hData = _WinAPI_LoadResource($hInstance, $hResource)
$pData = _WinAPI_LockResource($hData)

; Copie WAV en mémoire pour une utilisation ultérieure
Local $hWave = _MemGlobalAlloc($iSize, $GMEM_MOVEABLE)
Local $pWave = _MemGlobalLock($hWave)
_MemMoveMemory($pData, $pWave, $iSize)
; _MemGlobalUnlock ($HWave)

; Charge une ressource STRING de la bibliothèque Resources.dll
Local $sText = _WinAPI_LoadString($hInstance, 1)

; Décharge Resources.dll de la mémoire
_WinAPI_FreeLibrary($hInstance)

; Crée une GUI
GUICreate('Test '& StringReplace(@ScriptName, '.au3', '()'), 350, 350)
GUICtrlCreatePic($sJpg, 0, 0, 350, 350)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlCreateLabel($sText, 10, 18, 330, 36, $SS_CENTER)
GUICtrlSetFont(-1, 30, -1, -1, 'Technovia Caps')
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1, 0xF06000)
Local $idButton = GUICtrlCreateButton('Play Sound', 125, 316, 100, 23)
GUISetState(@SW_SHOW)

Local $iMsg
Do
    $iMsg = GUIGetMsg()
    If $iMsg = $idButton Then
        _WinAPI_PlaySound($pWave, BitOR($SND_ASYNC, $SND_MEMORY, $SND_NOWAIT))
    EndIf
Until $iMsg = $GUI_EVENT_CLOSE 

; Libère les ressources
_WinAPI_RemoveFontMemResourceEx($hFont)
FileDelete($sJpg)