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