Utilisation d'OLE [Résolu]

Signaler
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
-
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
-
Bonjour à tous !

Je dois utiliser (un peu contre mon gré) l'API OLE pour lier des fichiers bitmap à un controle richedit, mais je ne sais pas du tout par où commencer, je suis un peu perdu et l'aide m'est aussi cristalline que le maniscrit d'Einstein sur la théorie de la relativité...

J'ai donc deux questions, principalement :

1) C'est quoi une interface OLE ? D'après un code source trouvé sur codeguru, j'aurais besoin d'implémenter IDataObject et IUnknown mais je ne sais même pas ce que c'est :s

2) Le code que j'ai trouvé est en C++, suis je obligé d'utiliser C++ pour utiliser OLE ou puis je le faire en C ?

Merci d'avance :)

11 réponses

Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
Comme je pense que Nebula l'as déjà vu (ma source), ce message n'est pas pour lui mais pour toutes les autres personnes qui souhaitent insérer un bitmap dans un richedit.
Voici l'adresse de ma source :

http://www.cppfrance.com/code.aspx?ID=28353

Si vous avez un pb avec, contactez-moi.

YOYO, @+.
:big) YOYO ;)
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
A cela je peux repondre chouia. Rassure toi, C++ et ses classes n'est requis absolument nulle part, tu peux tout faire en C.
Faut que tu commences la doc au debut de COM pour comprendre les pointeurs d'interface, ils implementent des proprietes et des methodes.
Je crois qu'il y a eu source de publiee sur comment creer des raccourcis, cela te donnera une idee. Si tu ne trouves pas l'exemple je t'en passerai un.
BruNews, ciao...
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
Hum, une recherche sur OLE et COM m'a donné un jeu de cartes (?) et une réponse de ta part sur le pilotage de Word via OleAutomation, mais rien de bien probant :(

Je vais lire la section COM de win32.hlp, si tu pouvais me préparer quelques exemples (simples !!! lol) d'utilisation ce serait sympa :)

Arf faut pas que j'oublie le BTS d'éco droit aussi... Je reviens vers 16h je pense ! Merci à toi :)
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006

Voici l'URL de ma source sur la gestion des raccourcis Windows dont parlait BruNews:
KLINK - CLASSE DE GESTION DES LIENS WINDOWS

Kaid - kaid.fr.st
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
Merci, je l'imprime puis je cours passer cette fichue épreuve :p
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
hum j'ai lu ta source ainsi que le site dont tu t'es inspiré et j'ai pas tout compris, enfin sur le fond oui mais le C++ m'ennuie... faut pas oublier que j'ai appris que le C, et encore depuis pas longtemps :p

jvais essayer d'adapter tout çà mais je doute du résultat, personne a un exemple d'utilisation en C ? :(
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
#include <windows.h>
#include <shlobj.h>

char *szappname = "Shortcut";

int __stdcall CreateShortcut(char* szflSrc, char* szLink, char *szTooltip)
{
IShellLink* psl;
HANDLE hheap;
WORD* pwsz;
IPersistFile* ppf;
int bOK;
if(CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
IID_IShellLink, (LPVOID*) &psl)) return 0; hheap GetProcessHeap(); bOK 0; if((pwsz (WORD*) HeapAlloc(hheap, 0, MAX_PATH*2)) 0) goto outPsl;
if(psl->QueryInterface(IID_IPersistFile, (LPVOID *) &ppf)) goto outHeap;
psl->SetPath(szflSrc); psl->SetDescription(szTooltip);
if(MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szLink, -1, pwsz, MAX_PATH)) bOK (ppf->Save(pwsz, TRUE) 0);
ppf->Release();
outHeap: HeapFree(hheap, 0, pwsz);
outPsl: psl->Release();
return bOK;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, int)
{
if(CoInitialize(NULL)) return 0;
if(!CreateShortcut("D:\\Sfmg\\AccesSFMG.doc", "D:\\AccesSFMG.lnk", "UN TEST"))
MessageBox(NULL, "Shortcut raté", szappname, MB_ICONEXCLAMATION);
CoUninitialize();
return 0;
}

Excuse j'avais pas vu ton retour. Change les noms de fichiers dans WinMain();
Tout est en C et API, va bon ?
BruNews, ciao...
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
Yes c'est excellent ! Je vais étudier çà de près, merci pour ton aide, et merci à Kaid aussi :)
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
Hum, pas si génial que çà :s

J'obtiens çà avec GCC:

test.c: In function `CreateShortcut':
test.c:14: incompatible type for argument 1 of `CoCreateInstance'
test.c:14: incompatible type for argument 4 of `CoCreateInstance'
test.c:17: structure has no member named `QueryInterface'
test.c:18: structure has no member named `SetPath'
test.c:18: structure has no member named `SetDescription'
test.c:20: structure has no member named `Save'
test.c:21: structure has no member named `Release'
test.c:23: structure has no member named `Release'
test.c: In function `WinMain':
test.c:27: parameter name omitted
test.c:27: parameter name omitted
test.c:27: parameter name omitted


Et çà avec BCC:

test.c:
Error E2342 test.c 14: Type mismatch in parameter 'rclsid' (wanted 'const _GUID
* const', got '_GUID') in function CreateShortcut
Error E2342 test.c 14: Type mismatch in parameter 'riid' (wanted 'const _GUID *
const', got '_GUID') in function CreateShortcut
Error E2451 test.c 17: Undefined symbol 'QueryInterface' in function CreateShort
cut
Error E2451 test.c 18: Undefined symbol 'SetPath' in function CreateShortcut
Error E2451 test.c 18: Undefined symbol 'SetDescription' in function CreateShort
cut
Error E2451 test.c 20: Undefined symbol 'Save' in function CreateShortcut
Error E2451 test.c 21: Undefined symbol 'Release' in function CreateShortcut
Error E2451 test.c 23: Undefined symbol 'Release' in function CreateShortcut
Warning W8057 test.c 25: Parameter 'szflSrc' is never used in function CreateSho
rtcut
Warning W8057 test.c 25: Parameter 'szTooltip' is never used in function CreateS
hortcut
Error E2287 test.c 28: Parameter 2 missing name in function WinMain
Error E2287 test.c 28: Parameter 3 missing name in function WinMain
Error E2287 test.c 28: Parameter 4 missing name in function WinMain
Warning W8057 test.c 34: Parameter 'hInstance' is never used in function WinMain


Bon les noms omis, c'est pas un drame, mais le reste :s
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
rien de tel que VS pour faire du win32.
BruNews, ciao...
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
Encore faut il avoir le moyen de se le payer :-/

Tant pis, je garde ton code dans un coin au cas où, merci quand meme :(