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++Builder Discussion :

activation de fenetre C++ Builder 6


Sujet :

C++Builder

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    22
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 22
    Par d�faut activation de fenetre C++ Builder 6
    Bonjour,

    Je travaille sur un projet en C++ Builder 6, je souhaite sur un
    �v�nement activer la fenetre de mon application lorsqu'elle � �t�
    minimis�e et qu'elle prenne le focus sur les autres applications en cours.

    J'ai essay� Form1->WindowsState = wsNormal; �a ne marche pas

    Quelqu'un peut -il m'aider ?

    Cordialement

    EricNO

  2. #2
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    Salut,
    tu as essay� Form1->Show() ou Form1->ShowModal() ?

  3. #3
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par d�faut
    Je ne suis pas s�r que ca puisse t'aider, mais regarde du cot� de :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
      Application->BringToFront() ;
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
      SetForegroundWindow(Handle);
    ou encore regarde ce bout de code dans la FAQ (en Delphi, mais tr�s �quivalant en C++ Builder)

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    22
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 22
    Par d�faut
    Bonjour,

    Form1->Show(); n'a pas d'effet sur l'activation de ma fenetre lorsqu'elle est minimis�e.

    �a marche avec

    Form1->WindowState = wsMaximized suivi de
    Form1->WindowState = wsNormal

    mais ce n'est pas tr�s est�tique et �a ne donne pas le focus � la fenetre

    Cdlt

    EricNO

  5. #5
    R�dacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par d�faut
    Salut EricNO
    Voici la fonction Delphi passee par sat83, elle affiche la Form2 et lui donne le focus
    Form1 deux Buttons un pour afficher la Form2, un qui affiche la Form2 (qui avait ete minimisee) et donne le focus
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    #include "Unit1.h"
    #include "Unit2.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    Form2->Show();
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    Form2->WindowState = wsNormal;
    DWORD Proc = GetWindowThreadProcessId(GetForegroundWindow(), NULL );
    DWORD Nous = GetCurrentThreadId();
    if(Proc != Nous)
            {
            AttachThreadInput(Nous, Proc, true ) ;
            SetForegroundWindow(Form2->Handle);
            AttachThreadInput(Nous, Proc, false ) ;
            Application->BringToFront();
            }
    else
            {
            SetForegroundWindow(Form2->Handle);
            }
    }
    //---------------------------------------------------------------------------
    /*
    procedure TForm1.Devant;
    Var Proc,Nous:Integer;
    begin
      Proc:=GetWindowThreadProcessId(GetForeGroundWindow);
      Nous:=GetCurrentThreadID;
      If Proc<>Nous Then
      Begin
        // Nous ne sommes pas l'application en premier plan
        AttachThreadInput(Nous,Proc,True);
        SetForeGroundWindow(Handle);
        AttachThreadInput(Nous,Proc,False);
        Application.BringToFront;
      End Else
      Begin
        // Nous sommes déjà en premier plan
        SetForeGroundWindow(Handle);
      End;
    end;

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    22
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 22
    Par d�faut
    Bonjour,

    J'ai int�gr� l'exemple de blondelle dans mon application, mais ma fenetre
    reste minimis�, je vais quand m�me essayer ce code sur une appli nouvelle

    Cdlt

    EricNO

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 412
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 412
    Par d�faut
    Salut !

    Avec BCB3 Pro, j'ai test� avec un Speedbutton sur la fiche et un timer (je pense que c'est faisable avec BCB6) :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
    {
    WindowState = wsMinimized;
    Timer1->Enabled = true;
    }
    //----
     
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
    Timer1->Enabled = false;
    WindowState = wsNormal;
    SetFocus();
    }
    Lorsque je vois que l'on qualifie deux ou trois lignes de code comme "pas propre", dans ce cas je sugg�re de mettre en place une propri�t� suppl�mentaire avec un Setter (donc ... en �criture seule) ou une m�thode.
    Les lignes de code seront dans le setter ou dans la m�thode pour n'avoir � faire que ceci (en mesurant bien la diff�rence qu'il y a entre les deux) :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    RestoreFocus = true;
    ou

    Et en arri�re plan, dans le Setter, on fait :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    if(Value) // pour une raison ou une autre
        {
        WindowState = wsNormal;
        SetFocus();
        }
    ou bien avec la m�thode :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    WindowState = wsNormal;
    SetFocus();
    A plus !

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    22
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 22
    Par d�faut
    Salut,

    J'ai essayer ton exemple sur un projet vierge, �a marche.
    Il ne me reste plus qu'a trouver pourquoi �a ne marche pas dans mon projet.

    Merci

    Cordialement

    EricNO

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

Discussions similaires

  1. activer la fenetre d'un autre process
    Par baert dans le forum C++/CLI
    R�ponses: 1
    Dernier message: 16/10/2010, 12h55
  2. Activer une fenetre
    Par lebfar dans le forum MFC
    R�ponses: 1
    Dernier message: 13/10/2007, 12h27
  3. MDI activer une fenetre ouverte
    Par lebfar dans le forum MFC
    R�ponses: 1
    Dernier message: 13/09/2007, 13h50
  4. Activer la fenetre Excel (1� plan)
    Par yadla dans le forum Macros et VBA Excel
    R�ponses: 11
    Dernier message: 24/08/2007, 22h59
  5. Cl� d'activation du produit C++builder.
    Par JavaAcro dans le forum C++Builder
    R�ponses: 1
    Dernier message: 05/06/2007, 17h44

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