IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Passer une variable en argument d'une dialog box + radio buttons


Sujet :

MFC

  1. #1
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 22
    Par défaut Passer une variable en argument d'une dialog box + radio buttons
    Salut a tous,

    Je suis plutot habitue a trainer sur les forums C#, mais la j'ai un ptit projet en C++ a rendre. Mon probleme est que j'ai tres peu pratique le C++ (en fait pratiquement que le C) et jamais avec une interface graphique. Du coup sans les trucs tout fait du C# bin je galere un poil ... Ha oui et j'utilise Visual studio 2008.

    1 - L'appel de ma fenetre est le suivant (que j'ai pompe sans comprendre dans un autre post)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DialogBoxParam(hInstance, (LPCTSTR)IDD_MAIN_INTERFACE, 0, dialogProc, 0);
    Ceci lance par je ne sais quelle magie la fonction suivante qui ouvre ma fenetre ;-):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    BOOL CALLBACK dialogProc(HWND handleDialog, UINT mssg, WPARAM wParam, LPARAM lParam)
    {
     
    	int i,j;
     
    	// Open file in read mode
    	std::ifstream file( "list.csv" );
        int lines = std::count(std::istreambuf_iterator<char>( file ),std::istreambuf_iterator<char>(),'\n' );
    	file.clear();
    	file.seekg(0);
     
    	//Dynamic allocation of an array corresponding to the size of the station file
    	const int nb_csv_column = 5;
    	int allocated_dim = 0; // number of elements successfully allocated
    	float * * CsvList= 0;
     
     
    	switch(mssg)
    	{
    		case WM_INITDIALOG:
    			{
    				SetClassLong(handleDialog, GCL_HICON, (LONG)LoadIcon(0, IDI_APPLICATION));
     
    				return TRUE;
    			}
    		case WM_COMMAND:
    			switch(wParam)
    			{
    				case IDOK:
    					break;
    				case IDC_CSV_LIST:
     
    					if ( file ) // test if file exists
    					{
    						std::string line; // read line
    						//stops when error or at the end of the file
    						while ( std::getline( file, line ) )
    						{
    							// afficher la ligne à l'écran
    							std::cout << line << std::endl;
    							std::clog << line << std::endl;
    						}
    					}
     
    					// try to allocate lines x nb_csv_column;
    					try
    					{
    						// dimension 1 : lines pointers array to float arrays
    						CsvList= new float * [ lines ];
    						// initialize pointers
    						std::fill_n( CsvList, lines, static_cast<float*>( 0 ) );
     
    						// dimension 2 : float arrays
    						for ( allocated_dim = 0; allocated_dim < lines; ++allocated_dim)
    						{
    							CsvList[ allocated_dim ] = new float[ nb_csv_column ];
    						}
    					}
    					catch ( const std::bad_alloc & ) // allocation error
    					{
    						// desallocate what was succesfully allocated
    						for ( int i = 0; i < allocated_dim; ++i ) 
    						{
    							delete [] CsvList[ i ];
    						}
    						delete [] CsvList;
    					}
     
    					coverage(CsvList,lines, 2, -1);
    					break;
    				case IDC_EDIT_TXPR_alt:
    					break;
    				case IDCANCEL:
    					EndDialog(handleDialog, 0);
    					return 0;
    			}
    			break;
    	}
    	return 0;
    }
    En gros je lis un fichier csv contenant N lignes et je souhaite faire l'allocation dynamique d'un tableau 5 * N cases qui me permet de stocker les champs de mon fichier. Le probleme etant que je ne veux pas faire ma declaration du tableau dans le code de la fenetre, vu que cela reboucle en permanence dessus avec un resultat bien sur pas terrible terrible ;-).
    Pour remedier a cela je voulais faire la declaration dans le main et allouer dynamiquement dans un des cas du switch. Mais comment passer mon tableau en argument a la fenetre ?


    2 - J'ai aussi essaye de creer des boutons radio (donc fonctionnant par groupe de 2 ou 3) en suivant la faq suivante : http://cpp.developpez.com/faq/vc/?pa...adioButonHowTo
    Je bloque a l'etape deux : attacher une variable sur le premier bouton du groupe ...
    Voila les etapes que je suis etant donne que je n'ai pas le class wizard dans VS 2008 (qui menent de toutes parts a des erreurs):
    - Creer une classe sur ma form (en double cliquant dessus puis en rentrant un nom). Cela me cree deux fichiers : MainInterface.h et MainInterface.cpp
    - Passer les proprietes du projet a "Use MFC in a Shared DLL" sinon ca compile pas ...
    - Apres ca je peux ajouter ma variable "button" a ma classe MAIS ...
    - Je ne peux meme pas build les deux fichiers MainInterface ... en effet j'obtiens l'erreur suivante dans le .h : "Error 5 error C2065: 'IDD_MULTI_INTERFACE' : undeclared identifier"
    Je suppose que c'est une histoire de config des proprietes du projet pour linker les fichiers ensemble mais j'arrive pas a trouver (d'un projet a l'autre je passe par un .lib, mais a l'interieur d'un projet que faut-il configurer ?)

    3 - Question subsidiaire : Y a t il un moyen en C++ de rediriger simplement l'affichage dansl a fenetre output du debugguer ?

    Thanx a lot d'avance :-)

  2. #2
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 22
    Par défaut
    Oui j'ai aussi une question en plus :

    Pourquoi quand j'enleve cette classe "MainInterface", le projet ne build plus tant que je n'ai pas enleve l'option "Use MFC in a shared dll" ?

  3. #3
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    tu es mal parti ...
    ton code montre que tu utilises une architecture de fonctionnement Win32 ,
    et tu essayes de mélanger des MFC .
    ça ne vas pas.
    commence par générer un projet boite de dialogue MFC (apparemment ) avec l'assistant .
    tu peux consulter mon tuto sur les MFC (meme si ça parle de vc6.0)

  4. #4
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 22
    Par défaut
    ok ok je sentais bien que jetais mal parti.
    Donc la structure "win32" on oublie completement il vaut mieux tout faire a la sauce MFC ? Le fait que ca parle de VC6 n'est pas trop embetant pour un newbie comme moi ? Ou ca sera juste une difference dans l'interface de dev avec globalement les meme fonctions ?

    Sinon tant qu'on en est a parler structure et que j'en suis a repartire de 0 :
    Qu'elle structure vaut-il mieux employer pour remplacer mon systeme de tableau dynamique sorti de la prehistoire ? Un <vector> contenant des objets qui auraient pour membres ce qui etaient auparavant contenu dans les "cases" de mon tableau ?


    Thx a lot en tout cas

    Cheers

    Eric

Discussions similaires

  1. Contenu d'une variable devenant lui même une variable
    Par Copyright83 dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 14/11/2012, 17h24
  2. Mettre une variable comme argument dans une fonction
    Par djun1 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 04/09/2012, 10h44
  3. Réponses: 1
    Dernier message: 26/12/2010, 21h20
  4. [Smarty] Récuper une variable php à partir d'une variable Smarty
    Par SPKlls dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 23/04/2008, 17h40
  5. [Free Pascal] [2.2] Impossible d'assigner une variable de type T à une variable de type T
    Par Hibou57 dans le forum Free Pascal
    Réponses: 3
    Dernier message: 12/10/2007, 12h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo