begin process at 2012 05 28 17:43:51
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

Dessiner en dehors de WM_PAINT


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

Dessiner en dehors de WM_PAINT

samedi 5 mars 2005 à 09:42:46 | Dessiner en dehors de WM_PAINT

Matt67

Bonjour,
   
    J'ai un bout de programme qui dessine sur un static le contenu d'un buffer.
    Une explication vraiment grossiere.

void DoEvents()
{
    while(msg)
    {
       PeekMessage(..);
       DispatchMessage(...);
    }
}


void Dessine(HWND hDlgMere, int idStatic, int iBuffer, int Taill)
{
    InvalidateRectangle(GetDlgItem(idStatic, ...);   // Efface le statique
    DoEvents(); // Fonction qui permet de traiter les messages en attente, ici (entre autre )WM_PAINT
   
    GetDC(idStatic);
    MoveToEx(...);
    for(i=0; i<Taille; i++)
    {
        LineTo(...);
    }
    ReleaseDC(...);
}

Cette fonction est appele par un message perso dans la fonction de traitement des messages de la boite de dialog Mere (DialogProc)

    case WM_USER + 1:
       Dessine(hwndDlg, wParam, lParam, Taille);

    En tout j'ai 4 statiques donc a chaque message, je dessine sur le statique id=300, puis le statique id=301 puis id=302 et id=303 puis je recommence 300 ...

Ce qui m'embete c'est le DoEvents. Car les messages WM_USER+1 arrive rapidement donc le DoEvents peu laisser passer un WM_USER +1 alors que je n'ai pas traité celui d'avant.
Donc, comment rafraichir (effacer) un controle (ici un statique) pour que je puisse y dessiner dessus sans ce "DoEvents" et sans passer par le WM_PAINT.
Est ce que m'a methode pour dessiner est la bonne (GetDC ...)

J'espere que je me suis fait comprendre car pas facile a expliquer.

Merci pour vos réponses,

Matt...
samedi 5 mars 2005 à 11:53:08 | Re : Dessiner en dehors de WM_PAINT

vecchio56

Administrateur CodeS-SourceS
Salut,
Après InvalidateRectangle(), tu ne peux pas mettre un UpdateWindow par exemple?
En fait je ne comprends pas pourquoi c'est toi qui appelles DoEvents, j'ai l'habitude d'utiliser une telle boucle dans mon WinMain, et puis après je ne m'en soucie plus, les messages sont traités dès que c'est possible.
Par ailleurs je ne comprends pas non plus pourquoi tu veux effacer ton static si tu redessines tout de suite par dessus, ca va l'effacer du coup non? Si c'est non, il suffit de faire un FillRect et il est effacé.
En espérant t'avoir aidé un peu
dimanche 6 mars 2005 à 09:20:53 | Re : Dessiner en dehors de WM_PAINT

Matt67

Bonjour,

Merci pour ta reponse.
Je pense qu'avec le FillRectangle je vais pouvoir m'en sortir.
Le DoEvents était pour que la fenetre se rafraichisse avant de dessiner.
Je ne maitrisse pas trop les histoires de dessin en API, il faudrait que je m'y penche un peu plus.

Bonne journée,

Matt...


Cette discussion est classée dans : doevents, wm, dessine, dessiner, paint


Répondre à ce message

Sujets en rapport avec ce message

WM_PAINT et ScrollBar [ par AlexMAN ] Bonjour, Je dois dessiner quelque chose en fonction de la position d'une scrollbar, je me demandais si je pouvais créer un HDC memoire de la taille de [Dev-C++] SetPixel et WM_PAINT mais sans fenêtre [ par Isoth0p ] Bonjour. Je voudrais savoir s'il serait possible d'utiliser la fonction SetPixel dans un WinMain SANS créer de fenêtre et qu'elle se comporte comme à WM_PAINT [ par Ensias ] Salut tous le monde , je voudrais savoir si le message WM_PAINT est envoyé indifiniment à la fenetre, ou bien suite à des evenements precis si c'est l message WM_PAINT [ par spiky31 ] BonjourJe m'excuse si ca semble une question de debutant mais c'est la premiere fois que je dessine dans une fenetre windows :(Je me suis rendu compte Affichage d'image [ par elinep ] Bonjour tout le monde!Voila mon probleme:Je me met a la programmation de l'API win32. J'essaye de faire un petit prog qui charge une image .bmp depuis win app et les variable [ par ultima666 ] Dsl de refaire un sujet dessus mais personne ne répond a l'autre.case WM_PAINT:{// Debut de WM_PAINTint i = 2;hDc = BeginPaint(hWnd, &ps);GetClientRec WM_PAINT [ par KuidZ ] Bonjour je viens de me lancer dans le tutoriel de Petzold et je me rends compte que tous les programmes sont redessinés via WM_PAINT ont une légère WM_NCPAINT [ par vecchio56 ] Je veux dessiner dans la zone non client, j'intercepte donc le message WM_NCPAINT. Comme le suggère la MSDN, j'obtiens un dc grâce à GetDCEx. Le probl Decalement de 3 pixel dans le HDC [ par SnOOpss ] Bonjour !!! Pourquoi si je fait :     case WM_PAINT:         {     RECT rt;     PAINTSTRUCT ps;     HDC hdc = BeginPaint(GetParent(hwnd), &a Graphique ds boite dialogue [ par titio ] Bonjour, Je souhaite afficher un dessin dans une boite de dialogue. A priori, c'est simple, il suffit de lancer le dessin dans le message WM_PAINT, ma


Nos sponsors


Sondage...

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

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