Basculer un programme déjà lancé en premier plan

Basculer un programme déjà lancé en premier plan - C++ - Programmation

Marsh Posté le 07-07-2005 à 13:22:40    

Bonjour,
 
J'essaie en C++ sous Visual Studio 6 de basculer en premier un programme déjà lancé.
 
J'arrive à le faire en C mais pas dans mon appli MFC.
 
En C, j'ai ce source :
 
int main()
{
 
// recherche de la fenetre Notepad
HWND hFore = FindWindow("Notepad",NULL);
 
//affichage en premier plan du notepad
SetForegroundWindow(hFore);
 
}
 
Et ça marche correctement.
 
Mais une fois mis dans une MFC, ça ne marche pas :
 
void CJeffSend30Dlg::UnSeulJeffSend()
{
 //HWND remplacé par CWnd sinon la commande ne marche pas ( erreur : cannot convert from 'class CWnd *' to 'struct HWND__ )
 CWnd * hFore = FindWindow("Notepad",NULL);
 SetForegroundWindow(hFore);
 
}
 
J'ai une erreur à la compilation qui me dit que SetForegroundWindow(hFore) ne prends pas de parametres...
J'ai essayé beaucoup de solutions mais rien de marche.
 
Merci d'avance ^^

Reply

Marsh Posté le 07-07-2005 à 13:22:40   

Reply

Marsh Posté le 07-07-2005 à 14:08:47    

Essaie ça:

Code :
  1. void CJeffSend30Dlg::UnSeulJeffSend()
  2. {
  3.   HWND hFore = ::FindWindow("Notepad", NULL);
  4.   if (hFore != NULL)
  5.   {
  6.      ::SetForegroundWindow(hFore);
  7.   }
  8. }


Ca c'est du Win 32 classique. En MFC ça doit donner ça:

Code :
  1. void CJeffSend30Dlg::UnSeulJeffSend()
  2. {
  3.   CWnd* pWndFore = CWnd::FindWindow("Notepad", NULL);
  4.   if (pWndFore != NULL)
  5.   {
  6.      pWndFore->SetForegroundWindow();
  7.   }
  8. }


Moralité: quand on fait du WIN32 pur on n'oublie pas le '::' devant les fonctions...  :sol:


Message édité par slash33 le 07-07-2005 à 14:14:12
Reply

Marsh Posté le 07-07-2005 à 16:39:47    

Ok, merci de m'avoir dépanné, ça marche nikel ;o)

Reply

Marsh Posté le 07-07-2005 à 17:22:28    

Une derniere petite chose :
La fenetre de mon programme n'a pas de nom, je recupere #32770 comme nom, donc pas moyen de la selectionner pour la mettre en premier plan...
Comment puis-je lui donner un nom ? (comme 'MonProg' par ex ?)

Reply

Marsh Posté le 08-07-2005 à 08:56:43    

Avec SetWindowText ça ne donne rien?

Reply

Marsh Posté le 08-07-2005 à 09:20:50    

Oui, Il change bien le titre de la fenetre, mais pas le nom de la class name.
Quand je lance un petit soft pour donner le class name du programme en éxecution, ca me donne "#32770", alors que pour le notepad par exemple, ca me donne "Notepad" ...

Reply

Marsh Posté le 08-07-2005 à 11:23:15    

Excuse je n'avais pas bien compris.
Alors la classname elle doit être définie dans la structure WNDCLASS si je me souviens bien.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed