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

MFC Discussion :

[MFC] Intercepter r�ouverture fen�tre qui est minimis�e


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Par d�faut [MFC] Intercepter r�ouverture fen�tre qui est minimis�e
    Salut,

    je suis certain que ce que je veux faire est super basic mais l� je bloque quand m�me : je veux pouvoir ex�cuter une action de redimensionnement d'une fen�tre minimis�e juste apr�s qu'elle soit r�ouverte...

    En gros, ma fen�tre est minimis�e (iconis�e)...je reclique sur le bouton de minimisation pour r�afficher ma fen�tre � sa taille normale...et l�, je veux redimensionner la fen�tre juste apr�s �a (car j'ai besoin d'utiliser sa taille de rectangle, donc je ne peux pas faire mon traitement lorsqu'elle est minimis�e).

    Alors, en parcourant le forum, j'ai trouv� diverses solutions pour intercepter le fait qu'on minimise une fen�tre, et j'ai d�j� test� les suivantes en pensant pourvoir les adapter � mon probl�me :

    ON_WM_SIZE
    ON_WM_SYSCOMMAND
    ON_WM_ACTIVATE

    Aucune ne r�pond � mon besoin, donc j'en conclue que je dois utiliser autre chose....j'ai regard� toute la liste des �v�nements possibles sur une fen�tre, et j'ai rien vu qui pourrait le faire.

    Quelqu'un aurait une id�e ?

    Merci d'avance !

    ++

  2. #2
    Membre Expert
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Par d�faut
    tu interceptes le message WM_SHOWWINDOW

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Par d�faut
    Ah oui, je l'avais oubli� celui-l� : d�j� test� aussi !

    The WM_SHOWWINDOW message is not sent under the following circumstances:

    * When a top-level, overlapped window is created with the WS_MAXIMIZE or WS_MINIMIZE style.


    Et moi je maximise mon appli d�s l'ouverture.....donc �a peut pas marcher.

  4. #4
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    normalement, c'est le message WM_SIZE

    fait voir ton code

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Par d�faut
    le WM_SIZE, je l'ai test� un moment en y mettant des points d'arr�ts et il se trouve qu'on passe pas dedans quand on reclique sur le bouton minimiser....bizarre, mais c'est comme �a.

    Le code, bah �a ne vous aidera en rien...par contre, j'ai oubli� de pr�ciser qu'il s'agit du mod�le VUE/DOCUMENT et que l� il s'agit de la minimisation de la fen�tre de visualisation principale du document : CVTrackView

  6. #6
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    il te reste � tester les messages WM_WINDOWPOSCHANGED, WM_WINDOWPOSCHANGING

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    38
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 38
    Par d�faut
    Citation Envoy� par pataguillon
    Ah oui, je l'avais oubli� celui-l� : d�j� test� aussi !

    The WM_SHOWWINDOW message is not sent under the following circumstances:

    * When a top-level, overlapped window is created with the WS_MAXIMIZE or WS_MINIMIZE style.


    Et moi je maximise mon appli d�s l'ouverture.....donc �a peut pas marcher.
    Bonjour,

    Donc pour que ta fen�tre soit maximis�e d�s son ouverture, tu as alors �crit dans la m�thode PreCreateWindow

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    BOOL CMaFenetre::PreCreateWindow(CREATESTRUCT& cs) 
    {
    	cs |= WS_MAXIMIZE
    	return CDialog::PreCreateWindow(cs);
    }
    Bon, si tu enl�ves cette maximalisation � l'ouverture et que tu ouvres ta fen�tre avec sa taille d'origine et que par la suite tu l'as maximise, alors le message WM_SHOWWINDOW devrait fonctionner.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    ...
    CMaFenetre Wnd;
     
    Wnd.Create(....);
    Wnd.ShowWindow(SW_SHOWMAXIMIZED);
    ...

  8. #8
    Membre �m�rite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par d�faut
    Fais correspondre tes gestionnaires de message WM_XXX windows non � la vue mais � la fen�tre FRAME de ton applcation( cas SDI) o� � la fen�tre FRAME d'une fen�tre child.
    Essaie un peu avec WM_ACTIVE

  9. #9
    Membre �m�rite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par d�faut
    Au faite j'ai oubli�, c'est une fonction virtuelle de la classe de base CFrameWnd dont tu as besoin et qu'il faut surchager.

    Utilise GetWindowPlacement() et son compagnon SetWindowPlacement()

    La paire de fonction get-set te permet d'obtenir le rectangle de ta fen�tre et d'autres informations pour savoir si elle est iconis�e ou minimis� ou maximis�e ou normale.
    Surcharge la fonction virtuelle ActiveFrame() de ta frame.

  10. #10
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Par d�faut
    C'est bon, j'ai r�solu mon probl�me gr�ce � toutes vos r�ponses.

    Un grand MERCI � tous !

    ++

    PS : pour ceux que �a int�resse :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    WINDOWPLACEMENT p;
    cv->GetWindowPlacement(&p);
    if(cv->GetParentFrame()->IsIconic()){
        p.showCmd = SW_SHOWNOACTIVATE;
        cv->GetParentFrame()->SetWindowPlacement(&p);
    }

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 10
    Dernier message: 28/07/2015, 11h51
  2. R�ponses: 13
    Dernier message: 19/06/2015, 15h47
  3. R�ponses: 4
    Dernier message: 28/02/2010, 11h08
  4. [MFC] Ces fen�tres qui ne s'affichent pas..
    Par Davide dans le forum MFC
    R�ponses: 3
    Dernier message: 19/11/2003, 11h30
  5. Une table qui existe mais qui est inconnu! ?
    Par Nino dans le forum InterBase
    R�ponses: 6
    Dernier message: 13/06/2003, 11h47

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