HeavenForsaker
Messages postés223Date d'inscriptionmercredi 13 juillet 2005StatutMembreDernière intervention 8 août 2011 6 oct. 2009 à 11:54
Bravo racpp pour cet excellent code.
Quand on sélectionne du texte sur la page puis clique droit, la fonction copier coller ne fonctionne pas (c'est la seule d'ailleurs), y a t-il moyen de l'activer ?
SebLinck
Messages postés212Date d'inscriptionmardi 17 mai 2005StatutMembreDernière intervention23 juin 2011 2 juil. 2008 à 14:09
Désolé également,
1- Je n'ai rien d'autre dans OLEviewer que ce que j'ai collé
2- Effectivement,il faut plutôt inclure "AxisMediaControl.dll" et utiliser l'interface IAxisMediaControl
3- :-)
Je RE-teste tout ça prochainement.
bigzooloo
Messages postés36Date d'inscriptionjeudi 16 mai 2002StatutMembreDernière intervention 6 octobre 2009 10 juin 2008 à 18:43
Salut, désolé du retard...
1- ta déclaration de CLSID_IAxisMediaControl est fausse...
il faut que tu te réfères au CLSID de la classe et non au TypeLib dans OleView
(CLSID = 745395C8-D0E1-4227-8586-624CA9A10A8D)
2- lors de l'installation du SDK dans le lien que tu m’as donné, je n'ai pas ce fichier "AxMP4Dec.dll"... je dirai qu'il faut plutôt inclure "AxisMediaControl.dll" et utiliser l'interface IAxisMediaControl.
3- attention au copier-coller :-)
ca m'étonnerai que ta lib ait une fonction "GoHome()"
Voila, j'espère que ca t'aidera
bigzooloo
Messages postés36Date d'inscriptionjeudi 16 mai 2002StatutMembreDernière intervention 6 octobre 2009 5 juin 2008 à 22:12
Salut,
Si tu m'envoi ta lib pour cette caméra, je veux bien essayer de résoudre ton pb !
Je te donnerai mon mail en MP si ca t'interesse.
A+
SebLinck
Messages postés212Date d'inscriptionmardi 17 mai 2005StatutMembreDernière intervention23 juin 2011 5 juin 2008 à 16:56
bonjour,
J'ai exactement la même problématique que bigzooloo, mais j'utilise une caméra Axis 210.
j'ai donc suivi toutes les recommandations qui lui ont été faites, mais j'ai une erreur de compilation avec:
je vous donne le .cpp:
----------------------------------------------------------------------------------------
#include <windows.h>
#include <exdisp.h>
// Déclaration du HWND de notre conteneur en global:
HWND conteneur;
/***************** Procédure de notre fenêtre principale *********************/
LRESULT CALLBACK WndProc( HWND hWnd, UINT messg, WPARAM wParam, LPARAM lParam )
{
switch(messg)
{
case WM_SIZE:
// Redimensionnement du conteneur quand la taille de la fenêtre change:
MoveWindow(conteneur,0,0,LOWORD(lParam), HIWORD(lParam),1);
break;
case WM_CLOSE:
// Détruire la fenêtre principale:
DestroyWindow(hWnd);
break;
case WM_DESTROY:
// Envoyer le message de sortie du programme:
PostQuitMessage( 0 );
break;
/********************* Fonction WinMain ************************************************/
int WINAPI WinMain( HINSTANCE hInst,HINSTANCE hPreInst,LPSTR lpszCmdLine, int nCmdShow )
{
// Déclarer notre classe de fenêtre et définir ses membres:
WNDCLASS wc;
char NomClasse[] = "Conteneur";
wc.lpszClassName = NomClasse;
wc.hInstance = hInst;
wc.lpfnWndProc = WndProc;
wc.hCursor = LoadCursor( 0, IDC_ARROW );
wc.hIcon = LoadIcon( 0, IDI_APPLICATION );
wc.lpszMenuName = 0;
wc.hbrBackground = 0;
wc.style = 0;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
// Enregistrer la classe de notre fenêtre:
if (!RegisterClass(&wc)) return 0;
// Charger la DLL "atl.dll" pour notre programme:
HINSTANCE hDLL = LoadLibrary("atl.dll");
// Définir le type de pointeur pour la fonction "AtlAxAttachControl":
typedef HRESULT (WINAPI *PAttachControl)(IUnknown*, HWND,IUnknown**);
// Récupérer l'adresse de la fonction "AtlAxAttachControl":
PAttachControl AtlAxAttachControl = (PAttachControl) GetProcAddress(hDLL, "AtlAxAttachControl");
// Obtenir les dimensions de notre fenêtre:
RECT rect;
GetClientRect(hWnd,&rect);
// Créer l'EDIT qui servira de conteneur Activex:
conteneur=CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","",WS_CHILD | WS_VISIBLE,0,0,rect.right,rect.bottom,hWnd,0,0,0);
// Initialiser la librairie COM pour notre programme:
CoInitialize(0);
// Déclarer un pointeur sur l'interface IWebBrowser2:
AXISCONTROLMEDILLib::IAxisMediaControl *pIwb;
// Créer une instance de l'objet WebBrowser et de l'interface IWebBrowser2:
CoCreateInstance(CLSID_IAxisMediaControl,0,CLSCTX_ALL,IID_IAxisMediaControl,(void**)&pIwb);
// Attacher l'objet WebBrowser à notre EDIT conteneur:
AtlAxAttachControl(pIwb,conteneur,0);
// Lancer la page de démarrage:
pIwb->GoHome();
Si quelqu'un avait un piste, j'ai vraiment besoin d'utiliser cette ActiveX sans MFC.
merci d'avance
cs_yex
Messages postés28Date d'inscriptionjeudi 3 octobre 2002StatutMembreDernière intervention31 mai 2010 30 mai 2008 à 17:19
Pour ajouter la possibilité d'utiliser les racourcis clavier ctrl+c et autres deux petites modifications sont necessaires :
1) remplacer CoInitialize(0); par OleInitialize(0); et CoUninitialize(); par OleUninitialize(0);
2) Get message devient
MSG Msg;
while( GetMessage(&Msg, 0, 0, 0))
{
// MSDN : calling IOleInPlaceActiveObject::TranslateAccelerator from your
// container's message loop before doing any other translation
if (Msg.message==WM_KEYDOWN)
{
IOleInPlaceActiveObject* pIOIPAO;
HRESULT hr = pIwb->QueryInterface (IID_IOleInPlaceActiveObject, (void**)&pIOIPAO);
hr = pIOIPAO->TranslateAccelerator(&Msg);
pIOIPAO->Release();
// MSDN : You should apply your own translation only when this method returns S_FALSE
if (hr == S_OK)
continue;
}
TranslateMessage( &Msg );
DispatchMessage( &Msg );
}
piou_31
Messages postés3Date d'inscriptionmercredi 20 juin 2007StatutMembreDernière intervention24 avril 2008 24 avril 2008 à 13:47
Bonjour,
quelqu'un a-t-il déja réussi à adapter ce code pour utiliser acrobat reader?
Pour moi ca ne marche pas.
Cdlt
cs_hakim0
Messages postés123Date d'inscriptionmercredi 27 août 2003StatutMembreDernière intervention12 août 20081 27 mars 2008 à 11:59
slt,
ton active x doit etres installer, tu doit connaitre son id pour le charger, et tu doit conaitre linterface de ce active-x contacter le vendeur ou le devloppeur d ce active-x :)
shuttleur
Messages postés33Date d'inscriptionmercredi 12 septembre 2007StatutMembreDernière intervention30 juin 2008 12 mars 2008 à 16:38
Bonjour,
Comment visual c++ connait-il l'interface IWebBrowser2 et d'où connait-il les méthodes Play() et Release() de l'interface ?
En fait, je ne parviens pas à lancer un ActiveX (non connu), que dois-je inclure dans ce projet pour que mon ActiveX soit reconnu et lancé ?
Merci d'avance à tous.
cs_hakim0
Messages postés123Date d'inscriptionmercredi 27 août 2003StatutMembreDernière intervention12 août 20081 28 sept. 2007 à 19:21
Merci racpp, je suis arriver d'executer le script par IHTMLDocument2,
avec les methode get_script est invoke...
2- Le problem rest ici j'arrive pas a attendre le lien sur l'evenement onbevornavigate2, seulement en
DOCUMENTCOMPLETE aec la methode pIWEB->get_LocationURL(),
par ce que je veut intercepter le lien avant que le browser navigue pour dicider de lui stoper ou non!
Merci pour une reponse.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 24 sept. 2007 à 18:49
hakim0 >> 1- Tu peux regarder du côté de l'interface IHTMLDocument2.
2- Regarde mon code source:
http://www.cppfrance.com/codes/NAVIGATEUR-WEB-API_29247.aspx Dans la classe d'interception des événements, je capture l'url dans la méthode Invoke() pendant le traitement de DISPID_NAVIGATECOMPLETE2. Je n'ai pas testé, mais ça devrait être pareil pour la capturer dans DISPID_BEFORENAVIGATE2. Dans tous les cas, l'url figure bien parmi les paramètres interceptés dans Invoke().
cs_hakim0
Messages postés123Date d'inscriptionmercredi 27 août 2003StatutMembreDernière intervention12 août 20081 18 sept. 2007 à 16:09
Bravo,
j'ai 2 questions:
1- Comment on peut executer une function Jscript sur le document html.
2- Comment intercepter le lien url sur l'evenemenet BEFORENAVIGATE2.
onn effet m'application doit avoir une interface html donc j'ai besoin de s'avoir comment communiquer avec le WebBrowser.
Merci pour votre reponse.
pianopariss
Messages postés6Date d'inscriptionvendredi 23 décembre 2005StatutMembreDernière intervention13 avril 2007 20 juin 2007 à 16:29
Très bon code, très pratique.
10 ! ;-)
ASEBT
Messages postés18Date d'inscriptionlundi 23 octobre 2000StatutMembreDernière intervention29 mars 2010 20 mars 2007 à 13:27
Bonjour,
Comment fait tu pour récupérer le code la page , une fois que la page est chargé complement ?
igloobuster
Messages postés12Date d'inscriptionjeudi 19 octobre 2006StatutMembreDernière intervention24 juillet 200910 20 oct. 2006 à 14:53
salut, voila mon bout de code :
IDispatch *g_pMSFlexGrid;
if (CoCreateInstance(m_clsid,0,CLSCTX_ALL,IID_IDispatch,(void**)&g_pMSFlexGrid) != S_OK)
return FALSE;
AtlAxAttachControl(g_pMSFlexGrid,conteneur, NULL);
j'ai legerement modifié le tient pour avoir un MSFlexGrid au lieu d'un WebBrowser, le probleme est au moment de AtlAxAttachControl qui me donne cette erreure :
First-chance exception in Conteneur.exe (MSFLXGRD.OCX): 0xC0000005: Access Violation.
Voila en gros mon probleme...
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 16 août 2006 à 17:03
cs_matt22
Messages postés15Date d'inscriptionjeudi 5 février 2004StatutMembreDernière intervention 5 novembre 2010 16 août 2006 à 11:54
Salut,
je débute un peu et je n'ai pas tout compris...
est ce que quelqu'un aurais le meme source mais avec l'activeX flash, car c mon objectif et ça m'aiderais en comparant les 2 sources à bien comprendre le fonctionnement ?!
Merci d'avance...
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 3 mai 2006 à 17:41
Salut,
jimmyplante > Il faut donner d'autres précision pour mieux voir le problème. Que veux-tu faire exactement?
jimmyplante
Messages postés3Date d'inscriptionmercredi 6 avril 2005StatutMembreDernière intervention 6 avril 2006 6 avril 2006 à 17:02
SUper code !! 10/10
Cependant, j'essaye de faire le même traitement à partir d'un bouton que j'ai dans un dialog et sa ne marche pas. Est-ce que tu saurais comment ?
maybil_gi
Messages postés2Date d'inscriptionmardi 27 décembre 2005StatutMembreDernière intervention13 mars 2006 13 mars 2006 à 15:13
salut tout le monde, y a t il quelqu'un qui a un code source en java pour un navigateur web? merci d'avance
bigzooloo
Messages postés36Date d'inscriptionjeudi 16 mai 2002StatutMembreDernière intervention 6 octobre 2009 27 févr. 2006 à 14:57
Salut,
Franchement, je n'ai qu'une chose à dire : total respect !
Ca marche nikel du premier coup.
Ca mérite un 12/10 :-)
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 26 févr. 2006 à 18:32
Salut,
Ton Activex doit posséder une interface dédiée à l'interception des événements. Cette interface doit figurer dans la liste dans OLE View. Il faudra recopier les prototypes de toutes ses méthodes dans le bon ordre. Chaque méthode correspond à un événement. Tu créeras ensuite une classe implémentant ces méthodes. Dans mon code source "Navigateur Web" tu trouveras un exemple de classe implémentant le traitement de ce genre d'événement. Elle envoit un message à la procédure de la fenêtre du programme chaque fois que l'évènement voulu est intercepté. J'espère que ton Activex est basé sur le même principe.
bigzooloo
Messages postés36Date d'inscriptionjeudi 16 mai 2002StatutMembreDernière intervention 6 octobre 2009 25 févr. 2006 à 17:55
C'est encore moi... :)
Effectivement, ca fonctionne (presque) comme je veux, j'arrive à obtenir mes 25 images par secondes.
Actuellement, j'utilise un timer (40 ms) pour effectuer une capture de la vidéo. Mais la synchronisation est un peu aléatoire. Si l'image de la caméra est prète au moment t, je la récupère entre le moment t et t+39 ms.
J'ai vu dans le SDK qu'il y avait un évènement (ou plutôt un CallBack) généré (ou appelé) à chaque nouvelle image. Ma question est (bien sur) : comment récupérer cet évènement sans MFC ?
void CMyDlg::OnNewVideoVitaminCtrl(BOOL bSignal, BOOL bDecodedImg, VARIANT* vPiece)
{
// CallBack appelé a chaque nouvelle image : parfait pour la synchronisation
}
Merci.
bigzooloo
Messages postés36Date d'inscriptionjeudi 16 mai 2002StatutMembreDernière intervention 6 octobre 2009 22 févr. 2006 à 13:26
Merci beaucoup, ca marche !
Il ne me reste plus qu'a utiliser les bonnes méthodes pour obtenir ce que je veux et voila.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 22 févr. 2006 à 00:19
La définition de CLSID_IVitaminCtrl n'est pas correcte.
Les données que tu as montrées correspondent à l'interface IVitaminCtrl. Pour trouver le CLSID du composant Activex, il faut cliquer sur son nom. C'est lui qui est précédé par + ou - dans la liste. C'est lui qui contient l'interface IVitaminCtrl parmi d'autres. Dans le volet droit de OLE Viewer, Le CLSID est toujours suivi par le signe = puis le nom du composant. Voici un exemple montrant le début des données affichées par OLE Viewer pour le composant "Shockwave Flash Object":
Ceci compile sans problème, je peux même ajouter que VC .net liste toutes les méthodes de l'interface en tapant pVC->. Donc, il a l'air de comprendre.
Mais à l'exécution, j'ai une erreur (avec la fonction ErrorExit) :
"CoCreateInstance failed with error 14007 : La clé de recherche requise n'a été trouvée dans aucun contexte d'activation actif."
Désolé de t'embetter encore mais j'en ai vraiment besoin.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 20 févr. 2006 à 18:57
Tu peux utiliser l'outil "OLE Viewer" de Visual Studio pour connaitre la définition des types et les paramètres d'entrée et de sortie des méthodes de chaque interface de ton Activex. L'utilisation de #import seule ne suffit pas car il faut déclarer, par exemple, tes pointeurs conformément aux types exportés par la DLL de ton Activex.
bigzooloo
Messages postés36Date d'inscriptionjeudi 16 mai 2002StatutMembreDernière intervention 6 octobre 2009 20 févr. 2006 à 17:14
La directive #import ne provoque pas d'erreur à la compilation mais ne me donne rien de plus...
Lorsque j'inclu l'activeX dans un projet MFC, il crée automatiquement deux fichiers (.h et .cpp). Voici un extrait du .h :
Mais je ne peux pas le faire dans un projet non MFC.
Et si j'inclu les deux fichiers a la main dans le projet non MFC, j'ai enormement d'erreurs à la compilation : erreur à chaque ligne contenant CString ou CWnd
Je suis toujours bloqué.
Merci.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 20 févr. 2006 à 13:17
bigzooloo > Tu peux utiliser, juste après les includes, la directive #import suivie du chemin complet de ta dll VitaminCtrl.dll, ainsi ton compilateur reconnaitra toutes les interfaces et tous les types de données exportés par l'Activex.
bigzooloo
Messages postés36Date d'inscriptionjeudi 16 mai 2002StatutMembreDernière intervention 6 octobre 2009 19 févr. 2006 à 13:29
Merci pour les encouragements...
Désolé, je crois avoir mal formuler ma question.
J'ai déjà utilisé des SDK de différents périphériques (carte d'acquisition et autres) mais ils étaient définies comme des classes C++ "normales". Ici, le problème n'est pas de savoir comment il fonctionne, mais plutôt comment le déclarer.
De plus, je me suis aperçu qu'il y avait un second SDK pour la même caméra IP. Celui-ci dispose de toutes les méthodes nécessaires pour récupérer la succession d'images et non le flux MPEG4.
L'ActiveX est déclaré dans "VitaminCtrl.dll". (J'imagine que tu ne connais pas non plus?)
Il me reste encore une dizaine de jours pour trouver la solution...
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 19 févr. 2006 à 12:02
Salut,
theXman > Désolé, j'en n'ai aucune idée.
bigzooloo > Je ne connais pas cet Activex. Pour bien maitriser la programmation des composants COM/OLE/Activex, il faut juste s'entrainer avec des exemples simples pendant un certain temps. Ensuite, tu attaqueras les composants plus complexes. La documentation du composant est indispensable car il faut connaitre le role de chaque interface et ses méthodes. Après avoir bien compris le fonctionnement de ton Activex, je pense que tu pourras adapter ton code pour l'utiliser sans MFC. Ca prendra assez de temps et c'est pour cela que je ne peux tester cet Activex pour toi. Bon courage.
yserver > Parmi les solutions, je pense que tu peux faire un hook souris pour intercepter et bloquer tous les clics droits dans ton application. Il pourrait y avoir une meilleure solution. Si je la trouve je te la dirai.
yserver
Messages postés203Date d'inscriptionlundi 2 août 2004StatutMembreDernière intervention 8 septembre 2006 16 févr. 2006 à 20:31
C'est parfait, Merci.
Une question au passage, je souhaite pouvoire empecher le clic droit est ce possible a partir de ce WebBroser.
Je part a la cpeche au renseignement de mon coté.
Felicitation.
bigzooloo
Messages postés36Date d'inscriptionjeudi 16 mai 2002StatutMembreDernière intervention 6 octobre 2009 14 févr. 2006 à 14:28
Bonjour,
Je viens de me mettre (temporairement) à l'utilisation des ActiveX, mais je n'aime pas les MFC et autres ATL...
CPPFrance étant mon premier site de recherche, je suis facilement tomber sur ce code et je t'en remercie.
J'ai testé ton code dans mon programme et cela fonctionne très bien.
Cependant, j'aimerai utiliser un autre ActiveX qui permet de récupérer un flux vidéo (MPEG4) en provenance d'une caméra IP : mais je ne sais pas comment faire.
Autre précision, je ne veux pas le flux tel quel mais plutôt la succession d'images (à 25 img/sec) qui constituent le flux pour effectuer un traitement dessus et les enregistrer (dans un buffer ou autre).
J'ai à disposition :
- la documentation du SDK (en anglais) qui précise uniquement la marche à suivre avec les MFC.
- le fichier "MediaDBPlayback.dll" qui est l'ActiveX. (Du moins, d'après ce que j'ai compris).
- deux fichiers "mediaplayback.h" et "mediaplayback.cpp" qui contiennent l'implémentation de la classe "CMediaPlayBack : public CWnd"
Je peux vous envoyer les fichiers si besoin.
Quelqu'un peut m'aider ?
Merci.
theXman
Messages postés37Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention11 mars 2006 22 janv. 2006 à 18:19
salut
sais-tu comment utiliser un proxy avec l'ActiveX WebBrowser???
Merci
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 11 juin 2005 à 15:40
Salut,
coucou720 >> J'avoue ne pas avoir bien compris ta question. Dans ce code, c'est l'activex WebBrowser qui affiche la page web dans un conteneur. Si tu veux utiliser un autre activex, tu dois d'abord te documenter suffisamment sur ce dernier. Beaucoup d'activex contiennent une définition des types. Pour la récupérer dans ton tode tupeux utiliser la directive #import suivie du chemin complet de ton OCX comme ceci:
#import "c:\\windows\\system32\\MonDossier\\Monocx.ocx
Ainsi, tu pourras créer des instances des interfaces de cet ocx. Il faut donc bien connaitre ces interfaces. Une autre solution consiste à utiliser le SDK fournit par le créateur de l'activex. Ce SDK contient alors tous les fichiers nécessaires à la compilation.
vecchio56 >> J'avais déja pensé et essayé ce style mais ca ne change rien. Tu l'as testé avec ce code? Merci quand-même.
Bien sûr que ca marche dans la fenêtre principale. J'ai mis un EDIT juste comme exemple pour montrer qu'on peut utiliser n'importe quel controle comme conteneur.
A bientôt.
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 7 juin 2005 à 13:57
Mais pourquoi créer un EDIT au lieu d'utiliser directement la fenêtre principale comme conteneur? (ca marche très bien sans)
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 7 juin 2005 à 13:50
Racpp, pour enlever le clignotement tu ajoutes le style WS_CLIPCHILDREN à la fenêtre conteneur
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 26 févr. 2005 à 23:21
Urgo > Tu peux nous dire comment tu as fairt? C'est bon à savoir. Merci.
cs_Urgo
Messages postés780Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention16 avril 20091 17 févr. 2005 à 22:40
J'ai trouvé pour les clignotements... c'était très bête à eradiquer
scolinks
Messages postés69Date d'inscriptionsamedi 6 septembre 2003StatutMembreDernière intervention19 octobre 20056 12 févr. 2005 à 13:34
c'est une implementation de controle activeX sous win32 api (avec la meme methode tu peux utiliser plein d'autre controles...) ... l'utilisation du navigateur n'est qu'une example...
T_Mehdi
Messages postés294Date d'inscriptionsamedi 5 février 2005StatutMembreDernière intervention24 juillet 2015 12 févr. 2005 à 00:19
salut j'ai une petit question bete xD je c pas ce que f ton programme au juste apart afficher une page web
xD( c sur que si ta eux 10/10 c que il ya des trucs vraimment plus avancer que j'ai pas pue constater ^^)
Merci de votre reponce
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 31 janv. 2005 à 18:50
Merci à tous. C'est très encourageant. Pour pousser les choses un peu plus loin, je suis en train de finaliser un petit navigateur web utilisant le même activex avec la gestion des événements en plus. Je le posterai dès qu'il est fini.
Urgo > Le problème du clignotement pendant le redimensionnement de la fenêtre ne m'a pas préoccupé car il n'est pas génant. Je pense qu'il est possible de le réduire mais pas de l'éliminer complètement.
eRoZion > C'est vrai , cela fait plus de cinq mois que je m'y suis mis. Mon obstination a enfin porté ses fruits. De tous les messages que j'avais reçus, je n'ai retenu que les encouragements de BruNews et scolinks qui s'y etait mis lui aussi (merci à tous les deux).
cs_eRoZion
Messages postés241Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention 8 octobre 20071 30 janv. 2005 à 05:54
Et bé bravo ...
Je me souviens que ca fait un sacré bout de temps que t'es dessus (vous étiez deux d'ailleurs je crois) et qu'on t'avait pas mal découragé.
Ca peut être carrément utile.
10
eRoZion
scolinks
Messages postés69Date d'inscriptionsamedi 6 septembre 2003StatutMembreDernière intervention19 octobre 20056 29 janv. 2005 à 18:40
10 sur 10!
cs_Urgo
Messages postés780Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention16 avril 20091 29 janv. 2005 à 12:22
Superbe exemple tu nous délivres ici! 10/10
Par contre comment éviter les problèmes de cliglotements lors du redimensionnement de la fenêtre? (j'ai essayé de chercher sous 'flicker free", etc... mais rien de bien intéressant de trouvé!)
cs_supergrey
Messages postés475Date d'inscriptionvendredi 27 juin 2003StatutMembreDernière intervention20 septembre 2010 29 janv. 2005 à 11:33
Ca marche nickel !
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 29 janv. 2005 à 10:23
Quand simplicité rime avec efficacité, en voilà une parfaite demonstration qui sera utile à beaucoup de gens.
EXCELLENT !!!
6 oct. 2009 à 11:54
Quand on sélectionne du texte sur la page puis clique droit, la fonction copier coller ne fonctionne pas (c'est la seule d'ailleurs), y a t-il moyen de l'activer ?
2 juil. 2008 à 14:09
1- Je n'ai rien d'autre dans OLEviewer que ce que j'ai collé
2- Effectivement,il faut plutôt inclure "AxisMediaControl.dll" et utiliser l'interface IAxisMediaControl
3- :-)
Je RE-teste tout ça prochainement.
10 juin 2008 à 18:43
1- ta déclaration de CLSID_IAxisMediaControl est fausse...
il faut que tu te réfères au CLSID de la classe et non au TypeLib dans OleView
(CLSID = 745395C8-D0E1-4227-8586-624CA9A10A8D)
2- lors de l'installation du SDK dans le lien que tu m’as donné, je n'ai pas ce fichier "AxMP4Dec.dll"... je dirai qu'il faut plutôt inclure "AxisMediaControl.dll" et utiliser l'interface IAxisMediaControl.
3- attention au copier-coller :-)
ca m'étonnerai que ta lib ait une fonction "GoHome()"
Voila, j'espère que ca t'aidera
5 juin 2008 à 22:12
Si tu m'envoi ta lib pour cette caméra, je veux bien essayer de résoudre ton pb !
Je te donnerai mon mail en MP si ca t'interesse.
A+
5 juin 2008 à 16:56
J'ai exactement la même problématique que bigzooloo, mais j'utilise une caméra Axis 210.
j'ai donc suivi toutes les recommandations qui lui ont été faites, mais j'ai une erreur de compilation avec:
#import "C:/Program Files/Axis Communications/Components/AxMP4Dec.dll"
la dll est pourtant bien présente dans ce répertoire.
autre chose, lorsque je regarde le composant AxisMediaControl avec OLE viewer, je n'obtiens que:
TypeLib =
{9D2CED0F-39D2-4A1E-BA42-428F7D9D4EEB}
1.0 = AxisMediaControl 1.0 Type Library
0
win32=C:\Program Files\Axis Communications\Components\AxisMediControl.dll
FLAGS = 0
HELPDIR = C:\Program Files\Axis Communications\Components\
je vous donne le .cpp:
----------------------------------------------------------------------------------------
#include <windows.h>
#include <exdisp.h>
#import "C:/Program Files/Axis Communications/Components/AxMP4Dec.dll"
DEFINE_GUID(IID_IAxisMediaControl,0x19722801, 0x5830, 0x4EC4, 0xBD, 0x69, 0xC3, 0xCF, 0x70, 0x77, 0x6E, 0x0E);
DEFINE_GUID(CLSID_IAxisMediaControl,0xA48F4EE0, 0xB408, 0x4376, 0xB4, 0xC9, 0xBC, 0x9C, 0xF6, 0xE1, 0x6E, 0xBC);
// Déclaration du HWND de notre conteneur en global:
HWND conteneur;
/***************** Procédure de notre fenêtre principale *********************/
LRESULT CALLBACK WndProc( HWND hWnd, UINT messg, WPARAM wParam, LPARAM lParam )
{
switch(messg)
{
case WM_SIZE:
// Redimensionnement du conteneur quand la taille de la fenêtre change:
MoveWindow(conteneur,0,0,LOWORD(lParam), HIWORD(lParam),1);
break;
case WM_CLOSE:
// Détruire la fenêtre principale:
DestroyWindow(hWnd);
break;
case WM_DESTROY:
// Envoyer le message de sortie du programme:
PostQuitMessage( 0 );
break;
default:
//Retour:
return( DefWindowProc( hWnd, messg, wParam, lParam ) );
}
return 0;
}
/***************************************************************************/
/********************* Fonction WinMain ************************************************/
int WINAPI WinMain( HINSTANCE hInst,HINSTANCE hPreInst,LPSTR lpszCmdLine, int nCmdShow )
{
// Déclarer notre classe de fenêtre et définir ses membres:
WNDCLASS wc;
char NomClasse[] = "Conteneur";
wc.lpszClassName = NomClasse;
wc.hInstance = hInst;
wc.lpfnWndProc = WndProc;
wc.hCursor = LoadCursor( 0, IDC_ARROW );
wc.hIcon = LoadIcon( 0, IDI_APPLICATION );
wc.lpszMenuName = 0;
wc.hbrBackground = 0;
wc.style = 0;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
// Enregistrer la classe de notre fenêtre:
if (!RegisterClass(&wc)) return 0;
// Créer notre fenêtre principale:
HWND hWnd = CreateWindow( NomClasse,"Conteneur Activex",WS_OVERLAPPEDWINDOW,0,0,800,575, 0, 0, hInst,0);
// Montrer la fenêtre:
ShowWindow(hWnd, nCmdShow );
UpdateWindow( hWnd );
// Charger la DLL "atl.dll" pour notre programme:
HINSTANCE hDLL = LoadLibrary("atl.dll");
// Définir le type de pointeur pour la fonction "AtlAxAttachControl":
typedef HRESULT (WINAPI *PAttachControl)(IUnknown*, HWND,IUnknown**);
// Récupérer l'adresse de la fonction "AtlAxAttachControl":
PAttachControl AtlAxAttachControl = (PAttachControl) GetProcAddress(hDLL, "AtlAxAttachControl");
// Obtenir les dimensions de notre fenêtre:
RECT rect;
GetClientRect(hWnd,&rect);
// Créer l'EDIT qui servira de conteneur Activex:
conteneur=CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","",WS_CHILD | WS_VISIBLE,0,0,rect.right,rect.bottom,hWnd,0,0,0);
// Initialiser la librairie COM pour notre programme:
CoInitialize(0);
// Déclarer un pointeur sur l'interface IWebBrowser2:
AXISCONTROLMEDILLib::IAxisMediaControl *pIwb;
// Créer une instance de l'objet WebBrowser et de l'interface IWebBrowser2:
CoCreateInstance(CLSID_IAxisMediaControl,0,CLSCTX_ALL,IID_IAxisMediaControl,(void**)&pIwb);
// Attacher l'objet WebBrowser à notre EDIT conteneur:
AtlAxAttachControl(pIwb,conteneur,0);
// Lancer la page de démarrage:
pIwb->GoHome();
// Boucle des messages:
MSG Msg;
while( GetMessage(&Msg, 0, 0, 0))
{
TranslateMessage( &Msg );
DispatchMessage( &Msg );
}
// Libérer l'interface IWebBrowser2:
pIwb->Release();
// Fermer la librairie COM pour notre programme:
CoUninitialize();
// Fermer la DLL "atl.dll":
FreeLibrary(hDLL);
// Quitter le programme:
return( Msg.wParam);
}
----------------------------------------------------------------------------------
Si quelqu'un avait un piste, j'ai vraiment besoin d'utiliser cette ActiveX sans MFC.
merci d'avance
30 mai 2008 à 17:19
1) remplacer CoInitialize(0); par OleInitialize(0); et CoUninitialize(); par OleUninitialize(0);
2) Get message devient
MSG Msg;
while( GetMessage(&Msg, 0, 0, 0))
{
// MSDN : calling IOleInPlaceActiveObject::TranslateAccelerator from your
// container's message loop before doing any other translation
if (Msg.message==WM_KEYDOWN)
{
IOleInPlaceActiveObject* pIOIPAO;
HRESULT hr = pIwb->QueryInterface (IID_IOleInPlaceActiveObject, (void**)&pIOIPAO);
hr = pIOIPAO->TranslateAccelerator(&Msg);
pIOIPAO->Release();
// MSDN : You should apply your own translation only when this method returns S_FALSE
if (hr == S_OK)
continue;
}
TranslateMessage( &Msg );
DispatchMessage( &Msg );
}
24 avril 2008 à 13:47
quelqu'un a-t-il déja réussi à adapter ce code pour utiliser acrobat reader?
Pour moi ca ne marche pas.
Cdlt
27 mars 2008 à 11:59
ton active x doit etres installer, tu doit connaitre son id pour le charger, et tu doit conaitre linterface de ce active-x contacter le vendeur ou le devloppeur d ce active-x :)
12 mars 2008 à 16:38
Comment visual c++ connait-il l'interface IWebBrowser2 et d'où connait-il les méthodes Play() et Release() de l'interface ?
En fait, je ne parviens pas à lancer un ActiveX (non connu), que dois-je inclure dans ce projet pour que mon ActiveX soit reconnu et lancé ?
Merci d'avance à tous.
28 sept. 2007 à 19:21
avec les methode get_script est invoke...
2- Le problem rest ici j'arrive pas a attendre le lien sur l'evenement onbevornavigate2, seulement en
DOCUMENTCOMPLETE aec la methode pIWEB->get_LocationURL(),
par ce que je veut intercepter le lien avant que le browser navigue pour dicider de lui stoper ou non!
Merci pour une reponse.
24 sept. 2007 à 18:49
2- Regarde mon code source:
http://www.cppfrance.com/codes/NAVIGATEUR-WEB-API_29247.aspx
Dans la classe d'interception des événements, je capture l'url dans la méthode Invoke() pendant le traitement de DISPID_NAVIGATECOMPLETE2. Je n'ai pas testé, mais ça devrait être pareil pour la capturer dans DISPID_BEFORENAVIGATE2. Dans tous les cas, l'url figure bien parmi les paramètres interceptés dans Invoke().
18 sept. 2007 à 16:09
j'ai 2 questions:
1- Comment on peut executer une function Jscript sur le document html.
2- Comment intercepter le lien url sur l'evenemenet BEFORENAVIGATE2.
onn effet m'application doit avoir une interface html donc j'ai besoin de s'avoir comment communiquer avec le WebBrowser.
Merci pour votre reponse.
20 juin 2007 à 16:29
10 ! ;-)
20 mars 2007 à 13:27
Comment fait tu pour récupérer le code la page , une fois que la page est chargé complement ?
20 oct. 2006 à 14:53
IDispatch *g_pMSFlexGrid;
if (CoCreateInstance(m_clsid,0,CLSCTX_ALL,IID_IDispatch,(void**)&g_pMSFlexGrid) != S_OK)
return FALSE;
AtlAxAttachControl(g_pMSFlexGrid,conteneur, NULL);
j'ai legerement modifié le tient pour avoir un MSFlexGrid au lieu d'un WebBrowser, le probleme est au moment de AtlAxAttachControl qui me donne cette erreure :
First-chance exception in Conteneur.exe (MSFLXGRD.OCX): 0xC0000005: Access Violation.
Voila en gros mon probleme...
16 août 2006 à 17:03
Voici le code source utilisant l'Activex Flash:
http://www.cppfrance.com/code.aspx?ID=33091
16 août 2006 à 11:54
je débute un peu et je n'ai pas tout compris...
est ce que quelqu'un aurais le meme source mais avec l'activeX flash, car c mon objectif et ça m'aiderais en comparant les 2 sources à bien comprendre le fonctionnement ?!
Merci d'avance...
3 mai 2006 à 17:41
jimmyplante > Il faut donner d'autres précision pour mieux voir le problème. Que veux-tu faire exactement?
6 avril 2006 à 17:02
Cependant, j'essaye de faire le même traitement à partir d'un bouton que j'ai dans un dialog et sa ne marche pas. Est-ce que tu saurais comment ?
13 mars 2006 à 15:13
27 févr. 2006 à 14:57
Franchement, je n'ai qu'une chose à dire : total respect !
Ca marche nikel du premier coup.
Ca mérite un 12/10 :-)
26 févr. 2006 à 18:32
Ton Activex doit posséder une interface dédiée à l'interception des événements. Cette interface doit figurer dans la liste dans OLE View. Il faudra recopier les prototypes de toutes ses méthodes dans le bon ordre. Chaque méthode correspond à un événement. Tu créeras ensuite une classe implémentant ces méthodes. Dans mon code source "Navigateur Web" tu trouveras un exemple de classe implémentant le traitement de ce genre d'événement. Elle envoit un message à la procédure de la fenêtre du programme chaque fois que l'évènement voulu est intercepté. J'espère que ton Activex est basé sur le même principe.
25 févr. 2006 à 17:55
Effectivement, ca fonctionne (presque) comme je veux, j'arrive à obtenir mes 25 images par secondes.
Actuellement, j'utilise un timer (40 ms) pour effectuer une capture de la vidéo. Mais la synchronisation est un peu aléatoire. Si l'image de la caméra est prète au moment t, je la récupère entre le moment t et t+39 ms.
J'ai vu dans le SDK qu'il y avait un évènement (ou plutôt un CallBack) généré (ou appelé) à chaque nouvelle image. Ma question est (bien sur) : comment récupérer cet évènement sans MFC ?
un exemple avec MFC :
BEGIN_EVENTSINK_MAP(CMyDlg, CDialog)
ON_EVENT(CMyDlg, IDC_VitaminCtrl, 9, OnNewVideoVitaminCtrl, VTS_BOOL VTS_BOOL VTS_PVARIANT)
END_EVENTSINK_MAP()
void CMyDlg::OnNewVideoVitaminCtrl(BOOL bSignal, BOOL bDecodedImg, VARIANT* vPiece)
{
// CallBack appelé a chaque nouvelle image : parfait pour la synchronisation
}
Merci.
22 févr. 2006 à 13:26
Il ne me reste plus qu'a utiliser les bonnes méthodes pour obtenir ce que je veux et voila.
22 févr. 2006 à 00:19
Les données que tu as montrées correspondent à l'interface IVitaminCtrl. Pour trouver le CLSID du composant Activex, il faut cliquer sur son nom. C'est lui qui est précédé par + ou - dans la liste. C'est lui qui contient l'interface IVitaminCtrl parmi d'autres. Dans le volet droit de OLE Viewer, Le CLSID est toujours suivi par le signe = puis le nom du composant. Voici un exemple montrant le début des données affichées par OLE Viewer pour le composant "Shockwave Flash Object":
CLSID={1A03F196-9617-4CA0-842B-A83CEECB022B}
{D27CDB6E-AE6D-11CF-96B8-444553540000}=Shockwave Flash Object
Le CLSID est donc celui de la 2eme ligne.
Bonne chance.
21 févr. 2006 à 17:08
Interface {000D2C68-B46B-461C-B5EC-83AC5202FE2C} IVitaminCtrl
ProxyStubClsid = {00020424-0000-0000-C000-000000000046}
ProxyStubClsid32 = {00020424-0000-0000-C000-000000000046}
TypeLib [<no name>] = {9D2CED0F-39D2-4A1E-BA42-428F7D9D4EEB}
TypeLib [Version] = 1.0
CLSID {00020424-0000-0000-C000-000000000046} PSOAInterface
InprocServer = ole2disp.dll
InprocServer32 [<no name>] = oleaut32.dll
InprocServer32 [ThreadingModel] = Both
TypeLib =
{9D2CED0F-39D2-4A1E-BA42-428F7D9D4EEB}
1.0 = VitaminDecoder 1.0 Type Library
0
win32 = C:\Program Files\VitaminCtrl\lib\VitaminCtrl.dll
FLAGS = 0
HELPDIR = C:\Program Files\VitaminCtrl\lib
A partir de ces données, j'ai ce code source :
#import "C:/Program Files/VitaminCtrl/lib/VitaminCtrl.dll"
DEFINE_GUID(IID_IVitaminCtrl,
0x000D2C68, 0xB46B, 0x461C, 0xB5, 0xEC, 0x83, 0xAC, 0x52, 0x02, 0xFE, 0x2C);
DEFINE_GUID(CLSID_IVitaminCtrl,
0x00020424, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
...
VITAMINDECODERLib::IVitaminCtrl *pVC;
CoCreateInstance(CLSID_IVitaminCtrl,0,CLSCTX_ALL,IID_IVitaminCtrl,(void**)&pVC);
ErrorExit("CoCreateInstance") ;
AtlAxAttachControl(pVC,conteneur,0);
pVC->get_ControlID(&val);
...
Ceci compile sans problème, je peux même ajouter que VC .net liste toutes les méthodes de l'interface en tapant pVC->. Donc, il a l'air de comprendre.
Mais à l'exécution, j'ai une erreur (avec la fonction ErrorExit) :
"CoCreateInstance failed with error 14007 : La clé de recherche requise n'a été trouvée dans aucun contexte d'activation actif."
Désolé de t'embetter encore mais j'en ai vraiment besoin.
20 févr. 2006 à 18:57
20 févr. 2006 à 17:14
Lorsque j'inclu l'activeX dans un projet MFC, il crée automatiquement deux fichiers (.h et .cpp). Voici un extrait du .h :
#if !defined(AFX_VITAMINCTRL_H__04710852_2362_4462_828D_4F0051188B4E__INCLUDED_)
#define AFX_VITAMINCTRL_H__04710852_2362_4462_828D_4F0051188B4E__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
/////////////////////////////////////////////////////////////////////////////
// CVitaminCtrl wrapper class
class CVitaminCtrl : public CWnd
{
protected:
DECLARE_DYNCREATE(CVitaminCtrl)
public:
CLSID const& GetClsid()
{
static CLSID const clsid
= { 0x70edcf63, 0xca7e, 0x4812, { 0x85, 0x28, 0xda, 0x1e, 0xa2, 0xfd, 0x53, 0xb6 } };
return clsid;
}
virtual BOOL Create(LPCTSTR lpszClassName,
LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd, UINT nID,
CCreateContext* pContext = NULL)
{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID); }
BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect, CWnd* pParentWnd, UINT nID,
CFile* pPersist NULL, BOOL bStorage FALSE,
BSTR bstrLicKey = NULL)
{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,
pPersist, bStorage, bstrLicKey); }
// Attributes
public:
// Operations
public:
CString GetUrl();
...
... autres méthodes
...
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_VITAMINCTRL_H__04710852_2362_4462_828D_4F0051188B4E__INCLUDED_)
Mais je ne peux pas le faire dans un projet non MFC.
Et si j'inclu les deux fichiers a la main dans le projet non MFC, j'ai enormement d'erreurs à la compilation : erreur à chaque ligne contenant CString ou CWnd
Je suis toujours bloqué.
Merci.
20 févr. 2006 à 13:17
19 févr. 2006 à 13:29
Désolé, je crois avoir mal formuler ma question.
J'ai déjà utilisé des SDK de différents périphériques (carte d'acquisition et autres) mais ils étaient définies comme des classes C++ "normales". Ici, le problème n'est pas de savoir comment il fonctionne, mais plutôt comment le déclarer.
De plus, je me suis aperçu qu'il y avait un second SDK pour la même caméra IP. Celui-ci dispose de toutes les méthodes nécessaires pour récupérer la succession d'images et non le flux MPEG4.
L'ActiveX est déclaré dans "VitaminCtrl.dll". (J'imagine que tu ne connais pas non plus?)
Il me reste encore une dizaine de jours pour trouver la solution...
19 févr. 2006 à 12:02
theXman > Désolé, j'en n'ai aucune idée.
bigzooloo > Je ne connais pas cet Activex. Pour bien maitriser la programmation des composants COM/OLE/Activex, il faut juste s'entrainer avec des exemples simples pendant un certain temps. Ensuite, tu attaqueras les composants plus complexes. La documentation du composant est indispensable car il faut connaitre le role de chaque interface et ses méthodes. Après avoir bien compris le fonctionnement de ton Activex, je pense que tu pourras adapter ton code pour l'utiliser sans MFC. Ca prendra assez de temps et c'est pour cela que je ne peux tester cet Activex pour toi. Bon courage.
yserver > Parmi les solutions, je pense que tu peux faire un hook souris pour intercepter et bloquer tous les clics droits dans ton application. Il pourrait y avoir une meilleure solution. Si je la trouve je te la dirai.
16 févr. 2006 à 20:31
Une question au passage, je souhaite pouvoire empecher le clic droit est ce possible a partir de ce WebBroser.
Je part a la cpeche au renseignement de mon coté.
Felicitation.
14 févr. 2006 à 14:28
Je viens de me mettre (temporairement) à l'utilisation des ActiveX, mais je n'aime pas les MFC et autres ATL...
CPPFrance étant mon premier site de recherche, je suis facilement tomber sur ce code et je t'en remercie.
J'ai testé ton code dans mon programme et cela fonctionne très bien.
Cependant, j'aimerai utiliser un autre ActiveX qui permet de récupérer un flux vidéo (MPEG4) en provenance d'une caméra IP : mais je ne sais pas comment faire.
Autre précision, je ne veux pas le flux tel quel mais plutôt la succession d'images (à 25 img/sec) qui constituent le flux pour effectuer un traitement dessus et les enregistrer (dans un buffer ou autre).
J'ai à disposition :
- la documentation du SDK (en anglais) qui précise uniquement la marche à suivre avec les MFC.
- le fichier "MediaDBPlayback.dll" qui est l'ActiveX. (Du moins, d'après ce que j'ai compris).
- deux fichiers "mediaplayback.h" et "mediaplayback.cpp" qui contiennent l'implémentation de la classe "CMediaPlayBack : public CWnd"
Je peux vous envoyer les fichiers si besoin.
Quelqu'un peut m'aider ?
Merci.
22 janv. 2006 à 18:19
sais-tu comment utiliser un proxy avec l'ActiveX WebBrowser???
Merci
11 juin 2005 à 15:40
coucou720 >> J'avoue ne pas avoir bien compris ta question. Dans ce code, c'est l'activex WebBrowser qui affiche la page web dans un conteneur. Si tu veux utiliser un autre activex, tu dois d'abord te documenter suffisamment sur ce dernier. Beaucoup d'activex contiennent une définition des types. Pour la récupérer dans ton tode tupeux utiliser la directive #import suivie du chemin complet de ton OCX comme ceci:
#import "c:\\windows\\system32\\MonDossier\\Monocx.ocx
Ainsi, tu pourras créer des instances des interfaces de cet ocx. Il faut donc bien connaitre ces interfaces. Une autre solution consiste à utiliser le SDK fournit par le créateur de l'activex. Ce SDK contient alors tous les fichiers nécessaires à la compilation.
vecchio56 >> J'avais déja pensé et essayé ce style mais ca ne change rien. Tu l'as testé avec ce code? Merci quand-même.
Bien sûr que ca marche dans la fenêtre principale. J'ai mis un EDIT juste comme exemple pour montrer qu'on peut utiliser n'importe quel controle comme conteneur.
A bientôt.
7 juin 2005 à 13:57
7 juin 2005 à 13:50
26 févr. 2005 à 23:21
17 févr. 2005 à 22:40
12 févr. 2005 à 13:34
12 févr. 2005 à 00:19
xD( c sur que si ta eux 10/10 c que il ya des trucs vraimment plus avancer que j'ai pas pue constater ^^)
Merci de votre reponce
31 janv. 2005 à 18:50
Urgo > Le problème du clignotement pendant le redimensionnement de la fenêtre ne m'a pas préoccupé car il n'est pas génant. Je pense qu'il est possible de le réduire mais pas de l'éliminer complètement.
eRoZion > C'est vrai , cela fait plus de cinq mois que je m'y suis mis. Mon obstination a enfin porté ses fruits. De tous les messages que j'avais reçus, je n'ai retenu que les encouragements de BruNews et scolinks qui s'y etait mis lui aussi (merci à tous les deux).
30 janv. 2005 à 05:54
Je me souviens que ca fait un sacré bout de temps que t'es dessus (vous étiez deux d'ailleurs je crois) et qu'on t'avait pas mal découragé.
Ca peut être carrément utile.
10
eRoZion
29 janv. 2005 à 18:40
29 janv. 2005 à 12:22
Par contre comment éviter les problèmes de cliglotements lors du redimensionnement de la fenêtre? (j'ai essayé de chercher sous 'flicker free", etc... mais rien de bien intéressant de trouvé!)
29 janv. 2005 à 11:33
29 janv. 2005 à 10:23
EXCELLENT !!!