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 :

Pb d'intégration d'un fichier chm à une mfc sous VC7


Sujet :

MFC

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3
    Par défaut Pb d'intégration d'un fichier chm à une mfc sous VC7
    Bonjour tout le monde

    je suis en train de développer une mfc à laquelle j'aimerais intégrer un fichier d'aide qui apparaitrait en appuyant sur F1.Je développe sous VC7.

    j'ai tout d'abord regarder l'article de farscape concernant l'intégration d'un chm à une mfc sous VC6 et j'ai suivi à la lettre les instructions sachant très bien que ca serait différent sous VC7 donc en y apportant 2-3 modifs:

    - j'ai créé un dossier "html" à la racine de mon projet dans lequel se trouve mes pages html (dans un sous dossier Web) et mon projet HHP. En plus des onglets [OPTIONS] et [FILES], le projet comporte les onglets suivants :

    [ALIAS]
    IDH_MAINFRAME=Web\Intro.htm

    [MAP]
    #include MyAppName.hm


    - j'ai rajouté le projet hhp à mon projet dans lequel je n'avais pas coché l'option "Context sensitive help". J'ai rajouté la lib htmlhelp.lib aux dependencies du projet. Pour les propriétés du hhp, dans l'onglet Custom build :

    Commands
    hhc.exe html\$(InputName).hhp
    echo.
    copy html\$(InputName).chm $(OutDir)\$(InputName).chm
    Outputs
    html\$(InputName).chm
    Dependencies
    html\$(TargetName).hm

    et pour les propriétés de mon resource.h, toujours dans l'onglet Custom build :

    Commands
    makehm /h ID_,IDH_,0x10000 IDM_,IDH_,0x10000 resource.h >>"html\$(TargetName).hm"
    makehm /h IDP_,IDH_,0x30000 resource.h >>"html\$(TargetName).hm"
    makehm /h IDR_,IDH_,0x20000 resource.h >>"html\$(TargetName).hm"
    makehm /h IDD_,IDH_,0x20000 resource.h >>"html\$(TargetName).hm"
    makehm /h IDW_,IDH_,0x50000 resource.h >>"html\$(TargetName).hm"
    echo. >>"html\$(TargetName).hm"
    Outputs
    html\$(TargetName).hm

    sans oublier le #include <htmlhelp.h> dans mon stdafx.h.

    - En ce qui concerne mon code, dans ma classe MyApp, dérivée de CWinApp, dans le constructeur j'ai rajouté EnableHtmlHelp(), et dans MyApp::InitInstance(), le changement d'extension du fichier d'aide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CString strHelpFile = m_pszHelpFilePath;
    strHelpFile.Replace(".HLP", ".chm");
    free((void*)m_pszHelpFilePath);
    m_pszHelpFilePath = _tcsdup(strHelpFile);
    Enfin dans ma classe CMainFrame, dérivée de CFrameWnd, j'ai rajouté dans le header la fonction virtuelle HtmlHelp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //{{AFX_VIRTUAL(CMainFrame)
    public:
            virtual void HtmlHelp (DWORD dwData, UINT nCmd = HELP_CONTEXT);
    //}}AFX_VIRTUAL
    et dans mon cpp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
            ON_COMMAND(ID_HELP, CFrameWnd::OnHelp)
    END_MESSAGE_MAP()
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void CMainFrame::HtmlHelp(DWORD dwData, UINT nCmd) 
    {
        MyApp *pApp=static_cast<MyApp*>(AfxGetApp());
        ::HtmlHelp(m_hWnd, pApp->m_pszHelpFilePath, HH_HELP_CONTEXT,
            nCmd == HELP_CONTEXT ? dwData : 0);
    }
    Voilà. Ce que j'obtiens, c'est que quand mon application se créée, si j'appuie sur F1, rien ne se passe. Il faut que je la minimise puis la fasse reapparaitre pour qu'il se passe quelque chose si j'appuie sur F1. J'ai alors le message d'erreur suivant : "Le démarrage de l'aide a échoué".
    Si vous pouvez m'aider...merci beaucoup d'avance

    pense à mettre la balise de code, merci Farscape

  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,
    le fichier .chm s'execute si on double clic dessus ?
    le fichier est bien placé au meme emplacement que l'executable ?


  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3
    Par défaut
    oui pour le chm pas de probleme, il s'execute quand on double clique dessus et il se copie bien avec l'executable. Pour ça, pas de problèmes. Et j'ai mis le même nom pour tout, aussi bien le chm que le TargetName et l'InputName...

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/04/2009, 17h03
  2. Intégration d'un fichier CHM a mon application
    Par souminet dans le forum Débuter
    Réponses: 7
    Dernier message: 02/12/2008, 10h20
  3. Traiter 100 fichiers avec une boucle sous VBA excel
    Par sebastien06 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/04/2008, 09h39
  4. [MFC] Intégration d'un graphique dans une mfc
    Par Nergaahl dans le forum MFC
    Réponses: 1
    Dernier message: 22/03/2006, 16h08
  5. Integrer un fichier CHM à une application
    Par iceman2001 dans le forum EDI
    Réponses: 7
    Dernier message: 30/11/2005, 14h49

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