begin process at 2012 05 29 17:25:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Graphique

 > 

Problème de GROS débutant : DeviceContext et dessin...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de GROS débutant : DeviceContext et dessin...

lundi 6 octobre 2003 à 21:02:18 | Problème de GROS débutant : DeviceContext et dessin...

tempirate


Je débute en visual c++ (amateurisme total) et j'ai commencé par faire un tout ptit logiciel de dessin..mais je n'arrive pas à trouver une fonction qui effacerait la fenêtre... DeleteDC je pense, mais si c'est ca je n'arrive pas à l'utiliser car ca n'a aucun effet.

Voilà le code :

----------------------------------------------------
BOOL CChap3Dlg::OnInitDialog()
{
CDialog::OnInitDialog();


//DEBUT DE MON CODE
//Initialise la variable avec le curseur de type flèche
m_bCursor = FALSE;

//Initialise la variable définissant la taille du curseur
m_iPvalue = 2;

//Initialise la variable définissant lintervalle de temps
m_iInterval = 2;

//Initialisation variables couleurs
m_iBlue =0;
m_iGreen =0;
m_iRed =0;

//Lance le timer avec un intervalle de 2 seconde
// SetTimer(ID_SIZE_TIMER,m_iInterval,NULL);

//FIN DE MON CODE

return TRUE; // return TRUE unless you set the focus to a control
}





void CChap3Dlg::OnMouseMove(UINT nFlags, CPoint point)
{
//DEBUT DE MON CODE
//Bouton gauche > Bleu
if ((nFlags & MK_LBUTTON) == MK_LBUTTON)
{
//Récupère le Device Context
CClientDC dc(this);




CPen lpen(PS_SOLID,m_iPvalue,RGB (m_iRed,m_iGreen,
m_iBlue
));


//Utilise le nouveau crayon
dc.SelectObject(&lpen);

//Dessine une ligne entre le point précédent et le point actuel
dc.MoveTo(m_iPrevX,m_iPrevY);
dc.LineTo(point.x,point.y);

//Enregistre le point actuel comme point précédent
m_iPrevX = point.x;
m_iPrevY = point.y;
}

//FIN DE MON CODE
CDialog::OnMouseMove(nFlags, point);
}

void CChap3Dlg::OnLButtonDown(UINT nFlags, CPoint point)
{


//DEBUT DE MON CODE

//Définit le point actuel comme point de départ
m_iPrevX = point.x;
m_iPrevY = point.y;


//FIN DE MON CODE

CDialog::OnLButtonDown(nFlags, point);
}

void CChap3Dlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
//DEBUT DE MON CODE

char lsChar; //La touche de caractère qui est appuyée
HCURSOR lhCursor; //Handle sur le curseur à afficher

//Convertit la valeur de la touche appuiée en un caractère
lsChar = char(nChar);

//Caractère "A"
if(lsChar == 'A')
{

//Arrete le timer
KillTimer(ID_SIZE_TIMER);

//affiche la fenetre de messages et récupere le résultat
if(m_dCtmDlg.DoModal() == IDOK)
{
m_iBlue=m_dCtmDlg.m_iBlueValue;
m_iGreen=m_dCtmDlg.m_iGreenValue;
m_iRed=m_dCtmDlg.m_iRedValue;
//OK cliqué, on récupère donc les valeurs
switch (m_dCtmDlg.m_iOption) {
case 0:
m_iPvalue = 1;
SetTimer(ID_SIZE_TIMER,m_iInterval,NULL);

break;
case 1:
m_iPvalue = 2;
break;
case 2:
m_iPvalue = 3;
break;
case 3:
m_iPvalue = 4;
break;
case 4:
m_iPvalue = 5;
break;
case 5:
m_iPvalue = 10;
break;
case 6:
m_iPvalue = 15;
break;
case 7:
m_iPvalue = 20;
break;
default:
m_iPvalue = 2;
break;
}
}


}

//Caractère "X"
if(lsChar == 'X')
{
//Charge le curseur de type flèche
lhCursor = AfxGetApp() -> LoadStandardCursor(IDC_ARROW);
//Affiche le curseur à l'écran
SetCursor(lhCursor);
//Quitte l'application
OnOK();
}

//Caractere C
if(lsChar == 'C')
{
CClientDC dc(this);
ReleaseDC(this,dc);

}


//FIN DE MON CODE
CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}

BOOL CChap3Dlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
//DEBUT DE MON CODE

//Si le curseur a été définit, alors retourne TRUE
if (m_bCursor)
return TRUE;
else

//FIN DE MON CODE

return CDialog::OnSetCursor(pWnd, nHitTest, message);
}


void CChap3Dlg::OnTimer(UINT nIDEvent)
{

//Modifie la taille du point
switch (m_iPvalue) {

case 1:
m_iPvalue++;
m_bDirection=TRUE;

break;

case 20:
m_iPvalue--;
m_bDirection=FALSE;

break;

default:
if(m_bDirection==TRUE) {m_iPvalue++;}
else {m_iPvalue--;}

}
CDialog::OnTimer(nIDEvent);
}

