none
Comment faire un Wizard avec Visual Studio 2005 RRS feed

  • Question

  • Bonjour à tous.

    Ma question me parait toute bête, mais pourtant je cherche depuis deux jours sans rien comprendre. Je veux tout simplement faire un wizard pour mon application. J'utilise Visual Studio 2005 Edition Professionnelle, et je programme en C++ (non managé).

    D'après ce que j'ai compris, un wizard est une property sheet, à laquelle on affecte le flag PSH_WIZARD97 pour qu'elle représente les pages non par onglet mais les unes après les autres.

    Je n'ai pas trouvé d'assistant pour créer une property sheet dans Visual Studio, donc j'imagine qu'il faut les créer à la mimine.

    J'ai copié un code fait par un collègue qui définit une classe héritant de CPropertySheet. Cette classe utilise une méthode AddPage pour ajouter les pages, qui doivent être de la classe CPropertyPage.

    Ensuite j'ai voulu créer des PropertyPage. Pour ça j'ai trouvé un assistant dans Visual Studio, qui permet d'en ajouter. Mais la classe crée associée à la property page est une classe n'héritant pas de CPropertyPage :

    class ATL_NO_VTABLE CPpMaPropertyPage :
    public CComObjectRootEx<CComSingleThreadModel>,
    public CComCoClass<CPpMaPropertyPage, &CLSID_PpMaPropertyPage>,
    public IPropertyPageImpl<CPpMaPropertyPage>,
    public CDialogImpl<CPpMaPropertyPage>

    Il semble qu'il faille instancier non pas CPpMaPropertyPage mais CComObject<CPpMaPropertyPage>

    Néamoins la méthode CPropertySheet::AddPage refuse que je lui donne une instance de cette classe en paramètre. Si je cast un objet de classe CComObject<CPpMaPropertyPage> en CPropertyPage, ça compile mais l'excution crashe (sur une assertion de debug non vérifiée) lors de l'appel à AddPage, dans un appel interne à une fonction "InternalQueryInterface".

    J'ai aussi trouvé quelque part une méthode utilisant les WTL, mais ça me parait bizarre de devoir installer ça en plus.

    Bref, ma question est : quelle est la méthode recommandée pour créer un assistant en C++ avec Visual Studio ?


    Merci beaucoup

    François

    mercredi 31 janvier 2007 19:25

Toutes les réponses

  • Alors je viens de comprendre : pour ajouter une property page il ne faut pas passer par l'assistant d'ajout de classe mais par l'assistant d'ajout de Dialog dans le gestionnaire de ressources ! Et là du coup ça crée bien un CPropertyPage... donc désolé pour cette question

    Du coup, ça parait peu utile l'assistant ATL Property Page

    François
    jeudi 1 février 2007 08:37