Question pour les furieux : SetProp et string !!! ;-) [Résolu]

yomm 515 Messages postés dimanche 17 février 2002Date d'inscription 10 mars 2008 Dernière intervention - 29 juin 2005 à 21:27 - Dernière réponse : yomm 515 Messages postés dimanche 17 février 2002Date d'inscription 10 mars 2008 Dernière intervention
- 30 juin 2005 à 19:42
Salut et merci de venir jeter un coup d'oeil a ma question ;-)

Donc voilà:

en gros c'est super simple :
je veux ,grace a SetProp, pouvoir ajouter une propriété et que celle ci soit de type string
exemple: MaFenetre.Caption = "Coucou je suis le titre"
et bien je veux pouvoir faire un truc du genre :
SetProp MaFenetre.hWnd, "caption", ??????????"Coucou je suis le titre"?????????

en gros c'est le troisième paramètre qui est totalement obscur
je pense bien qu'il doit y avoir un truc genre VarPtr ou StrPtr, ou bien un truc genre un tableau de Byte....
enfin bref , j'ai testé pas mal de truc mais je suis toujours dans le flou !!!!!

Evidemment, je vais avoir besoin de récupérer la valeur plus tard par GetProp ......
Alors là aussi je pense bien a un truc genre VarPtr(GetProp(MaFenetre.hWnd, "caption"))

Mais bon sans grand succès....

Donc merci à kikonke pourrait m'aider !!!!
et bon dev

Yomm

[mailto:yommvb@free.fr yommvb@free.fr]

Et que la source soit avec toi!!!!!
Afficher la suite 

6 réponses

CTAC 133 Messages postés mardi 24 décembre 2002Date d'inscription 8 juin 2012 Dernière intervention - 29 juin 2005 à 22:13
+3
Utile
Bonjour.


J'ai ça en magasin !


ctac


Cet exemple affiche une boite de message dont les paramètres sont stockés dans les propriétés de la fenêtre principale de l'application.


Private Declare Function SetProp& _
Lib "user32" Alias "SetPropA" _
(ByVal Hwnd&, ByVal lpString$, ByVal hData&)


Private Declare Function LocalFree& _
Lib "kernel32" _
(ByVal hMem&)


Private Declare Function LocalAlloc& _
Lib "kernel32" _
(ByVal wFlags&, ByVal wBytes&)


Private Declare Function GetActiveWindow& _
Lib "user32" _
()


Private Declare Function GetProp& _
Lib "user32" Alias "GetPropA" _
(ByVal Hwnd&, ByVal lpString$)


Private Declare Function RemoveProp& _
Lib "user32" Alias "RemovePropA" _
(ByVal Hwnd&, ByVal lpString$)


Private Declare Function lstrlen& _
Lib "kernel32" Alias "lstrlenA" _
(ByVal lpString As Any)


Private Declare Function lstrcpy& _
Lib "kernel32" Alias "lstrcpyA" _
(ByVal lpString1 As Any, ByVal lpString2 As Any)


Sub Demo_SetProp() Const LMEM_FIXED& &H0, LMEM_ZEROINIT& &H40
Dim Hwnd&, MemA&, MemB&, Texte$
Texte = "Utilisation de SetProp" & Chr$(0&)
MemA = LocalAlloc(LMEM_FIXED Or LMEM_ZEROINIT, Len(Texte))
lstrcpy MemA, ByVal Texte
Texte = "Divers paramètres passés par l'intermédiaire de SetProp." & Chr$(0&)
MemB = LocalAlloc(LMEM_FIXED Or LMEM_ZEROINIT, Len(Texte))
lstrcpy MemB, ByVal Texte
Hwnd = GetActiveWindow
SetProp Hwnd, "PropA", MemA
SetProp Hwnd, "PropB", MemB
SetProp Hwnd, "PropC", vbInformation
Affich Hwnd
LocalFree MemA
LocalFree MemB
RemoveProp Hwnd, "PropA"
RemoveProp Hwnd, "PropB"
RemoveProp Hwnd, "PropC"
End Sub


Private Function Affich&(Hwnd&)
Dim Msg$, Titre$
Affich = GetProp(Hwnd, "PropB")
Msg = Space$(lstrlen(Affich))
lstrcpy Msg, Affich
Affich = GetProp(Hwnd, "PropA")
Titre = Space$(lstrlen(Affich))
lstrcpy Titre, Affich
Affich = MsgBox(Msg, GetProp(Hwnd, "PropC"), Titre)
End Function
Cette réponse vous a-t-elle aidé ?  
yomm 515 Messages postés dimanche 17 février 2002Date d'inscription 10 mars 2008 Dernière intervention - 29 juin 2005 à 22:22
0
Utile
je test ça et je te tiens au cournat !

Merci en tout cas !

Yomm

yommvb@free.fr

Et que la source soit avec toi!!!!!
yomm 515 Messages postés dimanche 17 février 2002Date d'inscription 10 mars 2008 Dernière intervention - 29 juin 2005 à 22:37
0
Utile
Nikel !!!!!!

Un grand merci !!!

Yomm

yommvb@free.fr

Et que la source soit avec toi!!!!!
yomm 515 Messages postés dimanche 17 février 2002Date d'inscription 10 mars 2008 Dernière intervention - 29 juin 2005 à 23:43
0
Utile
Pour ceux qui auraient besoin , voici deux fonctions permettant de faire un SetProp et un GetProp avec des chaines de caractères (je sais , c'est pas super clean car il y a pas de LocalFree de fait mais bon...):

Public Declare Function GetProp Lib "user32" Alias "GetPropA" (ByVal hWnd As Long, ByVal lpString As Any) As Long
Public Declare Function SetProp Lib "user32" Alias "SetPropA" (ByVal hWnd As Long, ByVal lpString As String, ByVal hData As Long) As Long

Public Declare Function lstrlenA Lib "kernel32" (lpString As Any) As Long
Public Declare Function lstrcpyA Lib "kernel32" (lpString1 As Any, lpString2 As Any) As Long

Public Declare Function LocalFree Lib "kernel32" (ByVal hMem As Long) As Long
Public Declare Function LocalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal wBytes As Long) As Long

Public Function SetPropS(ByVal hWnd As Long, ByVal lpString As String, ByVal Texte As String) As Long

Dim MemA As Long Const LMEM_FIXED& &H0, LMEM_ZEROINIT& &H40


Texte = Texte & Chr$(0&)
MemA = LocalAlloc(LMEM_FIXED Or LMEM_ZEROINIT, Len(Texte))
lstrcpyA ByVal MemA, ByVal Texte
SetPropS = SetProp(hWnd, lpString, MemA)

End Function


Public Function GetPropS(ByVal hWnd As Long, ByVal lpString As String) As String

Dim MemA As Long

MemA = GetProp(hWnd, lpString)
GetPropS = Space$(lstrlenA(ByVal MemA))
lstrcpyA ByVal GetPropS, ByVal MemA


End Function

Yomm

yommvb@free.fr

Et que la source soit avec toi!!!!!
tbbuim1 940 Messages postés jeudi 20 février 2003Date d'inscription 3 février 2011 Dernière intervention - 30 juin 2005 à 11:15
0
Utile
Et ça sert à quoi, ce que tu veux faire?
TBBUIM
yomm 515 Messages postés dimanche 17 février 2002Date d'inscription 10 mars 2008 Dernière intervention - 30 juin 2005 à 19:42
0
Utile
>> tbbuim1

que veux tu dire ? dans kel context je ve l'utiliser c'est ça?

Yomm

yommvb@free.fr

Et que la source soit avec toi!!!!!

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.