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

Windows Discussion :

Comment empêcher que les textout se chevauchent ?


Sujet :

Windows

  1. #1
    Membre régulier Avatar de kidpaddle2
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 95
    Points
    95
    Par défaut Comment empêcher que les textout se chevauchent ?
    Bonjour,

    Sauriez vous comment faire pour empêcher que mes textout se chevauchent ? une méthode d'effacement par exemple, sachant que mon background est un bmp ? (Car chaque timer, un textout est affiché ... et cela fait horrible...)

    Merci d'avance.
    Vive l'embarqué.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Réafficher le bmp ?
    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.

  3. #3
    Membre régulier Avatar de kidpaddle2
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 95
    Points
    95
    Par défaut
    J'ai déjà essayé ... ou plutôt je pense l'avoir déjà fait :
    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
        HDC hdc2;
                  PAINTSTRUCT ps;
    
                  hdc2 = BeginPaint(hDlg, &ps);
    
                  DrawState(hdc2,NULL,NULL,(long)hBmp,NULL,0,10,0,0,DST_BITMAP);
    
                  EndPaint(hDlg, &ps);
    
                 HDC hDC;
                 hDC=GetDC(hDlg);
                  SetBkMode(hDC,TRANSPARENT);
    
                TextOut(hDC,20, 20,data.tag[0],strlen(data.tag[0]));
                TextOut(hDC,20, 42,data.tag[1],strlen(data.tag[1]));
                TextOut(hDC,20, 64,data.tag[2],strlen(data.tag[2]));
                TextOut(hDC,20, 102,data.status,strlen(data.status));
                TextOut(hDC,155, 102,data.allT,strlen(data.allT));
    
                UpdateWindow(hDlg);
    
                  ReleaseDC(hDlg,hDC);
    (j'oubliais... c'est dans le WM_TIMER et WM_PAINT)
    Vive l'embarqué.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Points : 711
    Points
    711
    Par défaut
    Bonjour,

    Pas le choix, il faut effacer le texte précédent.

    Si c'est un fond de couleur unie, 2 solutions assez simple:
    - reécrire le texte précédent avec la couleur du fond
    - tracer un rectangle de la dimension du texte avec contour et remplissage de la couleur du fond (on peut obtenir le rectangle nécessaire avec GetTextExtent [ou quelque chose comme ça, je ne me souviens pas exactement])

    Si le fond n'est pas uni:
    - sois travailler sur un duplicata du bmp pour l'affichage, et restaurer à chaque fois qu'on doit mettre un texte
    - sois copier le rectangle qui va être couvert pas le texte, et restaurer avant d'écrire le prochain texte, ce qui peut économiser un peu de mémoire.
    Compilation sans erreur ne signifie pas programme sans erreur.
    L'indentation n'a pas été imaginée pour faire beau, mais pour faciliter la lecture des programmes.

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Citation Envoyé par kidpaddle2
    (j'oubliais... c'est dans le WM_TIMER et WM_PAINT)
    Tu sais, généralement on ne dessine rien dans le WM_TIMER...
    À la rigueur, on fait un InvalidateRect() pour être sûr de recevoir un WM_PAINT dans les plus brefs délais...
    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.

  6. #6
    Membre régulier Avatar de kidpaddle2
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 95
    Points
    95
    Par défaut
    Ca, je le sais. Mais justement je n'ai pas trouvé d'autre solution. En fait je suis en train de créer un lecteur mp3, et j'aimerais afficher par l'intermédiaire de textout les tags musicaux seulement à chaque changement de chansons (à l'aide d'un booléen change, qui vaut true quand NEXT, PREVIOUS ou PLAY), et le temps écoulé, et ce chaque seconde (je me suis débrouillé avec une variable statique mem pour qu'il mémorise le temps précédent et ainsi vérifie s'il a changé depuis. (et donc l'affiche)

    Mais voilà je ne sais pas du tout comment faire avec le invalidaterect... Je sais que je demande beaucoup mais pourriez vous me montrer une fonction par exemple "DrawText(HWND hwnd, char *string, RECT coordinates, HBITMAP hBmp){}" permettant d'effacer un rectangle derriere le texte, (afin qu'il soit redessiné par envoi de WM_PAINT) et d'afficher le texte proprement dit ?

    Cela m'aiderait beaucoup car cela fait déjà depuis 2jours que je bloque sur ce problème et m'empêche de le finir... Il me reste que ce problème et celui des sliders transparents...
    Vive l'embarqué.

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Pourquoi ne pas utiliser des static, maintenant qu'on a le moyen de les rendre transparents en dessinant l'image derrière eux quand ils envoient WM_CTLCOLORSTATIC ?

    Il suffirait de se faire une liste d'IDs de static pour vérifier que le contrôle qui envoie le message est bien un static.
    Alors comme ça, on change le texte du static dans le WM_TIMER (avec un simple SetWindowText() ou SetDlgItemText()), et puis ça redessine tout seul comme il faut...
    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.

  8. #8
    Membre régulier Avatar de kidpaddle2
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 95
    Points
    95
    Par défaut
    Mais oui c'est vrai que ça marche avec les statics ! J'avais oublié ... Par contre y aurait il un équivalent à CTEXT (c'est un static non ?) pour une fenêtre principale ?

    SetWindowText requiert un handle à un static... je n'en ai jamais fait (à part des images ou par des contextes de périphériques) dans une fenêtre principale ... saurais tu quel static je devrais utiliser ?
    Vive l'embarqué.

  9. #9
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Pour créer un static quand on ne l'a pas défini en ressources:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CreateWindow("STATIC", ...)
    Tu peux le créer dans une fenêtre principale, une boîte de dialogue, ou même dans un bouton si ça te chante.
    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.

  10. #10
    Membre régulier Avatar de kidpaddle2
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 95
    Points
    95
    Par défaut
    Donc si je comprends bien je dois par exemple faire ceci :
    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
    HWND hTags = CreateWindow("STATIC", "Unknowns", SS_LEFT, 10,30, 200, 70, hwnd, NULL, hInst, NULL);
    
    //...
    
    case WM_CTLCOLORSTATIC:
    	{
           	HDC hdc = reinterpret_cast< HDC >(wParam);
    	HWND hStatic = reinterpret_cast< HWND >(lParam);
    
            if(hStatic != hTags)
                     return DefWindowProc (hwnd, message, wParam, lParam);
    
    	SetBkMode(hdc, TRANSPARENT); //Pour le texte
    	RECT r, rClient;
    
    	//Retrouver les coordonnées du contrôle dans la fenêtre
    	GetClientRect(hStatic, &rClient);
    	GetWindowRect(hStatic, &r);
    	MapWindowPoints(HWND_DESKTOP, hwnd, reinterpret_cast< LPPOINT >(&r), 2);
    
    	//Copier la portion du bitmap dans le contrôle:
    	BitBlt(hdc, 0, 0, rClient.right, rClient.bottom, hDCMemoire, r.left, r.top, SRCCOPY);
    	HBRUSH hBrush = GetStockBrush(NULL_BRUSH);
    
    	return reinterpret_cast< LRESULT >(hBrush);
    	}
    (le projet est maintenant compilé avec g++ ... donc tout ceci devrait passer sans modifications necessaires.)

    Dites moi si je me trompe..
    Vive l'embarqué.

  11. #11
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Remplacer hStatic par hTag était inutile et doit être annulé.
    Par contre, tu peux vérifier dans ton code que hStatic==hTag et faire un return DefWindowProc() dans le cas contraire...
    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.

  12. #12
    Membre régulier Avatar de kidpaddle2
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 95
    Points
    95
    Par défaut
    Je ne savais pas qu'il n'y avait pas à remplacer hStatic par hTag... Par contre le reste je ne l'ai pas mis car j'ai fait un copier-coller mais je comptais bien évidemment le mettre. C'est d'ailleurs ce que j'avais fait avec une région toute moche sur fond noir
    J'édite .... et sinon le code est correct ?
    J'aurais plus ensuite qu'à faire dans mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sprintf(status, "Playing %s - %s (%s)", tag[0], tag[1], tag[2]);
    SetWindowText(hTag, status);
    C'est ça ?
    Vive l'embarqué.

  13. #13
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    D'ici, le code (C++) m'a l'air plus ou moins correct, tant qu'on n'oublie pas que DefWindowProc() prend quatre paramètres...

    Et pour ton sprintf, oui, c'est à peu près ça, sauf que j'aurais plutôt enployé StringCchPrintf()/StringCbPrintf() (#include <strsafe.h>) ou _snprintf_s(_TRUNCATE).

    (ou, si tu n'as ni l'une ni l'autre, _snprintf(), mais attention, il faut forcer soi-même le dernier caractère du buffer à \0, car _snprintf() tronque sans le mettre)
    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.

  14. #14
    Membre régulier Avatar de kidpaddle2
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 95
    Points
    95
    Par défaut
    Comment j'ai pu les oublier ?
    J'édite Sinon je ne connais pas ces fonctions ... est ce bien necessaire de les utiliser ? J'en doute ... il suffit de fournir un char* à SetWindowText...
    Vive l'embarqué.

  15. #15
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Il est nécessaire d'utiliser n'importe quoi d'autre que sprintf(), pour des raisons de sécurité du code.

    StringCbPrintf() est la plus évidente à utiliser si tu as un bète tableau : tu lui passes sizeof du tableau en second 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.

  16. #16
    Membre régulier Avatar de kidpaddle2
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 95
    Points
    95
    Par défaut
    D'accord. Je vais commencer par implémenter ce code, en premier lieu avec des sprintf pour réduire la marge d'erreur, et ensuite avec StringCbPrintf().
    Merci encore.
    Vive l'embarqué.

  17. #17
    Membre régulier Avatar de kidpaddle2
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 95
    Points
    95
    Par défaut
    J'essaye sans (en premier lieu, pour réduire la marge d'erreur) ces fonctions, et je poste si ca ne marche pas.

    [EDIT] Apparemment j'ai la poisse... En utilisant ce code :
    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
    LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        static bool holding = false, change = false;
        static FSOUND_STREAM *music = NULL;
        static RECT rc;
        static POINT lp;
        static int dx = 0,dy = 0;
        static HDC hdc, hdcBis;
        static HFONT Blank=CreateFont(15,0,0,0,FW_NORMAL,FALSE,FALSE,FALSE,
    		       DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,
    		       PROOF_QUALITY,FF_ROMAN,"Arial Black");
        static HWND hTags;
    
        switch (message)
        {
            case WM_CREATE:
            data.playing = 1;
            SetTimer(hwnd,0,0,(TIMERPROC)NULL);
            hdc=GetDC(hwnd);
            hdcBis=CreateCompatibleDC(hdc);
            strcpy(data.tag[0], "Artist : ");
            strcpy(data.tag[1], "Title : ");
            hTags = CreateWindow("STATIC", "", SS_LEFT, 5,23, 353, 53, hwnd, NULL, hInst, NULL);
            break;
    
            case WM_PAINT :
                {
                  holding = false;
                  HDC hdc;
                  PAINTSTRUCT ps;
                  HBITMAP hbmTmp;
                  BITMAP bmpi;
                  HDC hdcMem;
    
                  hdcMem = CreateCompatibleDC(NULL);
                  hbmTmp = (HBITMAP)SelectObject(hdcMem,hBmp);
                  GetObject(hBmp,sizeof(bmpi),&bmpi);
    
                  hdc = BeginPaint(hwnd, &ps);
                  BitBlt(hdc,0,0,bmpi.bmWidth,bmpi.bmHeight,hdcMem,0,0,SRCCOPY);
                  EndPaint(hwnd, &ps);
    
                  SelectObject(hdcMem,hbmTmp);
                  DeleteDC(hdcMem);
                }
            break;
    
            case WM_CTLCOLORSTATIC:
            {
                HDC hdc = reinterpret_cast< HDC >(wParam);
                HWND hStatic = reinterpret_cast< HWND >(lParam);
    
                if(hStatic != hTags)
                {
                        MessageBox(hwnd,"différent", "salut", MB_OK); // Vérification
                         return DefWindowProc (hwnd, message, wParam, lParam);
                }
                MessageBox(hwnd,"bon", "salut", MB_OK);//verification
                SetBkMode(hdc, TRANSPARENT); //Pour le texte
                RECT r, rClient;
    
                //Retrouver les coordonnées du contrôle dans la fenêtre
                GetClientRect(hStatic, &rClient);
                GetWindowRect(hStatic, &r);
                MapWindowPoints(HWND_DESKTOP, hwnd, reinterpret_cast< LPPOINT >(&r), 2);
    
                //Copier la portion du bitmap dans le contrôle:
                BitBlt(hdc, 0, 0, rClient.right, rClient.bottom, hdcBis, r.left, r.top, SRCCOPY);
                HBRUSH hBrush = ((HBRUSH)(GetStockObject(NULL_BRUSH)));
    
                return reinterpret_cast< LRESULT >(hBrush);
            }
    
            case WM_ERASEBKGND:
                {
                  holding = false;
                  HDC hdc;
                  PAINTSTRUCT ps;
                  HBITMAP hbmTmp;
                  BITMAP bmpi;
                  HDC hdcMem;
    
                  hdcMem = CreateCompatibleDC(NULL);
                  hbmTmp = (HBITMAP)SelectObject(hdcMem,hBmp);
                  GetObject(hBmp,sizeof(bmpi),&bmpi);
    
                  hdc = BeginPaint(hwnd, &ps);
                  BitBlt(hdc,0,0,bmpi.bmWidth,bmpi.bmHeight,hdcMem,0,0,SRCCOPY);
                  EndPaint(hwnd, &ps);
    
                  SelectObject(hdcMem,hbmTmp);
                  DeleteDC(hdcMem);
                  break;
                }
    
             //...
               case WM_TIMER:
                GetWindowRect(hwnd,&rc);
                GetCursorPos(&lp);
                dx=lp.x-rc.left;
                dy=lp.y-rc.top;
    
                if(change)
                {
                    change = false;
                    SetWindowText(hTags, "salut ça marche");
                }
    
                break;
    Aucun des deux messagebox ne s'affiche, ainsi que le texte censé s'afficher... Pourquoi ?
    Vive l'embarqué.

  18. #18
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Là, d'un simple point de vue logique, au moins l'une des deux messagebox devrait s'afficher...
    1. Essaie avec un bon clean + Effacement des dossiers Debug et Release + Build, pour être sûr de bien tout recompiler...
    2. Essaie de voir ce qui se passe avec le debugger...
    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.

  19. #19
    Membre régulier Avatar de kidpaddle2
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 95
    Points
    95
    Par défaut
    Conçernant la méthode donnée par Médinoc :
    Je ne comprends pas... en créant un static avec createwindow, il est à part dans une autre fenêtre, même si hWndHandler est celui de ma fenêtre principale... ca me parait logique, mais comment associer ce static avec la fenêtre ? En fait il me faudrait exactement la meme chose que CTEXT, mais pour la fenêtre principale.

    P.S : Cela ne vient donc pas de mon code, puisque j'ai créé seulement une fenêtre dans un nouveau projet pour les besoins de cette vérification.
    Vive l'embarqué.

  20. #20
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Tu n'aurais pas oublié le style WS_CHILD ?
    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.

Discussions similaires

  1. Comment sélectionner que les lignes doublons
    Par Inconnu_du_69 dans le forum Langage SQL
    Réponses: 20
    Dernier message: 12/02/2009, 16h18
  2. Réponses: 14
    Dernier message: 11/01/2009, 17h27
  3. Comment empêcher un menu CSS de chevaucher un tableau?
    Par dudule0 dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 17/11/2008, 21h08
  4. Réponses: 4
    Dernier message: 22/05/2007, 09h22
  5. [Math] Comment empêcher que les fractions rapetissent ?
    Par sekiryou dans le forum Mathématiques - Sciences
    Réponses: 3
    Dernier message: 19/08/2006, 05h29

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