UDF > WinAPIEx > System > Heap >


_WinAPI_CreateString

Copie une cha�ne donn�e dans le bloc de m�moire nouvellement allou�e et retourne son pointeur

#include <WinAPIMem.au3>
_WinAPI_CreateString ( $sString [, $pString = 0 [, $iLength = -1 [, $bUnicode = True [, $bAbort = True]]]] )

Param�tres

$sString La cha�ne source � copier.
$pString [optionnel] Un pointeur sur la cha�ne existante qui doit �tre remplac�e par une nouvelle cha�ne.
Si ce param�tre est un pointeur de cha�ne valide, la m�moire sera r�allou�e � une nouvelle cha�ne.
Cependant, la nouvelle m�moire est allou�e � un endroit diff�rent. Par cons�quent, vous devriez toujours utiliser le pointeur que cette fonction retourne.
Si ce param�tre est 0 (par d�faut) ou si le pointeur sur la cha�ne est invalide, la fonction alloue simplement une nouvelle m�moire.
$iLength [optionnel] La longueur de tampon n�cessaire, dans TCHARs, sans le caract�re nul de terminaison.
Si ce param�tre est (-1), la longueur de la m�moire tampon sera �gale � la longueur de la cha�ne source.
Si $iLength est inf�rieure � la cha�ne source, la cha�ne sera tronqu�e � la longueur sp�cifi�e. Par d�faut c'est 1.
$bUnicode [optionnel] Indique si une cha�ne est cod�e Unicode ou ASCII, les valeurs valides sont:
    True - Unicode (par d�faut).
    False - ASCII.
$bAbort [optionnel] Sp�cifie s'il faut quitter le script s'il n'y a pas assez de m�moire, les valeurs valides sont:
    True - Affiche un message d'erreur et termine le script avec le code d'erreur 1 (par d�faut).
    False - Continue le script et retourne une erreur.

Valeur de retour

Succ�s: Retourne le pointeur sur la nouvelle cha�ne termin�e par nul, @extended retourne la longueur de la m�moire tampon de cha�ne, dans TCHARs (non compris le caract�re nul de terminaison).
�chec: Retourne 0.

Remarque

Quand le tampon n'est plus n�cessaire, vous devez le d�truire en appelant la fonction _WinAPI_FreeMemory().

En relation

_WinAPI_FreeMemory

Exemple

#include <GUIConstantsEx.au3>
#include <SendMessage.au3>
#include <WinAPIMem.au3>
#include <WinAPIMisc.au3>
#include <WinAPISysWin.au3>

Global Const $WM_MYMESSAGE = _WinAPI_RegisterWindowMessage('MyMessage')

Local $hForm = GUICreate('Test ' & StringReplace(@ScriptName, '.au3', '()'), 400, 93)
Local $idInput = GUICtrlCreateInput('', 20, 20, 360, 20)
Local $idButton = GUICtrlCreateButton('Send', 165, 59, 70, 23)
GUIRegisterMsg($WM_MYMESSAGE, 'WM_MYMESSAGE')
GUISetState(@SW_SHOW)

Local $pString, $iMsg = GUIGetMsg()
While $iMsg <> $GUI_EVENT_CLOSE
    If $iMsg = $idButton Then
        $pString = _WinAPI_CreateString(GUICtrlRead($idInput))
        _WinAPI_SetMessageExtraInfo($pString)
        _SendMessage($hForm, $WM_MYMESSAGE, 1, 255)
        _WinAPI_FreeMemory($pString)
    EndIf
    $iMsg = GUIGetMsg()
WEnd

Func WM_MYMESSAGE($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg

    Local $pString = _WinAPI_GetMessageExtraInfo()

    If _WinAPI_IsMemory($pString) Then
        ConsoleWrite('WM_MYMESSAGE | WP = ' & Number($wParam) & ' | LP = ' & Number($lParam) & ' | EXTRA = "' & _WinAPI_GetString($pString) & '"' & @CRLF)
    EndIf
EndFunc   ;==>WM_MYMESSAGE