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

C++ Discussion :

probleme à la lecture du message WM_SHOWWINDOW


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 41
    Par défaut probleme à la lecture du message WM_SHOWWINDOW
    Hello,

    j'essaie de lire le msg WM_SHOWWINDOW pour etre informer du moment ou ma fenetre est restauree apres avoir ete minimisee.
    je lis le msg de cette facon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    case WM_SHOWWINDOW:
       if(lParam == SW_PARENTOPENING)
       {
           do something there.
       }
       return 0;
    mais le if ne se verifie pas apres avoir restaurée ma fenetre.
    est ce que je lis le lParam de la mauvaise facon ou est ce que j'ai mal compris le moment ou windows envoie ce message ?

    thanks for your answers

  2. #2
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Salut,

    c'est pas plutôt message:WM_SYSCOMMAND & wparam:SC_RESTORE ce que tu cherches à faire ? (déclenché sur démini/démaxi).

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 41
    Par défaut
    j'ai fait ca deja:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    case WM_SYSCOMMAND:
    		if (wParam == (WPARAM)SC_MAXIMIZE || wParam == (WPARAM)SC_RESTORE)
    		{
    			InvalidateRect(hWnd, NULL, TRUE);
    		}
    		return DefWindowProc(hWnd, message, wParam, lParam);
    		break;
    seulement ca ne marche que sur un restore apres avoir maximiser la fenetre...

  4. #4
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Bizarre ... voilà un code qui fonctionne gentiment chez moi :
    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
    signed char _minMaxStatus = 0;
     
    static LRESULT CALLBACK _wndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
        if (message == WM_CLOSE) {
            PostQuitMessage(0);
            return 0;
        } else if (message == WM_SYSCOMMAND) {
            char buf[256] = "";
            if (wParam == SC_MINIMIZE) {
                _minMaxStatus = -1;
                SetWindowText(hwnd, "MINIMIZED");
            } else if (wParam == SC_MAXIMIZE) {
                _minMaxStatus = 1;
                SetWindowText(hwnd, "MAXIMIZED");
            } else if (wParam == SC_RESTORE) {
                sprintf(buf, "RESTORED : %s", _minMaxStatus == -1 ? "from MINIMIZE" :
                                              _minMaxStatus == 1 ? "from MAXIMIZE" :
                                              "Whot !?");
                _minMaxStatus = 0;
                SetWindowText(hwnd, buf);
             }
        }
        return (DefWindowProc(hwnd, message, wParam, lParam));
    }
    Le cas "Whot !?" apparaissant quand tu maximize, minimize, unminimize, unmaximize (double restore en somme).

    PS : j'ai testé ton code et l'event est bien déclenché sur un restore depuis minimize ou un restore depuis maximize (SC_RESTORE) comme sur un maximize (SC_MAXIMIZE).

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 487
    Par défaut
    Pour vérifier les messages envoyés aux fenêtres, je vous conseille d'utiliser des outils types Spy++ qui sont généralement livrés avec Visual Studio.

  6. #6
    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
    Si tu veux invalider la fenêtre après une restauration, je me demande si le plus simple n'est pas de le faire dans le traitement de WM_SIZE, vu que c'est généralement une raison d'invalidation dans tous les cas...
    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.

  7. #7
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 41
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	case WM_SYSCOMMAND:
    		if (wParam == (WPARAM)SC_MAXIMIZE || wParam == (WPARAM)SC_RESTORE)
    		{
    			InvalidateRect(hWnd, NULL, TRUE);
    		}
    		return DefWindowProc(hWnd, message, wParam, lParam);
    		break;
    ce code la fonctionne? un restore depuis minimize, c'est bien l'action de cliquer sur licone du programme dans la barre des taches pour le rouvrir apres avoir ete retrecis ? je commence a douter de moi aha.



    @Médinoc: j'ai aussi essaye de traiter le msg WM_SIZE avec le parametre "SIZE_RESTORED", mais comme dans le cas de WM_SYSCOMMAND, je ne le recois pas apres un minimize... idk... si ca marche chez vous je suis un peu perdu

    @bacelar: spy++? hmm je vais aller jeter un oeil

Discussions similaires

  1. [C#] Probleme de lecture de valeur nulle
    Par kenzo080 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 25/10/2010, 16h58
  2. [xml]probleme de lecture
    Par mavina dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 22/07/2005, 08h34
  3. Probleme de lecture de classe
    Par wkd dans le forum Composants
    Réponses: 5
    Dernier message: 21/05/2004, 15h20
  4. [LG]probleme de lecture de base de données
    Par jf dans le forum Langage
    Réponses: 14
    Dernier message: 26/06/2003, 15h57

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