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] property sheet


Sujet :

MFC

  1. #1
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    Points : 50
    Points
    50
    Par défaut [MFC] property sheet
    Salut

    j' utilise une property sheet sous WinCE. J'ai créé une appli boite de dialog, et je souhaite afficher la property sheet dans la boite de dialogue par défaut du programme.

    J'ai un objet CSheet (dérivé de CPropertySheet). Je donne le style child à la property sheet que je créé afin que celle-ci soit comprise dans la fenetre principale.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_sheet.Create(this, WS_CHILD | WS_VISIBLE);
    Il doit me manquer un attribut parce que ma property sheet s'ouvre dans une nouvelle boite de dialogue

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 101
    Points : 82
    Points
    82
    Par défaut
    Salut,

    Est-ce que tu lui affecte la CDialog en parent ?

  3. #3
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    Points : 50
    Points
    50
    Par défaut
    Oui, je met this dans le create.

    Quand on utilise l'éditeur de ressources pour créer une boite de dialogue, il suffit de mettre Style: child et Border:None pour que ca marche.

    Ici, vu que la property sheet n'est pas définie en ressource, il faut que je mette l'attribut border none à la création. L'ennui, c'est que je ne sais pas comment il s'appelle...

  4. #4
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    Soit que je suis un peu perdu ou alors c'est une nouvelle façon d'utiliser les CPropertySheet.

    Si c'est une boite de dialogue avec des onglets dont tu parles tu dois crées à l'aide de l'éditeur de ressource des CPropertyPages et tu génères une classe CPropertySheet.
    Ensuite dans le code avec CPropertySheet::Addpage() tu ajoutes chacun de tes CPropertyPage.

  5. #5
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    Points : 50
    Points
    50
    Par défaut
    Apparement je n'ai pas été très clair... je vais tacher de préciser un peu mon problème.

    J'ai créé une appli boite de dialog. Dans la boite de dialogue principale (Classe associée : CMonAppliDlg), je cherche à afficher une property sheet contenant deux property pages. Comme Gabrielly l'a dit, je génère donc une classe CSheet dérivée de CPropertySheet.

    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
     
    class CSheet : public CPropertySheet
    {
        DECLARE_DYNAMIC(CSheet)
     
    // Construction
    public:
        CSheet(UINT nIDCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0);
        CSheet(LPCTSTR pszCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0);
     
    // Attributes
    public:
     
    // Operations
    public:
     
    // Overrides
        // ClassWizard generated virtual function overrides
        //{{AFX_VIRTUAL(CSheet)
        public:
        //}}AFX_VIRTUAL
     
    // Implementation
    public:
     
        CPage1    m_page1;
        CPage2    m_page2;
     
        virtual ~CSheet();
     
        // Generated message map functions
    protected:
     
        void AddAllPages();
     
        //{{AFX_MSG(CSheet)
        //}}AFX_MSG
        DECLARE_MESSAGE_MAP()
    };
    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
    /////////////////////////////////////////////////////////////////////////////
    // CSheet
     
    IMPLEMENT_DYNAMIC(CSheet, CPropertySheet)
     
    CSheet::CSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)
        :CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
    {
        AddAllPages();
    }
     
    CSheet::CSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)
        :CPropertySheet(pszCaption, pParentWnd, iSelectPage)
    {
        AddAllPages();
    }
     
    CSheet::~CSheet()
    {
     
    }
     
    BEGIN_MESSAGE_MAP(CSheet, CPropertySheet)
        //{{AFX_MSG_MAP(CSheet)
        //}}AFX_MSG_MAP
    END_MESSAGE_MAP()
     
    /////////////////////////////////////////////////////////////////////////////
    // CSheet message handlers
     
    void CSheet::AddAllPages()
    {
        AddPage(&m_page1);
        AddPage(&m_page2);
    }
    Dans CMonAppliDlg je crée une variable membre de type CSheet. Et dans la fonction OninitDialog, j'utilise la fonction create

    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
    CMonAppliDlg ::CMonAppliDlg (CWnd* pParent /*=NULL*/)
        : CDialog(CMonAppliDlg ::IDD, pParent),
        m_sheet(_T(""))
    {
        //{{AFX_DATA_INIT(CMonAppliDlg )
        //}}AFX_DATA_INIT
        // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
        m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
     
        //ASSERT(m_sheet);
    }
     
    CMonAppliDlg ::~CMonAppliDlg ()
    {
        if (m_sheet)
        {
            delete m_sheet;
        }
    }
     
    void CMonAppliDlg ::DoDataExchange(CDataExchange* pDX)
    {
        CDialog::DoDataExchange(pDX);
        //{{AFX_DATA_MAP(CMonAppliDlg )
        //}}AFX_DATA_MAP
    }
     
    BEGIN_MESSAGE_MAP(CMonAppliDlg , CDialog)
        //{{AFX_MSG_MAP(CMonAppliDlg )
        //}}AFX_MSG_MAP
    END_MESSAGE_MAP()
     
    /////////////////////////////////////////////////////////////////////////////
    // CMonAppliDlg message handlers
     
    BOOL CMonAppliDlg ::OnInitDialog()
    {
        CDialog::OnInitDialog();
     
        // Set the icon for this dialog.  The framework does this automatically
        //  when the application's main window is not a dialog
        SetIcon(m_hIcon, TRUE);            // Set big icon
        SetIcon(m_hIcon, FALSE);        // Set small icon
     
        CenterWindow(GetDesktopWindow());    // center to the hpc screen
     
        m_sheet.Create(this, WS_CHILD);
        m_sheet.ShowWindow(SW_SHOW);
     
        return TRUE;  // return TRUE  unless you set the focus to a control
    }
    Le problème, c'est que contrairement à une dialog que j'aurais créé dans les ressources, je ne sais pas comment mettre l'attribut Border:none à ma property sheet du coup à l'exécution, j'ai ma property sheet qui apparait au dessus de ma fenetre de dialogue principale mon appli.

  6. #6
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    Il doit me manquer un attribut parce que ma property sheet s'ouvre dans une nouvelle boite de dialogue
    Je ne pense pas qu'il puisse manquer quoique ce soit.
    La property sheet définit une tout autre fenêtre à part entière avec ces CPropertyPages
    Tu dois donc avoir deux boites de dialogues qui s'affichent à l'écran.

    La property sheet est ouverte ou affiché simplement en faisant un DoModal() comme une boite de dialogue.

    Je crois que tu désire avoir la property sheet comme fenêtre principale.
    Si c'est le cas subsititue la dans le code de InitInstance de ta classe application à l'endroit même où ta boite de dialogue principale est appelé et affiché.

Discussions similaires

  1. Property Sheet en OwnerDraw
    Par vanitom dans le forum MFC
    Réponses: 0
    Dernier message: 04/08/2008, 13h21
  2. Widget Table Properties Sheet
    Par azerr dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 24/03/2008, 21h44
  3. [MFC] Property sheet et controles
    Par LapinGarou dans le forum MFC
    Réponses: 3
    Dernier message: 21/12/2005, 11h44
  4. Property sheet
    Par LapinGarou dans le forum MFC
    Réponses: 2
    Dernier message: 05/12/2005, 10h05
  5. [MFC]Property Sheet resizable
    Par fr66 dans le forum MFC
    Réponses: 4
    Dernier message: 14/06/2004, 18h28

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