begin process at 2012 05 29 15:13:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Pb affichage objet ActiveX


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Pb affichage objet ActiveX

mercredi 8 février 2006 à 18:59:06 | Pb affichage objet ActiveX

Xaviou

Bonjour,
Je suis en train d'essayer de placer un contrôle ActiveX dans mon application.
J'ai utilisé la méthode de RACPP pour placer le contrôle sur un contrôle normal (en l'occurence, un simple "STATIC")
Cette méthode permet attacher un ActiveX à un contrôle standard Win32 (voir sa source)
Ensuite, je récupère le DISPID de la méthode que je veux appeler.
Jusque là, tout se passe bien, je n'ai pas d'erreur.
Le problème réside dans l'appel à cette méthode qui ne fonctionne pas.
J'ai donc voulu essayer avec un contrôle ActiveX "sûr" : le contrôle "Actobat Control for ActiveX".
Il possède une méthode "LoadFile" qui prend en paramètre le nom du fichier à charger.
Je l'ai d'abord essayé avec Visual Basic, et tout est OK
Quand je reviens en C++, Le contrôle est bien créé, mais j'obtiens une erreur lors de l'appel de la méthode LoadFile.
Je me demandais si le problème pouvait venir du fait que l'ActiveX était attaché à un contrôle de mon application.
Voici le code: (Pour info, p_hWnd correspond au contrôle STATIC parent de l'ActiveX)

hDllAtl=LoadLibrary("atl.dll");
typedef HRESULT (WINAPI *PAttachControl)(IUnknown*, HWND,IUnknown**);
PAttachControl AtlAxAttachControl = (PAttachControl) GetProcAddress(hDllAtl, "AtlAxAttachControl");
CoInitialize(0);

// Créer le controle ActiveX
HRESULT hr;
VARIANT rVal = {0};
CLSID clsid;
LPDISPATCH pdisp;
LPUNKNOWN punk;

if (CLSIDFromProgID(L"PDF.PdfCtrl.5", &clsid)!=S_OK)
{
    MessageBox(HWND_DESKTOP,"Unable to obtain CLSID...","Error",MB_ICONERROR);
    return 0;
}
hr = CoCreateInstance(clsid, NULL, CLSCTX_ALL, IID_IDispatch,(void**)&punk);
if(FAILED(hr))
{
    MessageBox(HWND_DESKTOP,"Unable to CoCreateInstance...","Error",MB_ICONERROR);
    return 0;
}
hr=punk->QueryInterface(IID_IDispatch,(void * *)&pdisp);
if (FAILED(hr))
{
    MessageBox(HWND_DESKTOP,"Unable to QueryInterface...","Error",MB_ICONERROR);
    punk->Release();
    punk=NULL;
    return 0;
}
AtlAxAttachControl(punk,p_hWnd,NULL);

OLECHAR FAR *fncName;
fncName=L"LoadFile";
hr = pdisp->GetIDsOfNames(IID_NULL,&fncName,1,LOCALE_SYSTEM_DEFAULT,&dpid_LoadFile);
if (FAILED(hr))
{
    MessageBox(HWND_DESKTOP,"Unable to obtain the LoadFile() DispID...","Error",MB_ICONERROR);
    return 0;
}

UpdateWindow(p_hWnd);

VARIANT vRet;
VARIANTARG varg;
DISPPARAMS dprm;

ZeroMemory(&dprm,sizeof(dprm));
VariantInit(&varg);
VariantInit(&vRet);
dprm.rgvarg=&varg;
varg.vt=VT_BSTR;
dprm.cArgs=1;
dprm.cNamedArgs=0;
varg.bstrVal=SysAllocString(L"C:\\Essai.pdf");
    hr=pdisp->Invoke(dpid_LoadFile,IID_NULL,LOCALE_SYSTEM_DEFAULT,DISPATCH_METHOD,&dprm,&vRet,NULL,NULL);

VariantClear(&vRet);
VariantClear(&varg);
if (FAILED(hr))
{
    MessageBox(p_hParent,"Unable to call the LoadFile() method...","Error",MB_ICONERROR);
    return 0;
}

return 1;

Quelqu'un aurait-t-il des indications ?
Merci d'avance.


Cette discussion est classée dans : activex, contrôle, hwnd, loadfile, hr


Répondre à ce message

Sujets en rapport avec ce message

Comment fait-on fonctionner le contrôle activex "Navigateur Web Microsoft" [ par Memerosti ] Ben tout est dans le titre :=)J'ai crée un projet MFC, et j'aimerais, afficher une page web à l'aide de ce contrôle dans une fenêtre de mon programme. Portage ActiveX Windows vers Linux [ par jockos ] J'ai développé un contrôle ActiveX (utilisant ATL) avec Visual C++.Ce n'est pas un contrôle Graphique (pas de gestion d'évenements).C'est un contrôle Contrôle activeX MSWINSCK.OCX [ par nadjim ] Bonjour à tous J'ai récupéré une appli VB sur VBfrance qui utilise le controle activeX MSWINSCK.OCX et j'ai voulu l'adapté sur BCB. Donc j'ai importé Lier un contrôle activeX [ par moumouteb ] Je viens de créer une application MFC avec un contrôle activeX (FlexGrid), tout marche très bien sur mon PC mais dès que je l'exécute sur un autre PC Récupération du handle d'un contrôle ? [ par Cako19 ] Bonjour,Quelqu'un saurait-il comment faire pour récupérer le handle d'un contrôle situé dans une form windows de façon à utiliser sur lui des fonction Syntaxe d’accès a un ActiveX sous ATL [ par Ayato ] Bonjour a tous, voila j’ai un problème avec l’utilisation d’un ActiveX  J’ai créé moi-même un ActiveX en ATL et je veux ut tracer une courbe à partir d'un tableau dans une fenêtre [ par jul41 ] Salut! je dois réaliser un projet dont une partie consiste à tracer une courbe caractérisant une force appliquée sur un capteur. J'essaie pour ça de f API + logiciel réseau [ par lolorenzeb ] Bonjour à tous,Voila j'ai réalisé deux petites applications simples (client et serveur) en mode console. Je souhaite donc améliorer mon programme avec Property ActiveX [ par nawakator ] Boujour à tous.   J'ai créé une propriété dans un ActiveX. Mais je n'arrive pas à récupérer le changement de la valeur par l'utilisateur dans mon proj Fenetre windows en cpp [ par FeelCode ] bon j'essaye de cree une fenetre windows tout simple mai j'ai un probleme de convertion voir le code plus bas.//**************************************


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales