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 :

MFC et multifenetrage


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant en propriété intellectuelle
    Inscrit en
    Janvier 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Consultant en propriété intellectuelle
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2008
    Messages : 88
    Par défaut MFC et multifenetrage
    Voila, je voudrais que mon application demarre en premier lieux en demandant un login et un mot de passe, j'ai donc creer une fenetre dialogue.

    Est il possible, que lorsque l'on clique sur OK, si le mot de passe est bon cela ouvre une autre fenetre, et sinon ca reviens a la fenetre en incluant une phrase ?

  2. #2
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Bonjour,

    Oui, c'est possible. Bien sûr !
    Si ta première boîte de dialogue a été ouverte avec DoModal, tu ne pourras pas utiliser la même, vu qu'elle a été détruite au moment du clic sur le bouton "Ok". Mais tu peux afficher une autre instance de cette boîte de dialogue en mode modal, en utilisant un accesseur de façon à ce qu'elle sache qu'il faut afficher un message supplémentaire. De la même façon, tu peux ouvrir une autre fenêtre si le mot de passe est correct. Mais dans ce cas, tout dépend si tu es dans un contexte MDI, SDI ou de boîte de dialogue...

  3. #3
    Membre confirmé
    Homme Profil pro
    Consultant en propriété intellectuelle
    Inscrit en
    Janvier 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Consultant en propriété intellectuelle
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2008
    Messages : 88
    Par défaut
    Quand je clique sur Ok, ca ne m'ouvre la fenetre, mais ca me la ferme direct ... tout en gardant la fenetre d'identification ouverte ... Je comprend pas ...

    Est il possible de recuperer les valeur des champs d'une boite de dialogue? comment?

  4. #4
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    J'ai rapidement regardé ton code (avant que tu ne le retires de ton message précédent). Il me semble que la fin de la méthode CRFIDApp::InitInstance devrait plutôt se présenter comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	if (dlg.DoModal() == IDOK)
    		return CreateMainFrame();
     
    	return FALSE;
    }
    Pour récupérer la valeur d'un champ d'une boîte de contrôle affichée avec DoModal, il faut utiliser un accesseur publique qui permet de renvoyer cette valeur. Le problème est qu'on n'a plus accès aux contrôles de la boîte de dialogue après l'exécution de DoModal du fait que la boîte de dialogue est alors détruite. Il faut donc ruser en stockant cette valeur dans un membre de type CString, soit au moment de la fermeture de la boîte de dialogue, soit au moment où la valeur du champs est modifiée.

    Dans ton cas et dans le cas d'un CEdit, le plus simple est d'associer une variable de type CString au contrôle, de mettre un accesseur publique sur cette variable et de mettre cette variable à jour dans la méthode événementielle du clic sur le bouton "Ok" à l'aide de la méthode UpdateData.

  5. #5
    Membre confirmé
    Homme Profil pro
    Consultant en propriété intellectuelle
    Inscrit en
    Janvier 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Consultant en propriété intellectuelle
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2008
    Messages : 88
    Par défaut
    Pas compris la ...

  6. #6
    Membre confirmé
    Homme Profil pro
    Consultant en propriété intellectuelle
    Inscrit en
    Janvier 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Consultant en propriété intellectuelle
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2008
    Messages : 88
    Par défaut
    Bon, actuellement j'ai ca :

    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
    BOOL CProjetApp::InitInstance()
    {
    	AfxEnableControlContainer();
     
    	// Standard initialization
    	// If you are not using these features and wish to reduce the size
    	//  of your final executable, you should remove from the following
    	//  the specific initialization routines you do not need.
     
    #ifdef _AFXDLL
    	Enable3dControls();			// Call this when using MFC in a shared DLL
    #else
    	Enable3dControlsStatic();	// Call this when linking to MFC statically
    #endif
     
    	// Change the registry key under which our settings are stored.
    	// TODO: You should modify this string to be something appropriate
    	// such as the name of your company or organization.
    	SetRegistryKey(_T("Local AppWizard-Generated Applications"));
     
    	CLogin login;
    	//	CDatabase db;
    	//	char  source[] ="DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;PORT=3306;DATABASE=RFID;USER=root;PASSWORD=;OPTION=0;";
     
    //	if (db.connect(source))
    //	{
    		if(login.DoModal() == IDOK)
    		{
    			m_Login = login.m_Login;
    			m_Password = login.m_Password;
    		}
    		else 
    		{
    			return -1;
    		}
    		CVerification Verif;
    		Verif.Create(IDD_CheckLaptopOwner, NULL);
    		Verif.ShowWindow(SW_SHOW);
    		Verif.SetFocus();
     
    //	}
    	return false;
    }
    Et quand je lance, ca m'affiche la premiere fenetre, et des que je fais ok, tout se ferme ...comment faire?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. MDI sans MFC, possible ?
    Par delire8 dans le forum MFC
    Réponses: 4
    Dernier message: 17/06/2002, 07h38
  3. [MFC](encapsulation ADO) ou placer le code
    Par philippe V dans le forum MFC
    Réponses: 2
    Dernier message: 13/06/2002, 14h58
  4. Réponses: 2
    Dernier message: 10/06/2002, 11h03
  5. [MFC] ADO connection
    Par philippe V dans le forum MFC
    Réponses: 3
    Dernier message: 10/06/2002, 07h36

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