-------------------------------------------------------
La fenetre enfant n'a pas de code, juste des variables membres pour les controles


Comme vous pouvez voir c'est plus que basique... et histoire de tirer sur la corde, si vous pouviez me dire mes erreurs stupides, ou les barbarismes que j'ai pu faire...

merci ! (et bravo pour ce gros site qui m'a bien aidé)
lundi 6 octobre 2003 à 21:38:05 | Re : Problème de GROS débutant : DeviceContext et dessin...

BruNews

Administrateur CodeS-SourceS
DeleteDC n'est a employer que pour liberer un DC alloue par CreateDC ou CreateCompatibleDC.
InvalidateRect peut te servir pour ton background.
BruNews, ciao...
mardi 7 octobre 2003 à 07:45:16 | Re : Problème de GROS débutant : DeviceContext et dessin...

tempirate

Merci
Je vais recommencer en utilisant CreateDc, à la place déclarer un objet je pense...
mardi 7 octobre 2003 à 18:30:19 | Re : Problème de GROS débutant : DeviceContext et dessin...

tempirate


sinon petite question en passant : comment je supprime l'objet dc que j'ai crée ? et cela-va-til réinitialiser ma fenetre de dessin ? ca serait plus simple que de tout refaire.

cette question doit paraitre ridicule !
mardi 7 octobre 2003 à 18:42:59 | Re : Problème de GROS débutant : DeviceContext et dessin...

BruNews

Administrateur CodeS-SourceS
DeleteDC ou ReleaseDC suivant la fonction employee pour obtenir le DC. Le liberer n'a rien a voir avec l'erase background.
Tu devrais prendre ce bouquin sur:
http://perso.wanadoo.fr/persans-brunews/
CP5.zip et CP5Sources.zip
Tu y trouveras tout ce dont tu as besoin.
BruNews, ciao...
mardi 7 octobre 2003 à 18:48:28 | Re : Problème de GROS débutant : DeviceContext et dessin...

tempirate


Merci je vais télécharger ca tout de suite :)

Fallait bien que j'apprenne les bases, un jour ou l'autre !!
vendredi 10 octobre 2003 à 19:12:58 | Re : Problème de GROS débutant : DeviceContext et dessin...

tempirate

en fait comme j'ai fait ça sous MFC, je ne vois comment faire autrement qu'avec

CClientDC dc(this);

CreateDC(dc); me renvoie une erreur...

je suis trop nul!


Cette discussion est classée dans : code, case, break, uint, ipvalue


Répondre à ce message

Sujets en rapport avec ce message

Génération de nom de fonctions [ par buno ] Bijour les gens!J'ai besoin votre avis sur le "problème" suivant:Dans une fonction, on trouve ce morceau de code:switch (mode){  case 1: Save1bpp(); b SFML problème de sprites [ par pop70 ] Bonsoir tout le monde, j'ai un problème avec la bibliothèque SFML : Je veux afficher des surfaces de 50px*50px tout les 50px (normal quoi). Le foncti Pb ecriture sur LP0 ouLPT [ par baptchr55 ] Bonjour à tous, je m'adresse à vous suite à un nouveau problème. Dans la cadre d'un projet je cherche à pouvoir ecrire sur le port // et commander le C : Problème d'indirection de fichier [ par MasterShadows ] Bonsoir à tous,alors dans le cadre de mon projet de C (on va appeler ça une série TV thèque), qui doit être fait en mode console, l'utilisateur doit p Eternel problème... [ par dayvid75014 ] Bonjour à tous, Voici un ptit bout de code, ayant pour but de récupérer un flux en héxa d'un fichier MPEG et d'en tirer des informations (en-tête, Struct avec fonctions [ par Tybrenn ] Je suis débutant en c++. J'essaie de faire un prog. qui permet de maintenir l'inventaire d'un cellier. J'utilise une struct contenant l'info de chaque Récupérer les événements sur une frame dans C++ via JNI [ par PleoX ] Bonjour,(J'espère avoir mis mon sujet dans le bon thème. J'ai pas trouvé de thème plus aproprié.)Je suis en train de créer une application multi-touch Violation d'accès mémoire [ par zoneart ] Bonjour,Je suis débutant et j'ai écris deux trois lignes de codes que j'aimerais vous soumettre car une erreur de violation d'accès mémoire survient l logiciel Borland C++ et DevC++ [ par waldomania ] Bonjour, j'ai un grand problème car j'ai programmé un mini projet sur un Dev C++ mais ça marche pas à Borland C++ le projet est en langage c (!=C++) DATE MACHINE en C++ [ par eishtein ] bonjour tout la monde; pouvez vous m'aidez à optimiser la classe suivante de telle sorte à ce qu'elle nous donne la date courante: [code=cpp] class d


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,335 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales