PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Re: LoadPicture ( Charger une image dans un activex )
Re: LoadPicture ( Charger une image dans un activex )
Débuté par Philippe Pasquali, 19 déc. 2006 09:57 - 6 réponses
Posté le 19 décembre 2006 - 09:57
Bonjour
j'ai fait un petit tour sur MSDN :
http://msdn.microsoft.com/library/default.asp…
le premier paramétre est "LPOLESTR szURLorPath" et le second "LPUNKNOWN
punkCaller"
Hors en général quand µ$oft utilise "LP...." c'est un pointeur

donc j'essayerais API("oleaut32.dll","OleLoadPicturePath",&szURLorPath ,
&punkCaller , dwReserved , clrReserved , IID , &oPicture )


Pour info au lieu de faire
"szURLorPath est une chaîne" puis "szURLorPath = strFileName+Caract(0)"
fait
"szURLorPath est une chaîne asciiz sur 1024 = strFileName"
c'est plus simple et tu ne risque pas d'oublier le 0x00 terminal vu qu'il y
est par défaut.




"Aurélia" <Aure_chark@yahoo.fr> a écrit dans le message de news:
4586bd46$1@news.pcsoft.fr...


Bonjour,

Je cherche l'équivalent de la fonction LoadPicture de VB en Windev10.
Il s'agit de charger une image dans l'activex ADDFLOW.

Merci d'avance pour vos solutions.
Aurélia

PS:

Voici une tentative de traduction de cette fonction prise dans un autre
forum, mais elle ne fonctionne pas:

////////////////////////////////////////////////////////////
PROCEDURE LoadPicture(strFileName est une chaîne)

TGUID est une structure
Data1 est un entier sur 4 octets
Data2 est un entier sur 2 octets
Data3 est un entier sur 2 octets
Data4 est un tableau fixe de 8 entiers sur 1 octets
FIN

szURLorPath est une chaîne
punkCaller est un entier sur 4 octets
dwReserved est un entier sur 4 octets
clrReserved est un entier sur 4 octets
oPicture est un objet Automation dynamique
IID est un TGUID

szURLorPath = 0
punkCaller = 0
dwReserved = 0

oPicture = Null
IID:Data1 = 2079852928
IID:Data2 = 48946
IID:Data3 = 4122
IID:Data4[1] = 139
IID:Data4[2] = 187
IID:Data4[3] = 0
IID:Data4[4] = 170
IID:Data4[5] = 0
IID:Data4[6] = 48
IID:Data4[7] = 12
IID:Data4[8] = 171

szURLorPath = strFileName+Caract(0)
API("oleaut32.dll","OleLoadPicturePath",szURLorPath , punkCaller ,
dwReserved , &clrReserved , &IID , &oPicture )
RENVOYER oPicture

////////////////////////////////////////////////////////////

Posté le 19 décembre 2006 - 18:04
Merci Philippe pour ta recherche. ça ne marche toujours pas. Les API, ce n'est pas très simple avec Windev.

Bonnes Fêtes
Auréia
Posté le 19 décembre 2006 - 19:28
Bonsoir
au fait tu cherches à faire quoi exectement avec cette fonction ?

"Aurélia" <Aure_chark@yahoo.fr> a écrit dans le message de news:
45880cbf$1@news.pcsoft.fr...


Merci Philippe pour ta recherche. ça ne marche toujours pas. Les API, ce
n'est pas très simple avec Windev.

Bonnes Fêtes
Auréia

Posté le 19 décembre 2006 - 19:29
Bon je crois avoir trouvé

PROCEDURE Test()

TGUID est une structure
Data1 est un entier sur 4 octets
Data2 est un entier sur 2 octets
Data3 est un entier sur 2 octets
Data4 est un tableau fixe de 8 entiers sur 1 octets
END

//--------------------------------------------------------
// C'EST ICI QU'EST LA GROSSE MODIFICATION
//--------------------------------------------------------
Path est une chaîne ASCIIZ sur 1024 = "C:\WINDOWS\anemones.bmp"
szURLorPath est une chaîne UNICODE sur 2048 = AnsiVersUnicode(Path)

