Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1383 connectés 

  FORUM HardWare.fr
  Programmation

  Borland C++ Builder: minimisation/restauration d'une appli

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Borland C++ Builder: minimisation/restauration d'une appli

n°74585
LetoII
Le dormeur doit se réveiller
Posté le 22-11-2001 à 20:52:58  profilanswer
 

J'aimerais faire en sorte que l'on ne puisse lancer l'appli que je suis en train de dévellopper qu'une seule fois et que si on essaye de la relancer celà rappel l'instance précédente.
J'y suis presque arrivé mais quand je restaure la fenettre de l'instance précédente je ne peux plus la minimiser (le système semble tjrs la considére comme minimiser alors qu'elle ne l'est plus) et je n'arrive pas à la mettre au premier plan

mood
Publicité
Posté le 22-11-2001 à 20:52:58  profilanswer
 

n°74604
Buitoni
Posté le 22-11-2001 à 21:48:58  profilanswer
 

Bleh?
 
Utilise un mutex pour limiter ton application... A la limite regarde dans mon BUPack (sur mon site), y a un compo pour le faire en Delphi, il doit pouvoir compiler sous Builder (et non, c plus shareware, c open source, mais eux ils feront jamais de version pour Builder)


---------------
Vendredi c'est Buitoni
n°74614
LetoII
Le dormeur doit se réveiller
Posté le 22-11-2001 à 22:02:46  profilanswer
 

bon alors pour ceux qui suivent pas: le problème n'est pas dans la detection de l'instance précédente mais dans le fait qu'elle ne se restaure pas comme il faut!

n°74616
Buitoni
Posté le 22-11-2001 à 22:03:39  profilanswer
 

Ouai mais ca n'a aucune incidence la dessus... Et si c'est ta méthode de detection (pour toi) qui foire, utilise un mutex...  
 
Dis tout de suite que je sais pas lire :)


---------------
Vendredi c'est Buitoni
n°74624
LetoII
Le dormeur doit se réveiller
Posté le 22-11-2001 à 22:13:34  profilanswer
 

buitoni a écrit a écrit :

Ouai mais ca n'a aucune incidence la dessus... Et si c'est ta méthode de detection (pour toi) qui foire, utilise un mutex...  
 
Dis tout de suite que je sais pas lire :)  




 
Non ça doit être moi qui suis pas clair, alros on va clarifier: la détection de l'instance ça marche, la récupératino du handle de l'instance précédente ça marche, c quand je la restaure qu'il y a un problème, la fnetre apparait mais impossible de la reminimiser, si je clic avec le bouton droit sur son icone dans la barre des tache ça me propose de la restaurer et pas de la minimiser, de plus je n'arrive pas à la faire passer devant toutes les fenetres.
 
J'ai essayé deux méthodes les résultats sont identiques.

n°74627
Buitoni
Posté le 22-11-2001 à 22:16:32  profilanswer
 

Et t'esperes que qqn t'aide sans que tu files le moindre morceau de code? :-)


---------------
Vendredi c'est Buitoni
n°74639
LetoII
Le dormeur doit se réveiller
Posté le 22-11-2001 à 22:23:05  profilanswer
 

Ok c ma faute.
 
Voici la fonction winmain de mon prog:
 
 
 
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
        try
        {
                 Application->Initialize();
                 CreateMutex(NULL,TRUE,"testmutex" );
                 if(GetLastError() != ERROR_ALREADY_EXISTS)
                  {
                     try
                      {
                         Application->Icon->LoadFromFile("CDIcon.ico" );
                      }
                     catch(...)
                      {
                      }
 
                     Application->ShowMainForm=false;
                     Application->CreateForm(__classid(TMyDivPlayerByLetoAtISIMA), &MyDivPlayerByLetoAtISIMA);
                 Application->CreateForm(__classid(TFirstWindow), &FirstWindow);
                 Application->Run();
                  }
                 else
                  {
                     HANDLE test=FindWindow("TMyDivPlayerByLetoAtISIMA",NULL);
                     /*ShowWindow(test,SW_RESTORE);
                     SetForegroundWindow(test);*/
                     
                     SendMessage(test,MYWM_NOTIFY,1,1);
 
                     //BringWindowToTop(test);
 
 
                  }
 
 
        }
        catch (Exception &exception)
        {
                 Application->ShowException(&exception);
        }
        return 0;
}
 
 
 
 
 
 
la fonction qui répond au message MYWM_NOTIFY:
 
void __fastcall TMyDivPlayerByLetoAtISIMA::MyNotify(TMessage& msg)
{
    //ShowWindow(Handle,SW_SHOWNORMAL);
    //BringWindowToTop(Handle);
    //SetFocus();
    WINDOWPLACEMENT test;
    RECT test2;
    test2.left=Left;
    test2.right=Left+Width;
    test2.top=Top;
    test2.bottom=Height+Top;
    test.showCmd=SW_SHOWNORMAL;
    test.length=sizeof(WINDOWPLACEMENT);
    test.rcNormalPosition=test2;
    SetWindowPlacement(Handle,&test);
 
    SetForegroundWindow(Handle);
 
}
 
vous pouvez voir passé en commentaires les autres essai infructueux

