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

Visual C++ Discussion :

comment afficher un CString dans une boite de dialog?


Sujet :

Visual C++

  1. #21
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Tu devrais essayer avec cette petite modification, et me dire ce que ça donne
    (je n'ai rien pour tester ni même pour compiler, mais il ne devrait pas y avoir d'erreur... en théorie.

    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
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    BOOL CImage::CalcMarqueB(
     CImage & marque,
     CString strmarq,
     int m_hauteur,
     int m_largeur,
     char Rs[]
     )
    {
    if(!m_hDib)
    	return FALSE;	// DIB non valide
     
    if(!marque.m_hDib)
    	return FALSE;	// DIB non valide
     
    LPBITMAPINFOHEADER BmSrcInfo=(LPBITMAPINFOHEADER)GlobalLock(m_hDib);
    LPBITMAPINFO biSrc=(LPBITMAPINFO)BmSrcInfo;
     
    LPBITMAPINFOHEADER BmDestInfo=(LPBITMAPINFOHEADER)GlobalLock(marque.m_hDib);
    LPBITMAPINFO biDest=(LPBITMAPINFO)BmDestInfo;
     
    // Détermination du nombre de couleurs
    int nColors = BmSrcInfo->biClrUsed ? BmSrcInfo->biClrUsed : 0x1FF & (1 << BmSrcInfo->biBitCount);
     
    // Détermination de la zone des bits de l'image source et largeur lignes en octets
    BYTE* lpSrcBits = (BYTE*)BmSrcInfo + BmSrcInfo->biSize + nColors*sizeof(RGBQUAD);
    int nScanWidth = WIDTHBYTES(BmSrcInfo->biWidth * BmSrcInfo->biBitCount);
     
    // Détermination de la zone des bits de l'image destination
    BYTE* lpDestBits = (BYTE*)BmDestInfo + BmDestInfo->biSize + nColors*sizeof(RGBQUAD);
     
    // Traitement différent selon nombre de bits/pixel
     
     
     
    int x,y;
    int L = strmarq.GetLength();
     
    double resultat = 0;
    int Cmp = 0;
     
    for(int i=0 ; i<L ; i++)
    {
    	while(Cmp < (i+1)*m_hauteur*m_largeur)
    	{
    		for(x=0 ; x<BmSrcInfo->biWidth ; x++)
    		{	
    			for(y=0 ; y<BmSrcInfo->biHeight ; y++)
    			{
    				if(lpDestBits[y*nScanWidth+x] == 255)
    					resultat += lpSrcBits[y*nScanWidth+x];
    				else
    					resultat -= lpSrcBits[y*nScanWidth+x];
     
    				Cmp++;
    			}
    		}
    	}
    	/////////////////////////////////////////////////////////
    	// FBT - Modifié ici : Utilise les caractères '1' et '0'
    	if( resultat > m_largeur * m_hauteur -50)
    		Rs[i] = _T('1');
    	else
    		Rs[i] = _T('0');
    	/////////////////////////////////////////////////////////
    }
     
    GlobalUnlock(m_hDib);
    GlobalUnlock(marque.m_hDib);
     
    return TRUE;
    }
     
     
     
    void CDTatoSpacBlocDlg::OnDetect()
    {
    	CString str;
    	int nindex = m_mfiles.GetCurSel();
    	if((nindex != LB_ERR))
    		m_mfiles.GetText( nindex,str );
     
    	str = m_pParent->m_repApp+"Marques\\"+str;
    	m_Marque.LoadFile(str);
     
     
    	if((m_Marque.GetWidth() < m_Image.GetWidth())&&(m_Marque.GetHeight() < m_Image.GetHeight()))
    	{
    		//Rs est un tableau où il faut récuperer les valeurs calculées sur chaque bloc
    		//	CString Rs="";
     
    		//	m_Image.CalcMarqueB(m_Marque,Rs);
    		CString strmarq = "1110011";
    		char Rs[]= " 0000000";
    		int m_hauteur=24;        // la taille du marque en generale
    		int m_largeur=24;
    		m_Image.CalcMarqueB(m_Marque,strmarq,m_hauteur,m_largeur,Rs);
     
    		str.Format("Resultat de comptage : %s",Rs);
    		m_Rs = str;
     
    		UpdateData(FALSE);
    	}
    	else
    		AfxMessageBox("Dimensions non identiques ... ");
    }
    PS: J'en ai profité pour réindenter ton code convenablement.
    Cette fois-ci, recopie-le complètement, c'est un conseil: Cela évitera de reposter un code mal indenté par la suite...
    PPS: Pense à rajouter des const dans les paramètres pointeurs et références qui ne sont pas modifiés, et pense à commenter aussi chaque paramètre...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  2. #22
    Membre éclairé Avatar de meera
    Inscrit en
    Mai 2006
    Messages
    294
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 294
    Par défaut
    non plus
    il m'affiche l'état initial de Rs :000000
    c'est comme qu'il n'entre pas ds la fonction

    est ce que ça peut que l'erreur vient de la fonction dont laquelle j'insére la marque:
    voici la fonction:
    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
     
    BOOL CImage::AjoutMarqueBB(CImage& marque, CString strmarq, int m_hauteur,int m_largeur){
     
        if(!m_hDib)
    		return FALSE;	// DIB non valide
     
    	if(!marque.m_hDib)
    		return FALSE;	// DIB non valide
     
     
    	LPBITMAPINFOHEADER BmSrcInfo=(LPBITMAPINFOHEADER)GlobalLock(m_hDib);
    	LPBITMAPINFO biSrc=(LPBITMAPINFO)BmSrcInfo;
     
    	LPBITMAPINFOHEADER BmDestInfo=(LPBITMAPINFOHEADER)GlobalLock(marque.m_hDib);
    	LPBITMAPINFO biDest=(LPBITMAPINFO)BmDestInfo;
     
    	// Détermination du nombre de couleurs
    	int nColors = BmSrcInfo->biClrUsed ? BmSrcInfo->biClrUsed : 0x1FF & (1 << BmSrcInfo->biBitCount);
     
    	// Détermination de la zone des bits de l'image source et largeur lignes en octets
    	BYTE* lpSrcBits = (BYTE*)BmSrcInfo+BmSrcInfo->biSize+nColors*sizeof(RGBQUAD);
    	int nScanWidth = WIDTHBYTES(BmSrcInfo->biWidth * BmSrcInfo->biBitCount);
     
    	// Détermination de la zone des bits de l'image destination
    	BYTE* lpDestBits = (BYTE*)BmDestInfo+BmDestInfo->biSize+nColors*sizeof(RGBQUAD);
     
       	// Traitement différent selon nombre de bits/pixel
    	int x,y;
     
    	int	L=strmarq.GetLength();
     
     
    				int Cmp=0;						
     
    			for (int i=1;i<L+1;i++)
    			{
     
    				while(Cmp<i*m_hauteur*m_largeur)
    							{
     
    					for( x=0; x<BmSrcInfo->biWidth; x++)
    					{
     
    						for( y=0; y<BmSrcInfo->biHeight; y++)
    						{
     
    					if (strmarq[i-1]==1)
    					{
     
    			if(lpDestBits[y*nScanWidth+x] == 255 && lpSrcBits[y*nScanWidth+x] != 255)
    			   lpSrcBits[y*nScanWidth+x]++;
     
    			if(lpDestBits[y*nScanWidth+x]==0 && lpSrcBits[y*nScanWidth+x]!=0)
    			   lpSrcBits[y*nScanWidth+x]--;
    					}
    					if (strmarq[i-1]==0)
    					{
    	if(lpDestBits[y*nScanWidth+x] == 0 && lpSrcBits[y*nScanWidth+x] != 0)
    			   lpSrcBits[y*nScanWidth+x]++;
     
    			if(lpDestBits[y*nScanWidth+x]==255 && lpSrcBits[y*nScanWidth+x]!=255)
    			   lpSrcBits[y*nScanWidth+x]--;
    					}
    					Cmp++;
    				}
    				}
     
    			}
    					return Cmp;
    			}
     
     
        GlobalUnlock(m_hDib);
    	GlobalUnlock(marque.m_hDib);
     
        return TRUE;
     
    }
    et l'appelle:
    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
     
    void CTatoSpacBlocMDlg::OnMarquer(){
    	// TODO: Add your control notification handler code here
     
    	//??? A faire
    	CString strmarq = "1110011";
    //	m_Image.AjoutMarqueB(m_Marque,strmarq );
    	int	m_hauteur=32;
    	int m_largeur=32;
    	m_Image.AjoutMarqueBB(m_Marque,strmarq ,m_hauteur,m_largeur);
     
     
    	// nom image cible = nomde la marque _ nom de l'image d'origine
        int indice;
    	indice = m_Marque.m_Name.ReverseFind('\\');
    	CString str1,str2,str3;
    	str1 = m_Marque.m_Name.Right(m_Marque.m_Name.GetLength()-indice-1);
    	str1 = str1.Left(str1.ReverseFind('.'));
    	str2 = m_Marque.m_Name.Left(indice);
    	str2 = str2.Left(str2.ReverseFind('\\')+1);
     
     
    	str3.Format("%sCibles\\%s",str2,str1);
    	indice = m_Image.m_Name.ReverseFind('\\');
    	str1 = m_Image.m_Name.Right(m_Image.m_Name.GetLength()-indice-1);
    	str2.Format("%s_%s_%s",str3,strmarq,str1);
     
        m_Image.SaveFile(str2);
     
    	OnOK();
     
    }
    donc ce que je fais, c'est d'ouvrir l'image marquée (résultante de la fonction marqueé)
    puis je click sur detect , cette fois çi je dois afficher la séquence 100...

  3. #23
    Membre éclairé Avatar de meera
    Inscrit en
    Mai 2006
    Messages
    294
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 294
    Par défaut
    j'ai fait quelques modifications ds mes fonctions
    parceque je vois qu'à la chaque incrémentation de i , x et y s'initialisent par 0 ( n'est ce pas???)
    et moi je ne veux pas ça, je veux que la fonction réccupére les derniérs pixels ( considérent comme état initial pour compter i*m_hauteur*m_largeur)
    pour cela j'ai changé les boucle for par while , et aussi CString strmarq par char strmarq[]:
    voici la fonction d'insertion:

    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
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
     
    BOOL CImage::AjoutMarqueBB(CImage& marque, char strmarq[], int m_hauteur,int m_largeur){
     
        if(!m_hDib)
    		return FALSE;	// DIB non valide
     
    	if(!marque.m_hDib)
    		return FALSE;	// DIB non valide
     
     
    	LPBITMAPINFOHEADER BmSrcInfo=(LPBITMAPINFOHEADER)GlobalLock(m_hDib);
    	LPBITMAPINFO biSrc=(LPBITMAPINFO)BmSrcInfo;
     
    	LPBITMAPINFOHEADER BmDestInfo=(LPBITMAPINFOHEADER)GlobalLock(marque.m_hDib);
    	LPBITMAPINFO biDest=(LPBITMAPINFO)BmDestInfo;
     
    	// Détermination du nombre de couleurs
    	int nColors = BmSrcInfo->biClrUsed ? BmSrcInfo->biClrUsed : 0x1FF & (1 << BmSrcInfo->biBitCount);
     
    	// Détermination de la zone des bits de l'image source et largeur lignes en octets
    	BYTE* lpSrcBits = (BYTE*)BmSrcInfo+BmSrcInfo->biSize+nColors*sizeof(RGBQUAD);
    	int nScanWidth = WIDTHBYTES(BmSrcInfo->biWidth * BmSrcInfo->biBitCount);
     
    	// Détermination de la zone des bits de l'image destination
    	BYTE* lpDestBits = (BYTE*)BmDestInfo+BmDestInfo->biSize+nColors*sizeof(RGBQUAD);
     
       	// Traitement différent selon nombre de bits/pixel
     
    //	int	L=Lenght( strmarq);
    	for (int L=0;strmarq[L]; L++)
    		return L;
     
     
    				int Cmp=0,x=0,y=0;						
     
    			for (int i=1;i<L+1;i++)
    			{
     
    				while(Cmp<i*m_hauteur*m_largeur)
    							{
     
    					while(x< BmSrcInfo->biWidth)
    					{
     
    						while(  y<BmSrcInfo->biHeight)
    						{
     
    					if (strmarq[i-1]==1)
    					{
     
    			if(lpDestBits[y*nScanWidth+x] == 255 && lpSrcBits[y*nScanWidth+x] != 255)
    			   lpSrcBits[y*nScanWidth+x]++;
     
    			if(lpDestBits[y*nScanWidth+x]==0 && lpSrcBits[y*nScanWidth+x]!=0)
    			   lpSrcBits[y*nScanWidth+x]--;
    					}
    					if (strmarq[i-1]==0)
    					{
    	if(lpDestBits[y*nScanWidth+x] == 0 && lpSrcBits[y*nScanWidth+x] != 0)
    			   lpSrcBits[y*nScanWidth+x]++;
     
    			if(lpDestBits[y*nScanWidth+x]==255 && lpSrcBits[y*nScanWidth+x]!=255)
    			   lpSrcBits[y*nScanWidth+x]--;
    					}
    					Cmp++;
    				}
     
    					y++; 
    				}
    					 if (y==BmSrcInfo->biHeight) y=0;
    					x++;
     
    			}
    				//	return Cmp;
    			}
     
     
        GlobalUnlock(m_hDib);
    	GlobalUnlock(marque.m_hDib);
     
        return TRUE;
     
    }
     
    // et l'appelle:
    void CTatoSpacBlocMDlg::OnMarquer(){
    	// TODO: Add your control notification handler code here
     
    	//??? A faire
    //	CString strmarq = "1110011";
    	char strmarq[]="1110011";
    //	m_Image.AjoutMarqueB(m_Marque,strmarq );
    	int	m_hauteur=32;
    	int m_largeur=32;
    	m_Image.AjoutMarqueBB(m_Marque,strmarq ,m_hauteur,m_largeur);
     
     
    	// nom image cible = nomde la marque _ nom de l'image d'origine
        int indice;
    	indice = m_Marque.m_Name.ReverseFind('\\');
    	CString str1,str2,str3;
    	str1 = m_Marque.m_Name.Right(m_Marque.m_Name.GetLength()-indice-1);
    	str1 = str1.Left(str1.ReverseFind('.'));
    	str2 = m_Marque.m_Name.Left(indice);
    	str2 = str2.Left(str2.ReverseFind('\\')+1);
     
     
    	str3.Format("%sCibles\\%s",str2,str1);
    	indice = m_Image.m_Name.ReverseFind('\\');
    	str1 = m_Image.m_Name.Right(m_Image.m_Name.GetLength()-indice-1);
    	str2.Format("%s_%s_%s",str3,strmarq,str1);
     
        m_Image.SaveFile(str2);
     
    	OnOK();
     
    }
    pour la detection:

    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
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
     
    BOOL CImage::CalcMarqueB(
     CImage & marque,
     char strmarq[],
     int m_hauteur,
     int m_largeur,
     char Rs[]
     )
    {
    if(!m_hDib)
    	return FALSE;	// DIB non valide
     
    if(!marque.m_hDib)
    	return FALSE;	// DIB non valide
     
    LPBITMAPINFOHEADER BmSrcInfo=(LPBITMAPINFOHEADER)GlobalLock(m_hDib);
    LPBITMAPINFO biSrc=(LPBITMAPINFO)BmSrcInfo;
     
    LPBITMAPINFOHEADER BmDestInfo=(LPBITMAPINFOHEADER)GlobalLock(marque.m_hDib);
    LPBITMAPINFO biDest=(LPBITMAPINFO)BmDestInfo;
     
    // Détermination du nombre de couleurs
    int nColors = BmSrcInfo->biClrUsed ? BmSrcInfo->biClrUsed : 0x1FF & (1 << BmSrcInfo->biBitCount);
     
    // Détermination de la zone des bits de l'image source et largeur lignes en octets
    BYTE* lpSrcBits = (BYTE*)BmSrcInfo + BmSrcInfo->biSize + nColors*sizeof(RGBQUAD);
    int nScanWidth = WIDTHBYTES(BmSrcInfo->biWidth * BmSrcInfo->biBitCount);
     
    // Détermination de la zone des bits de l'image destination
    BYTE* lpDestBits = (BYTE*)BmDestInfo + BmDestInfo->biSize + nColors*sizeof(RGBQUAD);
     
    // Traitement différent selon nombre de bits/pixel
     
     
     
    	for (int L=0;strmarq[L]; L++)
    		return L;
    	double resultat=0;
    				int Cmp=0,x=0,y=0;						
     
    			for (int i=1;i<L+1;i++)
    			{
     
    				while(Cmp<i*m_hauteur*m_largeur)
    							{
     
    					while(x< BmSrcInfo->biWidth)
    					{
     
    						while(  y<BmSrcInfo->biHeight)
    						{
    				if(lpDestBits[y*nScanWidth+x] == 255)
    					resultat += lpSrcBits[y*nScanWidth+x];
    				else
    					resultat -= lpSrcBits[y*nScanWidth+x];
     
    				Cmp++;
    			}
    			y++;  
     
    		}
    					if (y==BmSrcInfo->biHeight) y=0;
    					x++;
    	}
    	/////////////////////////////////////////////////////////
    	// FBT - Modifié ici : Utilise les caractères '1' et '0'
    	if( resultat > m_largeur * m_hauteur -50)
    		Rs[i] = _T('1');
    	else
    		Rs[i] = _T('0');
    	/////////////////////////////////////////////////////////
    }
     
    GlobalUnlock(m_hDib);
    GlobalUnlock(marque.m_hDib);
     
    return TRUE;
    }
     
    et l'appelle:
    oid CDTatoSpacBlocDlg::OnDetect() 
    {
     
    	// TODO: Add your control notification handler code here
    	CString str;
        int nindex = m_mfiles.GetCurSel();
        if((nindex != LB_ERR))  m_mfiles.GetText( nindex,str );
     
    	str = m_pParent->m_repApp+"Marques\\"+str;
    	m_Marque.LoadFile(str);
     
     
    	if((m_Marque.GetWidth() < m_Image.GetWidth())&&(m_Marque.GetHeight() < m_Image.GetHeight())){
     
    		//Rs est un tableau où il faut récuperer les valeurs calculées sur chaque bloc
    	//	CString Rs="";
     
    	//	m_Image.CalcMarqueB(m_Marque,Rs);
    		//	CString strmarq = "1110011";
    			char strmarq[]="1110011";
    			char Rs[]= " 0000000";
    			int m_hauteur=24;        // la taille du marque en generale
    			int m_largeur=24;
    		m_Image.CalcMarqueB(m_Marque,strmarq,m_hauteur,m_largeur,Rs);
     
     
    			str.Format("Resultat de comptage : %s",Rs);	
    		m_Rs = str;
     
    		UpdateData(FALSE);
    	}
     
    	else  AfxMessageBox("Dimensions non identiques ... ");
     
    }
    mais toujours le resultat affiché c'est 0000000( etat initial de Rs)
    je sais pas ou est l'erreur???????????,,,,,

Discussions similaires

  1. Comment afficher plusieurs elements dans une meme alert()
    Par monphp dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/05/2007, 22h46
  2. Réponses: 5
    Dernier message: 09/05/2007, 15h10
  3. Réponses: 13
    Dernier message: 09/03/2006, 18h17
  4. Comment afficher des JPEG dans une application Delphi ?
    Par Bouguennec dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/09/2005, 21h18
  5. Comment afficher les toolTipText dans une zone de statut ?
    Par nicok01 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 28/01/2005, 13h32

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