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 :

background d'un dockablepane


Sujet :

MFC

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Par défaut background d'un dockablepane
    Bonjour,
    j'ai voulu créer des champs textes et des boutons dans un dockablepane.
    Pour cette raison j'ai créé une classe qui hérite de cdockablePane.
    Le probléme est que ce dockablePane n'a pas de background.
    C'est à dire j'aurai dans les espaces dont lesquelles j'ai rien affichés dans le dockablepane, le backround de mon bureau.
    voilà une image qui décrit mon dockablepane

    voilà le fichier .h
    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
     
    #pragma once
     
    class CdpCordinates : public CDockablePane 
    {
    public:
    	//constrcuteur par défaut
    	CdpCordinates();
    	//destructeur
    	~CdpCordinates();
    	//méthodes
    	void AdjustLayout();
    private:
    	CEdit m_X;
    	CEdit m_Y;
    	CEdit m_Z;
    	CStatic m_stX;
    	CStatic m_stY;
    	CStatic m_stZ;
    	CButton m_Update;
    	CFont m_fntList;
    	CMFCButton m_button;
     
    protected:
    	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
    	afx_msg void OnSize(UINT nType, int cx, int cy);
    	afx_msg void OnSettingChange(UINT uFlags, LPCTSTR lpszSection);
    	void SetListFont();
    	DECLARE_MESSAGE_MAP()
    };

    voilà le fiichier .cpp
    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    #include "stdafx.h"
    #include "dp_Coordinates.h"
     
     
    CdpCordinates::CdpCordinates()
    {
    }
    CdpCordinates::~CdpCordinates()
    {
    }
    BEGIN_MESSAGE_MAP(CdpCordinates, CDockablePane)
    	ON_WM_CREATE()
    	ON_WM_SIZE()
    	ON_WM_SETTINGCHANGE()
    END_MESSAGE_MAP()
     
     
    void CdpCordinates::AdjustLayout()
    {
    	if (GetSafeHwnd() == NULL)
    	{
    		return;
    	}
    	CRect rectClient,rectX,rectY,rectZ,rectStX,rectStY,rectStZ;
    	GetClientRect(rectClient);
     
    	m_X.GetWindowRect(&rectX);
    	m_Y.GetWindowRect(&rectY);
    	m_Z.GetWindowRect(&rectZ);
    	m_stX.GetWindowRect(&rectStX);
    	m_stY.GetWindowRect(&rectStY);
    	m_stZ.GetWindowRect(&rectStZ);
     
    	int cyX = rectX.Size().cy;
    	int cyY = rectY.Size().cy;
    	int cyZ = rectZ.Size().cy;
    	int cxX= rectStX.Size().cx;
    	m_stX.SetWindowPos(NULL,rectClient.left+5,rectClient.top+5,20,30,SWP_NOACTIVATE | SWP_NOZORDER);
    	m_stY.SetWindowPos(NULL,rectClient.left+5,rectClient.top+cyX+5,rectClient.Width(),30,SWP_NOACTIVATE | SWP_NOZORDER);
    	m_X.SetWindowPos(NULL,30,rectClient.top+5,50,30,SWP_NOACTIVATE | SWP_NOZORDER);
    }
     
    int CdpCordinates::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    	if (CDockablePane::OnCreate(lpCreateStruct) == -1)
    		return -1;
     
    	CRect rectDummy;
    	rectDummy.SetRectEmpty();
    	const DWORD dwViewStyle = WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST | WS_BORDER | CBS_SORT | WS_CLIPSIBLINGS | WS_CLIPCHILDREN;
    	m_X.Create(dwViewStyle,rectDummy,this,1);
    	m_Y.Create(dwViewStyle,rectDummy,this,1);
    	m_Z.Create(dwViewStyle,rectDummy,this,1);
    	m_stX.Create("X =",dwViewStyle,rectDummy,this,1);
    	m_stY.Create("Y =",dwViewStyle,rectDummy,this,1);
    	m_stZ.Create("Z =",dwViewStyle,rectDummy,this,1);
    	//SetBkColor(geth,RGB(255,0,0));
    	return 1;
    }
    void CdpCordinates::OnSize(UINT nType, int cx, int cy)
    {
    	CDockablePane::OnSize(nType, cx, cy);
    	AdjustLayout();
    }
    void CdpCordinates::OnSettingChange(UINT uFlags, LPCTSTR lpszSection)
    {
    	CDockablePane::OnSettingChange(uFlags, lpszSection);
    	SetListFont();
    }
     
    void CdpCordinates::SetListFont()
    {
    ::DeleteObject(m_fntList.Detach());
     
    	LOGFONT lf;
    	afxGlobalData.fontRegular.GetLogFont(&lf);
     
    	NONCLIENTMETRICS info;
    	info.cbSize = sizeof(info);
     
    	afxGlobalData.GetNonClientMetrics(info);
     
    	lf.lfHeight = info.lfMenuFont.lfHeight;
    	lf.lfWeight = info.lfMenuFont.lfWeight;
    	lf.lfItalic = info.lfMenuFont.lfItalic;
     
    	m_fntList.CreateFontIndirect(&lf);
     
    	m_X.SetFont(&m_fntList);
    	m_Y.SetFont(&m_fntList);
    	m_Z.SetFont(&m_fntList);
    	m_stX.SetFont(&m_fntList);
    	m_stY.SetFont(&m_fntList);
    	m_stZ.SetFont(&m_fntList);
    }
    Merci pour vos aides

  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,
    si c'est pour faire afficher des contrôles, le mieux est de déclarer une boite de dialogue dans ton pane .
    tu affiches tes contrôles dans ta dialogue non modale,
    tu la créée sur le onCreate du pane ,
    et tu adaptes la taille de celle-ci sur le onSize.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Par défaut
    Bonjour,
    Merci beaucoup farscape.
    mais j'ai voulu créer ces champs dans le dockablepane. Est ce que ceci n'est pas faisable avec le dockablepane,

  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,
    le dockpane est un conteneur il n'est pas fait pour recevoir des contrôles directement dedans.
    j'ai répondu a ta problématique dans ton autre post.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Par défaut
    Merci farscape

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

Discussions similaires

  1. comment faire un background transparent?
    Par guigui1005 dans le forum Composants
    Réponses: 5
    Dernier message: 17/05/2012, 21h45
  2. modififier l'opacité seulement pour le background
    Par Jorus dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 15/08/2010, 16h18
  3. Réponses: 11
    Dernier message: 20/09/2007, 14h51
  4. [langage] fentetre MS DOS en background???
    Par Ludo167 dans le forum Langage
    Réponses: 9
    Dernier message: 13/08/2004, 15h10
  5. Réponses: 8
    Dernier message: 09/04/2004, 14h03

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