ppvRet est un entier sur 4 octets = 0
IID est un TGUID
oPicture est un objet Automation dynamique
retAPI est un entier sans signe sur 4 octets

oPicture = Null
IID:Data1 = 0x7BF80980
IID:Data2 = 0xBF32
IID:Data3 = 0x101A
IID:Data4[1] = 0x8B
IID:Data4[2] = 0xBB
IID:Data4[3] = 0x00
IID:Data4[4] = 0xAA
IID:Data4[5] = 0x00
IID:Data4[6] = 0x30
IID:Data4[7] = 0x0C
IID:Data4[8] = 0xAB

// Liste des codes erreur
// S_OK = 0x00000000
// E_POINTER = 0x80004003
// E_NOINTERFACE = 0x80004002
// E_OUTOFMEMORY = 0x8007000E
// E_UNEXPECTED = 0x8000FFFF
retAPI = API("oleaut32.dll", "OleLoadPicturePath", &szURLorPath, 0x0, 0x0,
0x0, &IID, &ppvRet)
IF retAPI = 0x0 THEN
info("OK")
else
erreur("Me...")
END


ppvRet contient bien une adresse.........mais aprés, je ne sais pas se kil
fo faire !

"Aurélia" <Aure_chark@yahoo.fr> a écrit dans le message de news:
45880cbf$1@news.pcsoft.fr...


Merci Philippe pour ta recherche. ça ne marche toujours pas. Les API, ce
n'est pas très simple avec Windev.

Bonnes Fêtes
Auréia

Posté le 20 décembre 2006 - 00:28
Merci beaucoup Philippe.
J'ai essayé et effectivement et il n'y a pas d'erreur. Mais la fonction doit renvoyer un
Objet automation:

LoadPicture doit transformer un fichier image en objet OLE.

Node1>>Picture = LoadPicture("C:\WINDOWS\anemones.bmp")

Donc en renvoyant ppvRet , j'ai l'erreur suivante:

Vous accédez au membre Automation Picture.
Erreur 80020005, Type incorrect pour le paramètre -1303343
Erreur 80020005, Type incorrect pour le paramètre 1

Je pense que la solution se profile à l'horizon...

Merci encore
Posté le 20 décembre 2006 - 12:01
Bonjour
Je viens de faire le test avec la version d'évaluation et effectivement ca
ne roule pas...
Dans l'aide de ADDFLOW il n'y a pas d'exemple en C++
Je pense qu'il faudrait envoyer un mail à ton fournisseur pour avoir un
exemple en C++

Des que j'aurais un peut de temps de libre je ferais des recherches sur
internet

"Aurélia" <guest@newsgroup.fr> a écrit dans le message de news:
45886120$1@news.pcsoft.fr...


Merci beaucoup Philippe.
J'ai essayé et effectivement et il n'y a pas d'erreur. Mais la fonction
doit renvoyer un
Objet automation:

LoadPicture doit transformer un fichier image en objet OLE.

Node1>>Picture = LoadPicture("C:\WINDOWS\anemones.bmp")

Donc en renvoyant ppvRet , j'ai l'erreur suivante:

Vous accédez au membre Automation Picture.
Erreur 80020005, Type incorrect pour le paramètre -1303343
Erreur 80020005, Type incorrect pour le paramètre 1

Je pense que la solution se profile à l'horizon...

Merci encore





Posté le 20 décembre 2006 - 16:18
Bonjour,

Dans le répertoire \Samples\ il y a 2 projets en VC++.
J ai déjà contacté Patrick Lassalle ( www.Lassalle.com ), mais il ne connait pas Windev.
Et justemet il recommande de programmer en Windev une fonction équivalente à
LaodPicture de VB. D ailleurs beaucoup d Activex ont recours à cette fonction pour charger des images externes.

Après une recherche sur Internet, cette question revient souvent chez des utilisateurs de Windev mais la solution n'a pas encore été trouvée.

Merci pour ton aide. Si tu y arrives, tu seras champion du monde!!!!