n°74717
LetoII
Le dormeur doit se réveiller
Posté le 23-11-2001 à 07:20:02  profilanswer
 

bon alors comme ça marche mieu mais lorsque la fenetre n'est pas minimisée je n'arrive toujours pas à la faire passer au premier plan
 
 
 
void __fastcall TMyDivPlayerByLetoAtISIMA::MyNotify(TMessage& msg)
{
     
    Application->Restore();
    Show();
    Activate();
    Application->BringToFront();
}

n°74750
petoulachi
A fortiori, brigadier chef
Posté le 23-11-2001 à 09:53:57  profilanswer
 

Bon chuis super desole, je viens "squatter" votre topic pour poser ma question car ça concerne BC++ directement.
 
En fait, un copain m'affirme que dans un switch, il n'est pas necessaire de mettre un break a la fin de chaque case, que le compilo le rajoute tout seul. C vrai ? parcve que c un peu debile, si tu as deux cas ou tu veux faire la meme chose, t obligé d'ecrire le truc 2 fois ???
 
merci et desole  :jap:

n°74795
seblamb
Posté le 23-11-2001 à 12:43:21  profilanswer
 

swtich ( c)
{
 case 1 : cout<<"1\n";
 case 2 : cout<<"2\n";
 case 3 : cout<<"3\n";
};
 
dans cet example si c == 1 alors ça va ecrire  
1
2
3
 
si c == 2 alors ça va ecrire  
2
3
 
Donc tu vois l'interret du 'break' ?  ;)

mood
Publicité
Posté le 23-11-2001 à 12:43:21  profilanswer
 

n°74826
Carbon_14
Posté le 23-11-2001 à 14:38:24  profilanswer
 

En VB, on met rien, en BC, on met un break en général, sauf si on veut continuer au case suivant.
Mais si on a un return en dernière commande, le break sert à rien.
 
switch (c)  
{  
case 1 : return 1;
case 2 : return 2;
case 3 : return 3;
};
return 4;  
 
(C'est juste un exemple, on peut faire plus direct ! :D)

n°74840
petoulachi
A fortiori, brigadier chef
Posté le 23-11-2001 à 15:23:21  profilanswer
 

Merci !  
je connaissais l'interet du break , et justement mon pote me disais que c'etait pas obligatoire de le mettre, qu'ensuite le compilo le rajouter. Donc justement je trouvais ça nul, dans le cas ou plusieurs case font la meme action !!

n°74846
Carbon_14
Posté le 23-11-2001 à 15:31:59  profilanswer
 

C'est peut-être une plaisanterie, pour créer des bugs dans les softs de son pote... :)  
 
Heureusement que le compilo n'ajoute rien de ce genre, ça serait un truc à s'arracher les cheveux.
 
Je ne sais plus le nom de l'utilitaire du VC qui permet de créer un projet automatiquement (VisualStudio ?). Les break sont automatiquement mis après les case. Y a plus qu'à les ôter si pas besoin.

n°74910
LetoII
Le dormeur doit se réveiller
Posté le 23-11-2001 à 17:22:15  profilanswer
 

Ouai mais ça m'aide pas trop là!

n°75260
LetoII
Le dormeur doit se réveiller
Posté le 24-11-2001 à 20:18:47  profilanswer
 

Bon on va recentrer un peu le débat: je suis arrivé à restaurer ma fenetre minimisé, mais quand elle n'est pas minimisée je n'arrive pas à la faire passer au premier plan

n°75275
Buitoni
Posté le 24-11-2001 à 21:42:28  profilanswer
 

Benh tu as tout essaye?
 
Application->BringToFront()
FormBidule->BrintToFront()
 
 
sinon tu la fous en stay on top et tu le desactives de suite!
Au moins t'en es sur la...

n°75475
LetoII
Le dormeur doit se réveiller
Posté le 25-11-2001 à 21:47:13  profilanswer
 

En générale quand je poste un message ici c'est que j'ai essayé toutes les solutions évidentes, mais c'est peut être que je m'y prend mal je vais réessayer d'une autre façon

n°75480
LetoII
Le dormeur doit se réveiller
Posté le 25-11-2001 à 22:07:28  profilanswer
 

Bon j'ai trouvé, si ça intéresse qqn je posterai le code

n°75482
Buitoni
Posté le 25-11-2001 à 22:34:47  profilanswer
 

LetoII a écrit a écrit :

En générale quand je poste un message ici c'est que j'ai essayé toutes les solutions évidentes, mais c'est peut être que je m'y prend mal je vais réessayer d'une autre façon  




 
Ouai mais y a toujours qqchose auquel on a pas pensé  :ange:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  Borland C++ Builder: minimisation/restauration d'une appli

 

Sujets relatifs
Compilation d'allegro pour borland c++ builder freeC++ Builder listbox
[VB] Fermer une appli lancée grâce à Shell("c:\...")[Delhpi] Traduction d'appli
Je cherche BORLAND PASCAL !Déclarer des objets avec C++ Builder 4.0
Borland c++ sous DOSOu telecharger borland c++ gratos ???
Utiliser une appli dans une autre sous windows, autre moyen que L'OLE? 
Plus de sujets relatifs à : Borland C++ Builder: minimisation/restauration d'une appli


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR