begin process at 2010 02 10 09:34:34
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Graphique

 > 

redessiner un bouton après appui


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

redessiner un bouton après appui

mercredi 5 janvier 2005 à 11:55:01 | redessiner un bouton après appui

tdeco

Salut
En fait j'ai une boite de dialogue où j'ai plusieurs boutons.
Sur j'appui d'un bouton, je modifie une variable, puis j'envoie un message WM_DRAWITEM afin de redessiner le bouton
voici le code:

LRESULT CALLBACK ETAT_ALARME(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
 HDC hdcalarme;
 HWND hwndbouton;
 switch (message)
 {
  case WM_INITDIALOG:
   ETAT_ALARME_InitDialog(hDlg);
  return TRUE;
  
  case WM_COMMAND:
   switch (LOWORD(wParam)){
 
    case IDC_ALARME_ECLAIR:
      flag_ALARME_ECLAIR= OK;
      SendMessage(hDlg,WM_DRAWITEM,0,lParam);
      return TRUE;

//De meme pr les autres boutons

   }// end of switch (LOWORD(wParam))
 
  break;
  
  case WM_CLOSE://sortir du menu sans action (avec la croix X )
   DestroyWindow(hDlg);
  break;

  case WM_DRAWITEM:
   ETAT_ALARME_DrawButton (hDlg, (LPDRAWITEMSTRUCT)lParam);
  break;

 }  // end of switch (message)
    return FALSE;
}

void ETAT_ALARME_DrawButton (HWND hWnd, LPDRAWITEMSTRUCT pdi)
{
    
 switch (pdi->CtlID)
 {
  
  case IDC_ALARME_ECLAIR:
   if  (flag_ALARME_ECLAIR = = OK)  DrawIconEx (pdi->hDC, ptIn.x,ptIn.y, hIcon_OK,0,0,0,NULL, DI_NORMAL);
   else if (flag_ALARME_ECLAIR = = NONOK) DrawIconEx (pdi->hDC, ptIn.x,ptIn.y, hIcon_QUIT,0,0,0,NULL, DI_NORMAL);
  break;

//De meme pr les autres boutons

    //---------------------------------
 } //end of switch (pdi->CtlID)
}

Donc normalement, lorsque j'appui sur un bouton, il doit envoyer le message avec le "lparam" correspondant au bouton. Et c'est là d'où vient le pb.
Je veux envoyer la bonne valaur afin de rafraichir le bouton correspondant

Quelqu'un peut il m'aider

Merci d'avance

mercredi 5 janvier 2005 à 12:10:15 | Re : redessiner un bouton après appui

ymca2003

Pour redessiner le bouton, il suffit de faire InvalidateRect(hBtn, NULL, TRUE) et WM_DRAWITEM sera envoyé automtiquement par le système
mercredi 5 janvier 2005 à 13:09:34 | Re : redessiner un bouton après appui

tdeco

merci ca marche, mais si je veux redessiner tous les boutons à partir d'une autre boite de dialogue, quel message doit envoyer à la boite de dialogue destination?

mercredi 5 janvier 2005 à 13:13:44 | Re : redessiner un bouton après appui

ymca2003

Il te suffit de redessiner complètement le dialogue en question :
InvalidateRect(hDlg, NULL, TRUE);

le contenu du dialogue hDlg (et tous ses contrôles) seront redessinés.
mercredi 5 janvier 2005 à 16:04:42 | Re : redessiner un bouton après appui

tdeco

Ok je te remercie
j'ai encore un pb au niveau du raffraichissement. J'avais déja posé mon pb sur le forum et je n'avais pas eu bq de réponses.
voir : http://www.cppfrance.com/forum.v2.aspx?ID=362437

étant donné que tu as à l'air très calé sur ce point, peux tu m'aider s'il te plait?


Cette discussion est classée dans : bouton, case, wm, switch, alarme


Répondre à ce message

Sujets en rapport avec ce message

plus de precisions pour la communication multiple stp !!! [ par Xs ] salut !bon, recement, j'ai posté un msg demandant comment faire plusieurs boites de dialog(cf : plusieurs dialogs [API])bon, comme dit, ca marche.mais Screenmate defectueux [ par anthraxx ] Anthrax ignisque -- Le charbon et le feu J'essaye de faire un screenmate (une petite bestiole se promenant sur les fenetres), mais n'etant pas tres ex switch....case [ par cabarrus ] salut !!je veux un programme qui demande l'âge, puis qui affiche un message selon l'âge frappé en utilisant switch...case.voici mon programme mais j'a switch ... case [ par didrocks ] J'ai un problème est mon case:int n=App->run; // dépendant de la partie du programme en cours switch(n); { case 1: // intro { App->BmpDeFond = App-> switch case ? [ par jackky ] Bonjour depuis plusieurs jours je cherche a remplacer des mots d'une phrase par un autregenre la phrase a traduire:Bonjour , et bien voici ma petite p Problème avec WM_KEYDOWN: [ par cognac ] Pourquoi est-ce que "j" est toujours égal à 2 lorsque je presse F1(même la première fois). Je pensais qu'à chaque fois que je presse F1 "j" augmente d switch???? [ par kalf2000 ] salut, je voudrais savoir si l'on peut utiliser le switch de facon à si la variable que l'on compare prend 2 valeur différentes mais que l'on face la Switch et or [ par Tyroflan ] Je ne vois pas cmt mélanger la fonction switch avec un orexemple : int popo;cin >> popo;switch (popo) { case (65||97): / je voudr pb getline dans switch [ par tintin72 ] Bonjour,Je débute en c++ et travaille pour l'instant en mode console(ben ouais, mais pour apprendre c'est bien).j'ai un problème quand j'inclue getlin WM_MOUSELEAVE [ par JackosKing ] Pkoi j'ai l'erreur suivante:E:\tmp\TinyShell\Twiny.cpp(89) : error C2065: 'WM_MOUSELEAVE' : undeclared identifierquabnd je fais: case WM_MOUSEMOVE :


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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 : 0,780 sec (4)

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