Salut,
je voudrais savoir s'il est possible de lancer une IHM faite en C++ avec Visual C++ et MFC dans un prog écrit en C.
Et si oui, comment, car je n'arrive pas à comprendre comment mon IHM est lancée (pas de fonction main?)
merci...
Version imprimable
Salut,
je voudrais savoir s'il est possible de lancer une IHM faite en C++ avec Visual C++ et MFC dans un prog écrit en C.
Et si oui, comment, car je n'arrive pas à comprendre comment mon IHM est lancée (pas de fonction main?)
merci...
Le WinMain est encapsulé dans le framework, tu ne peux pas y avoir accès dans une appli MFC.
Pas sûr d'avoir bien compris ce que tu cherches à faire, mais j'aurais quand même tendance à dire :mrgreen: que ça n'a pas l'air réalisable !
Précise peut-être...
si c'est pour lancer un programme à partir d'un autre voir shellexecute dans la faq.
:D
En gros, l'histoire, c'est que j'ai la partie "metier" de mon applie écrite en C, et la partie IHM écrite en C++.
Je n'arrive pas à voir comment je peux les faire dialoguer entre elle.
Un exemple précis :
J'ai une méthode C++ (getList() ) qui doit remplir une listview à partir des éléments d'un tableau fourni par ma partie en C. Donc, je veux dans le main du C maitriser l'appel à getList... Je n'arrive pas a voir comment faire...
j'espère avoir été assez claire! :)
Pour cela, il te faut une fonction C++ qui possède une interface C.
Genre, un wrapper en C++:
Code:
1
2
3
4
5
6
7 //CUneClasse.hpp class CUneClasse { public: int FaireUnTruc(char const *sczUneChaine); };
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 //WrapperUneClasse.h #ifdef __cplusplus #include "CUneClasse.hpp" //Déclaration C++ extern "C" int FaireUnTrucAvecCUneClasse(CUneClasse *pUnObjet, char const *sczUneChaine); #else struct CUneClasse; //Déclaration C int FaireUnTrucAvecCUneClasse(struct CUneClasse *pUnObjet, char const *sczUneChaine); #endif
La fonction est déclarée et définie extern "C", ce qui permettra au linker de la trouver lors de l'appel depuis le code C.Code:
1
2
3
4
5
6 //WrapperUneClasse.cpp extern "C" int FaireUnTrucAvecCUneClasse(CUneClasse *pUnObjet, char const *sczUneChaine) { return pUnObjet->FaireUnTruc(sczUneChaine); }
pour completer ce qui a été dit ,
tu peux mixer du code c et c++ dans un programme avec quelques précautions.
voir aussi la faq: http://c.developpez.com/faq/vc/?page=IDE#MixCAndCPlus
:D