Accueil > Forum > > > > Inserer un activeX avec VC++
Inserer un activeX avec VC++
vendredi 13 février 2004 à 16:21:05 |
Inserer un activeX avec VC++

tanguy_laverdure
|
Bonjour, Dans une fenetre de dialogue, j'insere un activeX (MicroSoft MapPoint Control 11.0) par la commande Insert ActiveX Control. Lorsque je click OK, le controle est insére dans ma fenetre. Lorsque je lance mon application, je ne voir pas le controle active X que je vien d'inserer. Ai je oublier quelque chose ? Merci pour la reponse
|
|
vendredi 13 février 2004 à 19:03:32 |
Re : Inserer un activeX avec VC++
|
mardi 17 février 2004 à 11:58:33 |
Inserer un activeX avec VC++

tanguy_laverdure
|
Merci,
En fait il faut installer completement l'activX de mappoint, c'est a dire dans le MFC class Wizzard, cree une donnee membre (une instance du control mapPoint). A ce moment la, dans la methode OnInitDialog de ma boite de dialogue, je peux faire _variant_t tVar; short Var = 2; tVar = Var; m_MapPoint.NewMap(tVar);
bien sur il faut passe un _variant_t en arguement et la non plus c'est pas simple (ajout de #include "map.h" et #include "comutil.h" dans la cpp) et ajouter comme ressource COMSUPP.lib
Apres cela ca compile et ca fonctionne ... enfin presque. Car la carte s'affiche bien dans ma fenetre de dialogue mais si je bouge la souris dessus, j'ai un debug assertion failed dans le fichier occcont.cpp a la ligne 385 je sais pas trop se qui fait , regarde si le controle est active, le desactive ...
As tu une idée pour corriger se probleme ? Merci
|
|
mardi 17 février 2004 à 18:58:24 |
Re : Inserer un activeX avec VC++

ymca2003
|
ouais j'ai déjà eu ce problème. pour y remédier :
dans la classe CMappointCtrl, tu rajoute la foction public (dans le.h):
inline COleControlSite* GetCtrlSite() {return m_pCtrlSite;}
lors de l'ouverture d'une carte :
SetCapture(); // ouverture nouvelle carte VARIANT var; var.vt = VT_INT; var.intVal = 2; //geoMapEurope CMap1 map = m_pMappointCtrl->NewMap(var);
// bidouille nécessaire pour éviter un plantage (problème d'activation du contrôle) m_pCtrlCont->OnUIDeactivate(m_pMappointCtrl->GetCtrlSite()); m_pCtrlCont->OnUIActivate(NULL); SetFocus();
ReleaseCapture();
normalement ça devrait aller (attention, le fichier MappointCtrl?h est regénéré à chaque fois que tu touche à projet->Insérer un contrôle activeX)
|
|
mercredi 18 février 2004 à 17:53:09 |
Re : Inserer un activeX avec VC++

tanguy_laverdure
|
Merci pour la reponse mais d'ou vient m_pCtrlCont (COleControlContainer je suppose) pour le m_pCtrlCont->OnUIDeactivate(...... ?
Quel est l'include qu'il faut ? Mais je ne trouve rien dans VC++
|
|
jeudi 19 février 2004 à 10:30:54 |
Re : Inserer un activeX avec VC++

ymca2003
|
#include <../src/occimpl.h>
(necessite les sources MFC)
|
|
jeudi 19 février 2004 à 10:50:15 |
Re : Inserer un activeX avec VC++
|
jeudi 19 février 2004 à 10:54:45 |
Re : Inserer un activeX avec VC++

tanguy_laverdure
|
J'ecris une appli qui lit un fichier texte contenant plusieurs centaines de villes et qui interroge MapPoint pour connaitre la distance entre chacune de ces villes. En considerant que la distance de A à B et la même que celle de B à A, j'ai quand même n²/2 calcul de distance a faire.
Y a t il moyen de supprimer l'affichage des routes pendant le calcul des distances (ce qui devrait reduire le temps qui aest de 24 heures aujourd'hui pour 320 villes)
Merci,
|
|
vendredi 20 février 2004 à 18:01:32 |
Re : Inserer un activeX avec VC++

ymca2003
|
Tu as quoi dans ton fichier pour les repérer ? Si c'est les coordonnées géographiques, il vaut mieux calculer la distance toi-même.
sinon, je suppose que tu importe le fichier dans MapPoint. importe tes villes sous forme de pushpin et réalise les calculs à partir des objets location.
|
|
lundi 23 février 2004 à 09:19:56 |
Re : Inserer un activeX avec VC++

