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 :

Fermer le MainFrame


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 10
    Par défaut Fermer le MainFrame
    Bonjour,

    Lors de la création de ma fenêtre principale, j'ouvre une CFileDialog afin que l'utilisateur puisse choisir un fichier. Ensuite le programme s'initialise en fonction de se projet. Cet appel se fait dans le constructeur CMainFrame().
    J'aimerai pouvoir fermer l'application si jamais il clique sur le bouton "annuler" de la CFileDialog.

    Cependant je ne sais pas comment faire. J'ai essayer de faire un Onclose, destroy Window juste après,(donc dans le constructeur) mais pas de succès.
    En même temps l'objet n'est pas encore créé du coup, si je ne me trompe pas.

    je vous remercie de l'aide que vous pourriez m'apporter.

    Cordialement,

  2. #2
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    Peut-on voir ton code ?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 10
    Par défaut
    Hum difficilement, c'est pour mon travail et de plus c'est gros. Je vais mettre l'essentiel en espérant que ça suffise

    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
     
    CMainFrame::CMainFrame()
    {
            m_pDlgOpenFile = new CFileDialog(TRUE,
    					_T(".csv"),
    					"",
    					OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_SHOWHELP|0,
    					"(*.csv)|*.csv||",
    					NULL);
     
    	if(m_StrMessagerieDirectoryPath.IsEmpty())
    	{
    		m_StrMessagerieDirectoryPath = g_RepertoireCourantPCSAM;
    	}
     
    	m_pDlgOpenFile->m_ofn.lpstrInitialDir = m_StrMessagerieDirectoryPath;
    	char lpszTitle[]={"Open a *.csv File"};
    	m_pDlgOpenFile->m_ofn.lpstrTitle=lpszTitle;
     
    	ret = m_pDlgOpenFile->DoModal();
    	if (ret == IDOK)
    	{			
    		m_strMessagerieFilePath = m_pDlgOpenFile->m_ofn.lpstrFile;
    		m_bFirstSamOpened = true;
    		nPos = m_strMessagerieFilePath.ReverseFind(M_AntiSlash);
    		m_StrMessagerieDirectoryPath = m_strMessagerieFilePath.Left(nPos);
    	}
    	else //Clique sur annuler
    	{
     
    	}
    }

  4. #4
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    D'où sort cette classe CMainFrame ?

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 10
    Par défaut
    C'est ma fenêtre principal qui est créée à l'initialisation de l'application
    Dans le cpp de l'application :
    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
     
    BOOL CPCSAMApp::InitInstance()
    {
     
    	// Initialize OLE libraries
    	if (!AfxOleInit())
    	{
    		AfxMessageBox(IDP_OLE_INIT_FAILED);
    		return FALSE;
    	}
     
    	AfxEnableControlContainer();
     
    	AfxInitRichEdit();
     
    	SetIconApp();
     
     
    	// Standard initialization
     
    #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.
    	SetRegistryKey(_T("Local AppWizard-Generated Applications"));
     
    	LoadStdProfileSettings();  // Load standard INI file options (including MRU)
     
    	// Register document templates
     
    	CSingleDocTemplate* pDocTemplate;
    	pDocTemplate = new CSingleDocTemplate(
    		IDR_MAINFRAME,
    		RUNTIME_CLASS(CPCSAMDoc),
    		RUNTIME_CLASS(CMainFrame),       // main SDI frame window
    		RUNTIME_CLASS(CPCSAMView));
    	pDocTemplate->SetContainerInfo(IDR_CNTR_INPLACE);
    	AddDocTemplate(pDocTemplate);
    	m_server.ConnectTemplate(clsid, pDocTemplate, TRUE);
     
    	// Parse command line for standard shell commands, DDE, file open
    	CCommandLineInfo cmdInfo;
    	ParseCommandLine(cmdInfo);
     
    	if (cmdInfo.m_bRunEmbedded || cmdInfo.m_bRunAutomated)
    	{
    		COleTemplateServer::RegisterAll();
     
    		// Application was run with /Embedding or /Automation.  Don't show the
    		//  main window in this case.
    		return TRUE;
    	}
     
    	m_server.UpdateRegistry(OAT_DISPATCH_OBJECT);
     
    	COleObjectFactory::UpdateRegistryAll();
     
    	// Dispatch commands specified on the command line
     
    	if (!ProcessShellCommand(cmdInfo))
    		return FALSE;
     
    	m_pMainWnd->ShowWindow(SW_SHOW);
    	m_pMainWnd->UpdateWindow();
     
    //	AfficherInfosTrain();
     
    	return TRUE;
    }
    Dans le MainFrm.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
    Dans le MainFrm.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class CMainFrame : public CFrameWnd
    {
    ...
    }

  6. #6
    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
    bonjour ,
    si ce choix de dialogue doit être fait en début de programme , il serait plus judicieux de mettre le domodal de cette dialogue dans la méthode InitInstance de la classe d'application (CPCSAMApp::InitInstance) pour sortir de l'application il suffira alors de retourner FALSE suivant le choix de la dialogue....

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

Discussions similaires

  1. [Java3D] fermer seulement un MainFrame
    Par NailMaker dans le forum 3D
    Réponses: 1
    Dernier message: 13/07/2006, 14h31
  2. [FORM] supprimer l'icone fermer
    Par Evil onE dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/02/2003, 16h25
  3. Fermer l'animation (swf/exe lancé depuis Windows)
    Par ZiZouJH dans le forum Flash
    Réponses: 3
    Dernier message: 14/01/2003, 10h00
  4. [MDI] comment fermer la bonne fenêtre enfant ?
    Par KThrax dans le forum Langage
    Réponses: 5
    Dernier message: 01/09/2002, 09h42
  5. Fermer une application à l'aide de OnIdle
    Par Thierry Rapp dans le forum Composants VCL
    Réponses: 2
    Dernier message: 29/08/2002, 12h44

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