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 :

Cr�er une notification du genre Thunderbird ou MsnMessenger


Sujet :

C++Builder

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Ao�t 2006
    Messages
    145
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2006
    Messages : 145
    Par d�faut Cr�er une notification du genre Thunderbird ou MsnMessenger
    Bonjour � tous et d�j� merci d'avance pour essayer de maider

    Je voudrais cr�er une fiche qui servirait de notification.Elle serait situer en bas � droite, et serais au dessus de toutes les applications et doit etre toujours visible.

    Mon premier probl�me, la position.

    J'utilisais un
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    Form1->Top = Screen->Height - 80;
    mais le probl�me est que la fiche est situ� 80 px au dessus du bas de l'�cran et non pas de la barre des taches comme il serait logique. Du coup, si une personne � une barre des taches plus �paisse que celle par d�faut, il ne vera pas la notification.

    Le deuxieme probl�me est de la faire passer au dessus de toutes les autres fenetres sans leur prendre le focus et ainsi empecher de travail normalement malgr�s la notification. Avant, j'utilisait :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    SetForegroundWindow(FindWindow("Mon application",NULL));
            keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0);
    Combiner avec un TTimer � un interval de 1 milliseconde, le programme restait bien tout le temps au dessus des application, le probl�me est que nous ne pouvions plus donner le focus aux autres applications, il restait sur la fiche.

    J'aimerais cr�er donc une notification du meme genre que Thunderbird ou Msn Messenger...

    Merci de m'avoir lu
    Bonne journ�e � tous,
    FluidBlow.

  2. #2
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Responsable de compte
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par d�faut
    bonjour,
    tu peux cr�er ta fen�tre de notification en utilisant les param�tres suivants de ta form
    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
     
    object Form1: TForm1
      Left = 980
      Top = 840
      AlphaBlend = True
      AlphaBlendValue = 120
      BorderIcons = [biSystemMenu]
      BorderStyle = bsSingle
      ClientHeight = 160
      ClientWidth = 295
      Color = 16776176
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'MS Sans Serif'
      Font.Style = []
      FormStyle = fsStayOnTop
      OldCreateOrder = False
      PixelsPerInch = 96
      TextHeight = 13
      object Label1: TLabel
        Left = 72
        Top = 40
        Width = 146
        Height = 16
        Caption = 'Ma fenêtre de notification'
        Font.Charset = DEFAULT_CHARSET
        Font.Color = clWindowText
        Font.Height = -13
        Font.Name = 'Arial'
        Font.Style = [fsItalic]
        ParentFont = False
      end
    end
    le code ci-dessus a �t� g�n�r� a partir de ma Form (.dfm)
    elle utilise les propri�t� de transparence (AlphaBlend) le niveau de transparence est r�gl� par la property AlphablendValue
    la fen�tre s'affiche en dessus des autre par la property FormStyle r�gl�e sur fsStayOnTop

    il te suffit de placer ta form lors de sa conception a l'emplacement d�sir�.

    pour afficher ta fen�tre il suffit de faire simplement un
    ceci peut par exemple �tre effectu� de puis un Timer ou a chaque fois qu'une notification est n�cessaire

    Cordialement
    vous trouverez mes tutoriels � l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les r�gles du forum

  3. #3
    Membre �clair� Avatar de BOUBOU81
    Profil pro
    system integrator
    Inscrit en
    Juin 2004
    Messages
    358
    D�tails du profil
    Informations personnelles :
    Localisation : Allemagne

    Informations professionnelles :
    Activit� : system integrator

    Informations forums :
    Inscription : Juin 2004
    Messages : 358
    Par d�faut
    Applique ceci moi ca marche super bien.
    tu fais ta fiche la taille que tu veux, puis tu pose 2 timer dessus
    tu met la fiche en stayontop,
    puis tu l'appele comme suit:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    WNotifier = new TWNotifier(Application);
       WNotifier->Show();
    voila le code de la fiche

    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
     
    void __fastcall TWNotifier::FormCreate(TObject *Sender)
    {
    RECT workArea;
    SystemParametersInfo(SPI_GETWORKAREA, 0, &workArea, 0);
     
    bottomMax = workArea.bottom;
    topMax = workArea.bottom - Height;
     
    Left = workArea.right - Width;
    Top = workArea.bottom;
     
    animationMode = 1;
    AnimateOpenClose->Enabled = true;
    }
    //---------------------------------------------------------------------------
    void __fastcall TWNotifier::FormClose(TObject *Sender,
          TCloseAction &Action)
    {
     
    Action = caFree;
     
    }
    //---------------------------------------------------------------------------
    void __fastcall TWNotifier::AnimateOpenCloseTimer(TObject *Sender)
    {
    switch(animationMode){
     case 1: // apparaître
      if(Top > topMax){
     
       if(Top < topMax + (Height / 2)){
        Top = Top - 1;
       }else{
        Top = Top - 2;
       }
      }else{
       AnimateOpenClose->Enabled = false;
       WaitAndHide->Enabled = true;
      }
     break;
     case 2: // disparaître
      if(Top < bottomMax){
       Top = Top + 2;
      }else{
       AnimateOpenClose->Enabled = false;
       Close();
      }
     break;
    }
    }
    //---------------------------------------------------------------------------
    void __fastcall TWNotifier::WaitAndHideTimer(TObject *Sender)
    {
    WaitAndHide->Enabled = false;
    animationMode = 2;
    AnimateOpenClose->Enabled = true;
    }
    //---------------------------------------------------------------------------
    voila si tu as un souci fais le savoir

  4. #4
    Membre confirm�
    Profil pro
    Inscrit en
    Ao�t 2006
    Messages
    145
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2006
    Messages : 145
    Par d�faut
    Bonjour

    Tous d'abord, merci � vous deux pour vos r�ponse tr�s rapide, je vais les essayer, l'une et l'autre, je vous tiens au courant

    Encore merci
    FluidBlow.

    Citation Envoy� par BOUBOU81
    Applique ceci moi ca marche super bien.
    tu fais ta fiche la taille que tu veux, puis tu pose 2 timer dessus
    tu met la fiche en stayontop,
    puis tu l'appele comme suit:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    WNotifier = new TWNotifier(Application);
       WNotifier->Show();
    voila le code de la fiche

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    void __fastcall TWNotifier::FormCreate(TObject *Sender)
    {
    etc...
    AnimateOpenClose->Enabled = true;
    }
    //---------------------------------------------------------------------------
    voila si tu as un souci fais le savoir
    En fait, je ne comprend pas tout � fait comment et quand la d�clar� avec "WNotifier = new TWNotifier(Application);
    WNotifier->Show();" et ici lorsqu'il y a "fastcall TWNotifier::FormCreate" sa veut dire que TWNotifier est le nom de la fiche au lieu de Form1 ?

    D�sol� si je parait un peu stupide

    Merci encore � vous deux
    FluidBlow.

    non je retire, j'ai compris

    Merci �norm�ment � vous deux, surtout DjmSoftware pour le placement au premier plan et BOUBOU81 pour le positionnement

    Encore 1000 mercis,
    Passez tout comme moi, une superbe apr�s-midi.
    FluidBlow

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

Discussions similaires

  1. Comment cr�er une notification d'application
    Par lotfi-g dans le forum Android
    R�ponses: 7
    Dernier message: 01/06/2015, 21h43
  2. Cr�er une commande du genre \@title ou \@author
    Par Ladgalen dans le forum Programmation (La)TeX avanc�e
    R�ponses: 6
    Dernier message: 01/10/2009, 14h39
  3. R�ponses: 4
    Dernier message: 29/04/2009, 12h53
  4. [HTML] Cr�er une notification de connection sur une page web
    Par Invit� dans le forum Balisage (X)HTML et validation W3C
    R�ponses: 28
    Dernier message: 17/03/2008, 18h52
  5. Cr�er une zone client sp�ciale (genre tableur)
    Par Spartan03 dans le forum Windows
    R�ponses: 8
    Dernier message: 02/11/2005, 10h25

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