tanguy_laverdure
|
void CDISComMapPointPjtDlg::OnButton1() { // TODO: Add your control notification handler code here
// Met a jour les variables des controles UpdateData(TRUE);
int iArretApplication=0;
// Ouverture et lecture du fichier source //--------------------------------------- ifstream fichierSource; if (m_fichierSource != "") { fichierSource.open(m_fichierSource,ios::in); } else { MessageBox("Le nom du fichier source n'est pas valide"); return; }
//int pos=1;
char buf[1000]; string sVilleComplete; string sDepartement;
std::vector<string> Liste_Ville; Liste_Ville.push_back(""); while (fichierSource.getline(buf,1000) && fichierSource.good() && !fichierSource.eof()) { char *cbuf = strdup(buf); string sbuf(buf); int ibufLength = sbuf.length();
string sLegendeDepartement = "DEPARTEMENT: "; int iLegendeDepartementLenght = sLegendeDepartement.length(); int iPosition=0;
// Decodage du nom du departement if ((iPosition=sbuf.find(sLegendeDepartement)) >= 0) { sDepartement = sbuf.substr(iPosition+iLegendeDepartementLenght,ibufLength); continue; }
char *cNomVille = ""; char *cNomDepartement = ""; char *cNomRegion = ""; char *cNomPays = ""; char *cReste = "";
cNomVille = strtok(cbuf,"\t"); cNomDepartement = strtok(NULL,"\t"); cNomRegion = strtok(NULL,"\t"); cNomPays = strtok(NULL,"\t"); cReste = strtok(NULL,"\t");
sVilleComplete.append(cNomVille); sVilleComplete.append(","); sVilleComplete.append(cNomDepartement); sVilleComplete.append(","); sVilleComplete.append(cNomRegion); sVilleComplete.append(","); sVilleComplete.append(cNomPays); sVilleComplete.append(";"); Liste_Ville.push_back(sVilleComplete); sVilleComplete.erase(); } fichierSource.close (); // fermeture du flot // Creation du fichier liste de ville et correspondance des numeros //----------------------------------------------------------------- fstream fichierCorrespondances; if (m_fichierCorrespondances == "") { CString fichier; fichier+="Correspondances"; fichier+=sDepartement.c_str();
char fichierComplet[_MAX_PATH]; _makepath(fichierComplet, _cLecteur, _cRepertoire, fichier, ".txt" );
m_fichierCorrespondances = CString(fichierComplet); } if (m_fichierCorrespondances != "") { fichierCorrespondances.open(m_fichierCorrespondances,ios::out); } else { MessageBox("Le nom du fichier de corespondance n'est pas valide"); return; }
// Ecriture dans le fichier if (fichierCorrespondances.good()) { for (int i=1; i<=Liste_Ville.size()-1; ++i) { fichierCorrespondances << i << " " << Liste_Ville[i].c_str() << endl; // ecrit "i nom de ville " } fichierCorrespondances.close (); }
// Creation du fichier des chemins les plus courts en Km entre les villes //----------------------------------------------------------------------- _cMap.ZoomOut();
fstream fichierCheminsPlusCourts; if (m_fichierCheminsPlusCourts == "") { CString fichier; fichier+="CheminsPlusCourts"; fichier+=sDepartement.c_str();
char fichierComplet[_MAX_PATH]; _makepath(fichierComplet, _cLecteur, _cRepertoire, fichier, ".txt" );
m_fichierCheminsPlusCourts = CString(fichierComplet); } if (m_fichierCheminsPlusCourts != "") { fichierCheminsPlusCourts.open(m_fichierCheminsPlusCourts,ios::out); } else { MessageBox("Le nom du fichier des chemins les plus courts n'est pas valide"); return; }
fichierCheminsPlusCourts << "NAME: " << sDepartement.c_str() << endl; fichierCheminsPlusCourts << "TYPE: CVRP" << endl; fichierCheminsPlusCourts << "COMMENT: " << "Chemins les plus courts" << endl; fichierCheminsPlusCourts << "DIMENSION: " << Liste_Ville.size()-1 << endl; fichierCheminsPlusCourts << "EDGE_WEIGHT_TYPE: EXPLICIT" << endl; fichierCheminsPlusCourts << "EDGE_WEIGHT_FORMAT: FULL_MATRIX" << endl; fichierCheminsPlusCourts << "EDGE_WEIGHT_SECTION" << endl;
// Creation du fichier des chemins les plus rapide en Km entre les villes //----------------------------------------------------------------------- fstream fichierCheminsPlusRapides; if (m_fichierCheminsPlusRapides == "") { CString fichier; fichier+="CheminsPlusRapides"; fichier+=sDepartement.c_str();
char fichierComplet[_MAX_PATH]; _makepath(fichierComplet, _cLecteur, _cRepertoire, fichier, ".txt" );
m_fichierCheminsPlusRapides = CString(fichierComplet); }
if (m_fichierCheminsPlusRapides != "") { fichierCheminsPlusRapides.open(m_fichierCheminsPlusRapides,ios::out); } else { MessageBox("Le nom du fichier des chemins les plus rapides n'est pas valide"); return; }
fichierCheminsPlusRapides << "NAME: " << sDepartement.c_str() << endl; fichierCheminsPlusRapides << "TYPE: CVRP" << endl; fichierCheminsPlusRapides << "COMMENT: " << "Chemins les plus rapides" << endl; fichierCheminsPlusRapides << "DIMENSION: " << Liste_Ville.size()-1 << endl; fichierCheminsPlusRapides << "EDGE_WEIGHT_TYPE: EXPLICIT" << endl; fichierCheminsPlusRapides << "EDGE_WEIGHT_FORMAT: FULL_MATRIX" << endl; fichierCheminsPlusRapides << "EDGE_WEIGHT_SECTION" << endl;
// Parcours toutes les villes de depart //----------------------------------------------------------------------- CRoute cRoute = _cMap.GetActiveRoute(); CWaypoints cWaypoints = cRoute.GetWaypoints();
for (int i=1; i<=Liste_Ville.size()-1; ++i) { m_villeDepart=Liste_Ville[i].c_str(); m_numVilleDepart = i; // Extraction des info du depart char* cTmp1 = strdup(Liste_Ville[i].c_str()); char* cVille1 = strtok(cTmp1,","); char* cDepartement1 = strtok(NULL,","); char* cRegion1 = strtok(NULL,","); char* cPays1 = strtok(NULL,",");
for (int k=1; k<=i; ++k) { // Insertion des 0 fichierCheminsPlusCourts << " 0 "; fichierCheminsPlusRapides << " 0 "; } for (int j=i+1; j<=Liste_Ville.size()-1; ++j) { m_villeArrivee=Liste_Ville[j].c_str(); m_numVilleArrivee=j;
// Extraction des info de l'arrivee char* cTmp2 = strdup(Liste_Ville[j].c_str()); char* cVille2 = strtok(cTmp2,","); char* cDepartement2 = strtok(NULL,","); char* cRegion2 = strtok(NULL,","); char* cPays2 = strtok(NULL,","); // recherche de la ville 1 // ----------------------- // LPCTSTR ou Cstring LPCTSTR Street1 = ""; LPCTSTR City1 = cVille1; LPCTSTR OtherCity1 = ""; LPCTSTR Region1 = cDepartement1; LPCTSTR ZipCode1 = ""; COleVariant Country1 = "84"; //France cRoute.Clear(); CFindResults cResults1 = _cMap.FindAddressResults(Street1, City1, OtherCity1, Region1, ZipCode1, Country1);
CWaypoint wStartPoint; if (cResults1.GetCount() >= 1) { COleVariant numRes = "1"; LPCTSTR LocName = City1; LPCTSTR S = "Start"; LPDISPATCH Res = cResults1.GetItem(&numRes); wStartPoint = cWaypoints.Add(Res,LocName); } else { CString cMessage; cMessage = City1 + CString(" introuvable"); MessageBox(cMessage); } // recherche de la ville 2 // ----------------------- // LPCTSTR ou Cstring LPCTSTR Street2 = ""; LPCTSTR City2 = cVille2; LPCTSTR OtherCity2 = ""; LPCTSTR Region2 = cDepartement2; LPCTSTR ZipCode2 = ""; COleVariant Country2 = "84"; // France CFindResults cResults2 = _cMap.FindAddressResults(Street2, City2, OtherCity2, Region2, ZipCode2, Country2); CWaypoint wStartPoint2; if (cResults2.GetCount()>= 1) { COleVariant numRes2 = "1"; LPCTSTR LocName2 = City2; LPCTSTR S2 = "Finish"; LPDISPATCH Res2 = cResults2.GetItem(&numRes2); wStartPoint2 = cWaypoints.Add(Res2,LocName2); } else { CString cMessage; cMessage = City2 + CString(" introuvable"); MessageBox(cMessage); }
//---------------------------------------- //--- recherche de la route la plus rapide //----------------------------------------- wStartPoint.SetSegmentPreferences(2); wStartPoint2.SetSegmentPreferences(2); cWaypoints.Optimize(); cRoute.Calculate(); cWaypoints.Optimize();
//double dTime = cRoute.GetDrivingTime(); double distance = cRoute.GetDistance(); //---------------------------------------- //--- recherche de la route la plus courte //----------------------------------------- wStartPoint.SetSegmentPreferences(1); wStartPoint2.SetSegmentPreferences(1); cWaypoints.Optimize(); cRoute.Calculate(); cWaypoints.Optimize(); //double dTime2 = cRoute.GetDrivingTime(); double distance2 = cRoute.GetDistance(); //---------------------------------------- //--- mise à jour information interface et fichiers //----------------------------------------- m_cheminPlusRapide = distance; m_cheminPlusCourt = distance2; // Met a jour les variables des controles UpdateData(FALSE); fichierCheminsPlusRapides << distance << " "; fichierCheminsPlusRapides.flush(); fichierCheminsPlusCourts << distance2 << " "; fichierCheminsPlusCourts.flush();
// Stop de l'application en cas de click sur le bouton d'arret d'urgence if (_bArretApplication) { fichierCheminsPlusRapides.close(); fichierCheminsPlusCourts.close(); break; }
} // fin boucle en j
// Stop de l'application en cas de click sur le bouton d'arret d'urgence if (_bArretApplication) { fichierCheminsPlusRapides.close(); fichierCheminsPlusCourts.close(); break; } fichierCheminsPlusRapides << endl; fichierCheminsPlusCourts << endl; } // fin boucle en i
fichierCheminsPlusRapides.close(); fichierCheminsPlusCourts.close(); }
Le bout de code ci-dessus s'arrete au bout d'un certain temps car il n'y a plus assez de memoire. Que puis je faire pour verifier les fuites de memoire dans VC++ ?
Y a t il quelque chose qui n'est aps fait correctement dans ce bout de code ?
Merci
|
|
Cette discussion est classée dans : activex, fenetre, control, vc, inserer
Répondre à ce message
Sujets en rapport avec ce message
ActiveX Control VC++ MFC [ par fifiore ]
Bonjour,Je dévellope une application qui charge tour à tour des pages web dans une fenêtre. Pour cela, j'utilise l'activeX généré par VC++ (CWebBrowse
Picture Control sous vc++ [ par shadow1779 ]
Bonjour,j'ai vu qu'on pouvait faire un picture control directement par l'editeur de ressources de vc++, ce qui permet en soit d'aller plus vite, cepen
colorer un control.... [ par aabdoos ]
bonjour a tout le groupe :)svp quelqu'un peux t'il me donne une code simple pour comment colorer n'importe quelcontrol MFC et son text ?je vois pas to
[VC++]mettre le contenu d'un Edit Control dans une DWORD [ par shadow1779 ]
Bonsoir,j'ai découvert il y a pas longtemps sous vc++ la facilité de faire les fenetre en boite de dialogue, cependant j'ai fait ceci de mon decoupeur
Peut-on utiliser un Activex en VC++ sans MFC? [ par racpp ]
Salut tout le monde,Je sais comment ajouter et manipuler un controle Activex dans un projet VC++ MFC. Mais je cherche un moyen pour faire la même cho
Cacher la fenetre d'un programme console en VC++ [ par petitchech ]
Je cherche comme cacher la fenetre console d'un prog et le cacher ds la barre des tache aussi.
Iconifier ou minimiser une fenetre en VC++ (Avec MFC de preference) [ par JayJay91 ]
Bonjour a tous !!J'ai une petite question je voudrais savoir comment minimiser une fenetre en icone à coté de l'horloge .. exemple d'application : MSN
Pb activeX "Microsoft ListView Control version 6.0" [ par Cako19 ]
Bonjour, Je voudrais utiliser l'activeX "Microsoft ListView Control version 6.0", mais lorsque j'essaie d'insérer un item en utilisant la propriété "L
Modifier un control depuis une DialogBox [ par Ziman ]
Bonjour, c'est re moua,voilà, j'ai fait un programme qui contient une fenetre principale et un bouton, lorsque l'on clique sur ce bouton, une DialogBo
Dll MFC contenant activex [ par nicob42 ]
BonjourJe voudrais créer une dll MFC sous visual 2003 contenant un activex.Mon probleme : - Une fois la dll créer, je pose sur ma fenetre un activex e
Livres en rapport
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|