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] Plantage sur LoadFrame


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 18
    Par défaut [MFC] Plantage sur LoadFrame
    Bonjour a tous,

    J'ai repris denierement une application qui tourne depuis plusieurs années sur tout type de plateforme (98, Me, NT, 2000, XP)
    J'ai essayé d'installer cette appli sur une machine serveur equipée en RAID 0 de deux disques de 250Go

    en fouillant un peu j'ai remarqué que l'appli plante sur LoadFrame dans le code qui suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    		CMainWindow* pMainWnd = new CMainWindow();
    		if (!pMainWnd->LoadFrame(IDR_MAINFRAME)) 
    			return FALSE; 
     
    		m_pMainWnd = pMainWnd;
    Pour info dans le settings du projet les Mfc sont Shared Dll

    Voila donc qqun a une idee...

  2. #2
    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,
    je pense que ça n'a rien a voir avec la config materielle ,
    le plantage sur loadframe est essentiellement à pb avec les ressources du prg ,
    verifies que le menu IDR_MAINFRAME existe et sa validite.
    et recompile entierement le prg en faisant au prealable une speudo modif dans les ressources.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 18
    Par défaut
    Ok, j'ai deja essayé mais ca n'a rien donné...
    deplus j'ai essayer le meme exe sur une autre machine et tout a fonctionner correctement....

    le doute m'habite !!!

  4. #4
    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,
    en effet le plantage est troublant ,
    comment tu as fait pour diagnostiquer que ça plante sur le LoadFrame ?
    t'es sure que tu n'a pas un probleme de lecture sur la base de registre plutot ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 18
    Par défaut
    :trouve:

    Donc le probleme a été solutionné

    Le bug venait de l'install de Win XP, plus precisement du bus SM qui s'etait mal installé , qui est me semble t-il un bus d'administration (T° du proc,...)

    Le pourquoi du comment je sais pas, mais bon maintenant ca marche.... si qqun sait...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 72
    Par défaut
    Salut !

    Je suis sur un début d'appli MDI, et j'ai le meme probleme de plantage sur la fonction LoadFrame()..
    Pourtant dans mes ressources sous l'identifiant IDR_MAINFRAME j'ai bien :
    - Accelerator
    - Menu
    - Toolbar
    - String Table avec une entrée IDR_MAINFRAME


    Y a t-il quelque chose à regarder en premier lieu dans ce cas là ?

    edit : le code de InitInstance() a été généré par le wizard.. Le "truc" c'est que j'ai importé les ressources depuis un autre projet, mais elles semblent bien intégrées.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 72
    Par défaut
    bon au bout de 2 heures j'ai pensé à regarder GetLastError()
    quel nul

    donc apparemment ça viendrait d'un "handle de menu invalide". Comme tout le monde.. pourtant je n'y touche pas au menu !
    Je regarderai ça demain

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 72
    Par défaut
    Je ne vois hélas pas d'où vient l'erreur..
    Normalement il suffit juste de construire un menu, lui assigner l'identifiant IDR_MAINFRAME et le chargement est effectué via LoadFrame(), ou quelquechose d'important m'échappe t-il ?

    code de InitInstance (généré par appwizard) :
    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
     
    	// InitCommonControlsEx() is required on Windows XP if an application
    	// manifest specifies use of ComCtl32.dll version 6 or later to enable
    	// visual styles.  Otherwise, any window creation will fail.
    	INITCOMMONCONTROLSEX InitCtrls;
    	InitCtrls.dwSize = sizeof(InitCtrls);
    	// Set this to include all the common control classes you want to use
    	// in your application.
    	InitCtrls.dwICC = ICC_WIN95_CLASSES;
    	InitCommonControlsEx(&InitCtrls);
    	CWinApp::InitInstance();
     
    	// 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
    	// 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("TargetBuilder"));
    	LoadStdProfileSettings(0);  // Load standard INI file options (including MRU)
    	// Register the application's document templates.  Document templates
    	//  serve as the connection between documents, frame windows and views
    	CMultiDocTemplate* pDocTemplate;
    	pDocTemplate = new CMultiDocTemplate(
    		IDR_TARGETTYPE,
    		RUNTIME_CLASS(CTargetBuilderAppDoc),
    		RUNTIME_CLASS(CChildFrame), // custom MDI child frame
    		RUNTIME_CLASS(CTargetBuilderAppView));
    	if (!pDocTemplate)
    		return FALSE;
    	AddDocTemplate(pDocTemplate);
     
    	// create main MDI Frame window
    	CMainFrame* pMainFrame = new CMainFrame;
     
    	if (!pMainFrame/*  || !pMainFrame->LoadFrame(IDR_MAINFRAME)*/)
    	{
    		MessageBox(NULL, "!pMainFrame", "Error", MB_ICONERROR); 
    		delete pMainFrame;
    		return FALSE;
    	}
     
    	if (pMainFrame->LoadFrame(IDR_MAINFRAME)==FALSE)
    	{
    		// debug avec GetLastError()..
     
    		delete pMainFrame;
    		return FALSE;
    	}
     
    	m_pMainWnd = pMainFrame;
    	// call DragAcceptFiles only if there's a suffix
    	//  In an MDI app, this should occur immediately after setting m_pMainWnd
    	// Enable drag/drop open
    	m_pMainWnd->DragAcceptFiles();
     
    	// Enable DDE Execute open
    	EnableShellOpen();
    	RegisterShellFileTypes(TRUE);
     
    	// Parse command line for standard shell commands, DDE, file open
    	CCommandLineInfo cmdInfo;
    	ParseCommandLine(cmdInfo);
     
     
    	// Dispatch commands specified on the command line.  Will return FALSE if
    	// app was launched with /RegServer, /Register, /Unregserver or /Unregister.
    	if (!ProcessShellCommand(cmdInfo))
    		return FALSE;
    	// The main window has been initialized, so show and update it
    	pMainFrame->ShowWindow(SW_SHOWMAXIMIZED);
    	pMainFrame->UpdateWindow();
     
    	return TRUE;
    le GetLasterror me rapporte un "invalid menu handle". Faut-il charger le menu programmatiquement dans le OnCreate (par exemple) ?

  9. #9
    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
    ton probleme vient du fait que tu utilises IDR_TARGETTYPE dans la définition de ton doctemplate.
    et je suppose que tu n'as pas fait le nécessaire dans les ressources pour cet identifiant:
    création du menu associé.
    création de l'icone associée.

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

Discussions similaires

  1. [DB2]Plantage sur COMMIT
    Par Dundee dans le forum DB2
    Réponses: 1
    Dernier message: 24/11/2004, 11h05
  2. Réponses: 9
    Dernier message: 23/02/2004, 19h14
  3. [MFC] Boucle sur un bouton
    Par karl3i dans le forum MFC
    Réponses: 6
    Dernier message: 17/02/2004, 11h37
  4. [LG]plantage sur une commande basique !
    Par Jeff on the web dans le forum Langage
    Réponses: 5
    Dernier message: 13/01/2004, 19h07
  5. [MFC]Info sur da la fusion sous Word
    Par kor dans le forum MFC
    Réponses: 6
    Dernier message: 22/08/2003, 11h14

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