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 :

Mettre en avant plan une autre application...


Sujet :

MFC

  1. #1
    Membre régulier Avatar de loupdeau
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 125
    Points : 79
    Points
    79
    Par défaut Mettre en avant plan une autre application...
    Salut,

    je voudrais pouvoir depuis mon application mettre en avant plan une autre application.

    Le nom de la fenetre de l'autre application n'étant pas fixe, je voudrais y avoir accès grâce à la classe de celle-ci.

    Spy++ me dit que la fenetre est de classe :

    Afx:00400000:b:00010011:00000006:002B03FD
    Comment crée un objet WNDCLASS correspondant à cette classe ??? pour pouvoir ensuite le passer en parametre de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CWnd* pWnd = CWnd::FindWindow( laclasse , NULL);
    	if(pWnd != 0)
    	{
    		::PostMessage(pWnd->GetSafeHwnd(),WM_SYSCOMMAND, SW_SHOWMAXIMIZED, 0L );
    	}
    ???

    Merci

  2. #2
    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
    Points : 16 075
    Points
    16 075
    Par défaut
    je suis étonné de ce nom de classe, mais en général, un findwindow sur le nom de la classe permet de retrouver la fenetre

  3. #3
    Membre régulier Avatar de loupdeau
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 125
    Points : 79
    Points
    79
    Par défaut
    est-ce qu'il est possible de faire un findwindow en ne spécifiant qu'un partie du nom de la fenetre ?

  4. #4
    Membre émérite
    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
    Points : 2 747
    Points
    2 747
    Par défaut
    de mémoire oui

  5. #5
    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
    Points : 16 075
    Points
    16 075
    Par défaut
    non, il faut boucler sur toutes les fenetres et faire une comparaison, il y a un exemple dans la faq si je me trompe pas, cherche enumwindow

  6. #6
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 683
    Points
    10 683
    Billets dans le blog
    3
    Par défaut
    Utilise ShowWindow( SW_MAXIMIZE ) sur la handle renvoyé.

  7. #7
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 683
    Points
    10 683
    Billets dans le blog
    3
    Par défaut
    Si tu peux récupérer un handle sur le thread principal du process (si tu le crée...) tu peux utilise EnumThreadWindows aussi.

  8. #8
    Membre régulier Avatar de loupdeau
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 125
    Points : 79
    Points
    79
    Par défaut
    C'est bon ca marche, j'ai fait comme dit dans la FAQ

    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
    char szIdentite[]="Perforce";
    	CWnd* pWnd = CWnd::GetDesktopWindow( )->GetTopWindow( );
    	CWnd *pWndWord = 0;
    	CString s,strWord;
    	while( 1 )
    	{
    		pWnd = pWnd->GetNextWindow();
    		if ( pWnd == NULL ) break;
    		pWnd->GetWindowText( s );
    		strWord=s;
    		if(strWord.Find(szIdentite)!=-1)
    		{
    			pWndWord = pWnd;
    			break;
    		}
    	}
    	if(pWndWord)
    	{
    		::PostMessage(pWndWord->GetSafeHwnd(),WM_SYSCOMMAND, SC_MAXIMIZE, 0L );
    	}
    j'ai bien regardé dans les différents parametres pour WM_SYSCOMMAND... et je trouve un équivalent à WM_SHOWWINDOW...

    Avec SC_MAXIMIZE, ca affiche l'autre appli la première fois.
    Je retourne dans mon appli. Et la 2ème fois que l'autre appli devrait apparaitre elle n'apparait pas (eh oui elle est déja Maximized...)

    Quelqu'un sait comment faire ???

  9. #9
    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
    Points : 16 075
    Points
    16 075
    Par défaut
    tu peux utiliser bringwindowtotop

  10. #10
    Membre régulier Avatar de loupdeau
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 125
    Points : 79
    Points
    79
    Par défaut
    le problème avec bringwindowtotop c'est que je dois fermer l'autre application sinon j'ai plus accès à la mienne...

  11. #11
    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
    Points : 16 075
    Points
    16 075
    Par défaut
    je ne vois pas le problème, c'est juste un jeu de positionnement. Ca ne va pas bloquer une autre fenetre d'etre mise en premier plan

  12. #12
    Membre régulier Avatar de loupdeau
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 125
    Points : 79
    Points
    79
    Par défaut
    Pourtant quand je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pWndWord->BringWindowToTop();
    la fenetre pointé par pWndWord devient Modal pour mon application seulement...

  13. #13
    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
    Points : 16 075
    Points
    16 075
    Par défaut
    et si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ::BringWindowToTop(pWndWord->GetSafeHwnd());

  14. #14
    Membre régulier Avatar de loupdeau
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 125
    Points : 79
    Points
    79
    Par défaut
    je ne mérite que ca ->

    j'avais mis tout ca dans un "OnSetFocus"... donc normal que ca semblait figé...

    merci pour ton aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mettre en avant plan une des instances d'une Mdichildren
    Par tangai dans le forum Windows Forms
    Réponses: 0
    Dernier message: 22/09/2011, 11h05
  2. Assurer de mettre en avant-plan une application 'child'
    Par j.p.mignot dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 26/10/2010, 03h23
  3. Réponses: 13
    Dernier message: 25/02/2010, 17h09
  4. mettre au premier plan une application Excel
    Par darkspoilt dans le forum VBA Access
    Réponses: 3
    Dernier message: 05/03/2008, 13h19
  5. Réponses: 3
    Dernier message: 26/09/2007, 14h34

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