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 confirm�
    Inscrit en
    Juin 2004
    Messages
    116
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    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 confirm�
    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
    Par d�faut
    Salut,

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

  3. #3
    Membre confirm�
    Inscrit en
    Juin 2004
    Messages
    116
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    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 �m�rite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    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 confirm�
    Inscrit en
    Juin 2004
    Messages
    116
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    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 �m�rite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    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, 12h21
  2. Widget Table Properties Sheet
    Par azerr dans le forum SWT/JFace
    R�ponses: 2
    Dernier message: 24/03/2008, 20h44
  3. [MFC] Property sheet et controles
    Par LapinGarou dans le forum MFC
    R�ponses: 3
    Dernier message: 21/12/2005, 10h44
  4. Property sheet
    Par LapinGarou dans le forum MFC
    R�ponses: 2
    Dernier message: 05/12/2005, 09h05
  5. [MFC]Property Sheet resizable
    Par fr66 dans le forum MFC
    R�ponses: 4
    Dernier message: 14/06/2004, 17h28

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