Utilisation d'OLE

Résolu
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 - 15 mai 2003 à 10:35
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 - 23 déc. 2004 à 12:36
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

yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
23 déc. 2004 à 12:36
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 ;)
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 mai 2003 à 10:41
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...
0
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
15 mai 2003 à 11:04
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 :)
0
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
15 mai 2003 à 11:19
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
15 mai 2003 à 11:26
Merci, je l'imprime puis je cours passer cette fichue épreuve :p
0
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
15 mai 2003 à 16:31
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 ? :(
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 mai 2003 à 20:28
#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...
0
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
15 mai 2003 à 21:32
Yes c'est excellent ! Je vais étudier çà de près, merci pour ton aide, et merci à Kaid aussi :)
0
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
15 mai 2003 à 22:47
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
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 mai 2003 à 23:13
rien de tel que VS pour faire du win32.
BruNews, ciao...
0
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
15 mai 2003 à 23:43
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 :(
0
Rejoignez-nous