Utilisation d'OLE [Résolu]

cs_Nebula 790 Messages postés samedi 8 juin 2002Date d'inscription 7 juin 2007 Dernière intervention - 15 mai 2003 à 10:35 - Dernière réponse : yoyo269 1403 Messages postés lundi 23 février 2004Date d'inscription 11 janvier 2009 Dernière intervention
- 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 :)
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
yoyo269 1403 Messages postés lundi 23 février 2004Date d'inscription 11 janvier 2009 Dernière intervention - 23 déc. 2004 à 12:36
3
Merci
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 ;)

Merci yoyo269 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de yoyo269
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 15 mai 2003 à 10:41
0
Merci
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...
Commenter la réponse de BruNews
cs_Nebula 790 Messages postés samedi 8 juin 2002Date d'inscription 7 juin 2007 Dernière intervention - 15 mai 2003 à 11:04
0
Merci
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 :)
Commenter la réponse de cs_Nebula
cs_Kaid 950 Messages postés mardi 2 octobre 2001Date d'inscription 8 juillet 2006 Dernière intervention - 15 mai 2003 à 11:19
0
Merci
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
Commenter la réponse de cs_Kaid
cs_Nebula 790 Messages postés samedi 8 juin 2002Date d'inscription 7 juin 2007 Dernière intervention - 15 mai 2003 à 11:26
0
Merci
Merci, je l'imprime puis je cours passer cette fichue épreuve :p
Commenter la réponse de cs_Nebula
cs_Nebula 790 Messages postés samedi 8 juin 2002Date d'inscription 7 juin 2007 Dernière intervention - 15 mai 2003 à 16:31
0
Merci
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 ? :(
Commenter la réponse de cs_Nebula
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 15 mai 2003 à 20:28
0
Merci
#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...
Commenter la réponse de BruNews
cs_Nebula 790 Messages postés samedi 8 juin 2002Date d'inscription 7 juin 2007 Dernière intervention - 15 mai 2003 à 21:32
0
Merci
Yes c'est excellent ! Je vais étudier çà de près, merci pour ton aide, et merci à Kaid aussi :)
Commenter la réponse de cs_Nebula
cs_Nebula 790 Messages postés samedi 8 juin 2002Date d'inscription 7 juin 2007 Dernière intervention - 15 mai 2003 à 22:47
0
Merci
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
Commenter la réponse de cs_Nebula
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 15 mai 2003 à 23:13
0
Merci
rien de tel que VS pour faire du win32.
BruNews, ciao...
Commenter la réponse de BruNews
cs_Nebula 790 Messages postés samedi 8 juin 2002Date d'inscription 7 juin 2007 Dernière intervention - 15 mai 2003 à 23:43
0
Merci
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 :(
Commenter la réponse de cs_Nebula

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.