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 :

Un programme de Zoom


Sujet :

C++Builder

  1. #1
    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 Un programme de Zoom
    Bonsoir
    Voici une petite loupe qui s'affiche en haut a droite de l'ecran et que l'on peut deplacer, qui reste au premier plan, un click gauche sur la bordure permet de la deplacer, un click droit ou Echap arrete le programme, l'appui sur les touche " - " et " + " modifie le Zoom de 1 a 10
    c'est une adaptation d'une source en Delphi
    le .cpp
    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
     
    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    #include "Zoom.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
      Form1->BorderStyle = bsNone;
      Form1->FormStyle = fsStayOnTop; // mettre la Form toujours au premier plan
      // Par défaut la loupe est en haut à droite
      Top = 20;
      Left = Screen->Width - Width - 20;
      Zoom = 3; // valeur de l'agrandissement par default au demarrage
      Application->Title = "Loupe";
      Timer1->Interval = 150;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
    // Timer1 interval = 150
    HDC DC;
    int x;
    int y;
      // Création d'un contexte d'affichage non lié à une fenêtre
      // donc permet d'accéder à l'écran entier
      DC = CreateDC("DISPLAY", NULL, NULL, NULL);
    //  With PaintBox1 Do Try
        // prise du point de référence de la souris
        x = Mouse->CursorPos.x;
        y = Mouse->CursorPos.y;
        // limitations de la zone pour ne pas sortir de l'écran
    if(x >= (Screen->Width - ClientWidth / Zoom))
    {
    x = (Screen->Width - ClientWidth / Zoom) - 1;
    }
    if(y >= (Screen->Height - ClientHeight / Zoom))
    {
    y = (Screen->Height - ClientHeight / Zoom) - 1;
    }
        // Copie d'une partie de l'écran dans la boite à peindre
    StretchBlt(PaintBox1->Canvas->Handle // Copie vers le canevas de la boite
                   , 0                      //       vers X=0
                   , 0                      //       et   Y=0
                   ,(ClientWidth * Zoom) - 1  // en multipliant par Zoom la largeur
                   ,(ClientHeight * Zoom) - 1  // en multipliant par Zoom la hauteur
                   ,DC                     // Copie à partir du canevas global
                   ,x - 5                     //       de la position de la souris
                   ,y - 10                     //       ...
                   ,ClientWidth            //       sur la taille de la boite
                   ,ClientHeight           //
                   ,SRCCOPY);              // Simple copie sans autre effet.
    SetForegroundWindow(DC); // mettre la Form toujours au premier plan
        // ne pas ouvbier de libérer le contexte, c'est une ressource rare.
        DeleteDC (DC);
      // Mettre la fenêtre au premier plan
    Show();
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::PaintBox1MouseUp(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
    if(Button == mbRight)
    {
      // Femeture de la fenêtre sur un click droit.
      Close();
    }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y)
    {
    if(Button == mbLeft)
    {
      // Astuce pour déplacer facilement un WinControl ou descendant
      // ( Merci à DelphiProg qui l'a donnée dans le forum il y a un bout de temps...)
        ReleaseCapture();
        Perform(WM_SYSCOMMAND, 0xF012, 0);
    }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
          TShiftState Shift)
    {
    if(Key == VK_SUBTRACT)
            {
            Zoom = Zoom - 1;
            if(Zoom <= 1)
            {
            Zoom = 1;
            }
            }
    if(Key == VK_ADD)
            {
            Zoom = Zoom + 1;
            if(Zoom >= 10)
            {
            Zoom = 10;
            }
            }
    if(Key == VK_ESCAPE)
            {
            // Femeture de la fenêtre sur un click droit.
              Close();
            }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y)
    {
    if(Button == mbRight)
    {
      // Femeture de la fenêtre sur un click droit.
      Close();
    }
    }
    //---------------------------------------------------------------------------
    le .h
    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
     
    //---------------------------------------------------------------------------
    #ifndef ZoomH
    #define ZoomH
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    #include <ExtCtrls.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published: // IDE-managed Components
            TTimer *Timer1;
            TPaintBox *PaintBox1;
            void __fastcall FormCreate(TObject *Sender);
            void __fastcall Timer1Timer(TObject *Sender);
            void __fastcall PaintBox1MouseUp(TObject *Sender,
              TMouseButton Button, TShiftState Shift, int X, int Y);
            void __fastcall FormMouseDown(TObject *Sender, TMouseButton Button,
              TShiftState Shift, int X, int Y);
            void __fastcall FormKeyDown(TObject *Sender, WORD &Key,
              TShiftState Shift);
            void __fastcall FormMouseUp(TObject *Sender, TMouseButton Button,
              TShiftState Shift, int X, int Y);
    private: // User declarations
    public:  // User declarations
            __fastcall TForm1(TComponent* Owner);
            int Zoom;
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif

  2. #2
    Membre habitué

    Inscrit en
    Décembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 14
    Par défaut
    Bonsoir,


    Super sympat et compact le zoom que tu propose .


    Pour info, j'ai trouvé une (petite) erreur à la compile (il manque la déclaration de la variable 'Zoom' )
    Pour corriger le problème, il suffit par exemple de rajouter sa déclaration dans Zoom.h :
    public:
    int Zoom;
    Je déplacerais egalement
    Form1->FormStyle = fsStayOnTop; // mettre la Form toujours au premier plan
    dans la méthode FormCreate() car on ne doit pas utiliser en meme temps le constructeur TForm1::TForm1() et FormCreate().
    (Avec Builder, c'est l'un ou l'autre)

  3. #3
    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 Dure_Limite
    C'est une retranscription d'un code Delphi que je trouvais pas mal et que j'ai complete.
    La variable Zoom est bien declaree ici dans le .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public:  // User declarations
            __fastcall TForm1(TComponent* Owner);
            int Zoom;
    dans la méthode FormCreate() car on ne doit pas utiliser en meme temps le constructeur TForm1::TForm1() et FormCreate().
    (Avec Builder, c'est l'un ou l'autre)
    C'est possible mais je n'en vois pas la raison, si effectivement c'est deconseille peut on m'eclairer

  4. #4
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 534
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 534
    Par défaut
    Citation Envoyé par blondelle Voir le message
    C'est possible mais je n'en vois pas la raison, si effectivement c'est deconseille peut on m'eclairer
    Il vaut mieux mettre le code dans TForm1 :: Create effectivement car dans le constructeur de TForm1 , la fenêtre n'est pas tout à fait initialisée et si on veut accéder à TForm1 elle risque de valoir=NULL

  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
    Merci pour ta reponse Mat.M
    je vais corriger en deplacent les instructions

  6. #6
    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 !

    L'ensemble des initialisations peut effectivement être réalisé dans le constructeur, sans quoi on ne pourrait jamais rien y faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    BorderStyle = bsNone;
    FormStyle = fsStayOnTop
    On peut se passer du TPaintBox en dessinant directement sur la form.
    Pour ceux qui n'auraient pas Mouse (pour ma version BCB3 Pro, ou alors je suis vraiment nul), voici comment s'en passer :

    -Déclarer dans la classe de TForm1

    -Dans la OnTimer on récupère les coordonnées absolues avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // prise du point de référence de la souris
    GetCursorPos(&MousePos);
    int x = MousePos.x;
    int y = MousePos.y;
    J'ai gardé ici le couple (x,y) mais on peut très bien utiliser celui donné par MousePos.

    Pour dessiner directement sur la form :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    StretchBlt(Canvas->Handle,
               ...
               ...
    A plus !

  7. #7
    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
    Merci pour ta reponse henderson
    Donc ce code est valable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
      Form1->BorderStyle = bsNone;
      Form1->FormStyle = fsStayOnTop; // mettre la Form toujours au premier plan
    }
    J'ai traduit et complete la source dont voici le lien
    Le TPaintBox permet de laisser une bordure sur la Form qui sert au deplacement de celle ci.
    Est ce que la gestion de la souris que tu decrit apporte t'elle autre chose que la portabilite avec le compilateur

  8. #8
    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 !

    Tu peux mettre toutes les initialisations dans le constructeur.
    Je ne pense pas que l'on soit dans une situation critique en ce qui concerne la création de l'objet et son usage.
    A ce stade on est déjà passé par le constructeur de TCustomForm qui aura déjà pas mal initialisé...
    Ici on est dans le constructeur final d'une form qui se suffit à elle même donc... a mon avis...

    En ce qui concerne la position absolue de la souris, sans doute faudrait-il ajouter de quoi faire une compilation conditionnelle (???).

    GetCursorPos est une API donc on peut supposer qu'elle reste vrai dans pas mal de situations.
    Je n'ai pas Mouse avec mon BCB3 Pro donc... je suis bien obligé de passer par la !
    Ca n'apporte rien d'autre ... que d'aboutir à un exécutable qui fonctionne (c'est... un bon minimum) !

    A plus !

  9. #9
    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
    Le but est de poster un programme qui peut servir a tout le monde quelque soit la version de BCB, je vais essayer de modifier le code pour utiliser " GetCursorPos ", pour la compilation conditionnelle la je ne sais pas faire.
    Ca n'apporte rien d'autre ... que d'aboutir à un exécutable qui fonctionne (c'est... un bon minimum) !
    C'est sur que d'avoir un .EXE qui fonctionne c'est mieux

  10. #10
    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 !

    La compilation conditionnelle pourrait se faire simplement.

    Dans le header de TForm1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    /*
    Si une erreur de compilation survient à la ligne Mouse->CursorPos.x
    dans ce cas remplacez dans la définition suivante, true par false
    */
    #define Supports_Mouse true
    En fait, ici je fixe Supports_Mouse à true en me mettant à la place des utilisateurs qui disposent probablement en majorité de versions dotées de Mouse.
    Par conséquent, en l'état, si je compile, j'aurais une erreur avec mon BCB3.
    Cette erreur disparaît en fixant Supports_Mouse à false et m'évite ainsi d'avoir à remplacer la partie du code qui pose problème.
    Donc dans la OnTimer, on va compiler en prenant en compte un bout de code ou l'autre

    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
     
    // prise du point de référence de la souris
    int x;
    int y;
    #if Supports_Mouse 
    // si Supports_Mouse == true alors on compile ce qui suit
        x = Mouse->CursorPos.x;
        y = Mouse->CursorPos.y;
    #else
    // dans le cas contraire, on compile ce qui suit
        GetCursorPos(&MousePos);
        x = MousePos.x;
        y = MousePos.y;
    #endif
    if(x >= (Screen->Width...
    Je ne connais pas d'autre façon de faire.
    Donc s'il existe d'autres moyens on ne peut qu'être intéressés.

    A plus !

  11. #11
    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
    Merci henderson
    J'avoue que je ne l'ai jamais utilise d'ou mon ignorance

  12. #12
    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
    A la suite du dernier post d'henderson
    Voici les parties du programme modifiees
    Dans l'entete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    #include "Zoom.h"
    #define Supports_Mouse false <--- a ajouter ici soit avec true soit avec false
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    Dans le programme
    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
     
     
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    ....
    //  With PaintBox1 Do Try
        // prise du point de référence de la souris
    #if Supports_Mouse
        x = Mouse->CursorPos.x;
        y = Mouse->CursorPos.y;
    //#else
        x = MousePos.x;
        y = MousePos.y;
    //#endif
        // limitations de la zone pour ne pas sortir de l'écran
    if(x >= (Screen->Width - ClientWidth / Zoom))
    ....
    Dans le .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public:  // User declarations
            __fastcall TForm1(TComponent* Owner);
            int Zoom;
            POINT MousePos; <---- ajouter
    J'ai fais aussi un essai en utilisant " try / catch ", qui a l'air de fonctionner chez moi
    Dans le programme
    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
     
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    ....
    //  With PaintBox1 Do Try
        // prise du point de référence de la souris
       try
    {
        GetCursorPos(&MousePos);
        x = MousePos.x;
        y = MousePos.y;
     }
       catch ( ... )
     {
        x = Mouse->CursorPos.x;
        y = Mouse->CursorPos.y;
     }
        // limitations de la zone pour ne pas sortir de l'écran
    if(x >= (Screen->Width - ClientWidth / Zoom))
    ....

  13. #13
    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
    Je viens de me rendre compte que le " try / catch " ne peut pas fonctionner dans ce cas car on aurra une erreur de compilation et non une erreur de fonctionnement.
    Par contre y a t'il la posibilite de verifier la version de BCB et faire une compilation conditionnelle a partir de la version
    Exemple
    Si version BCB3 on compile t'elle partie de code
    Si version BCB6 on compile t'elle autre partie de code
    ....

  14. #14
    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
    Apres des recherche dans l'aide en ligne il semblerais qu'il y ait une possibilite d'avoir la version j'ai fait un teste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #if __BORLANDC__ == 0x0560 // BCB6
        x = Mouse->CursorPos.x;
        y = Mouse->CursorPos.y;
    #else
        GetCursorPos(&MousePos);
        x = MousePos.x;
        y = MousePos.y;
    #endif
    il serait interressant de connaitre les numeros des version de BCB3

  15. #15
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    • 0x0520 ---------- C++Builder 1
    • 0x0530 ---------- C++Builder 3
    • 0x0540 ---------- C++Builder 4
    • 0x0550 ---------- C++Builder 5
    • 0x0560 ---------- C++Builder 6

    http://support.borland.com/kbshow.php?q=26629

  16. #16
    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
    Merci pour ta reponse Crayon
    En suivant le raisonnement d'henderson sur le formatage conditionnel on pourrait imaginer quelque chose comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #if __BORLANDC__ == 0x0560 // BCB6
        x = Mouse->CursorPos.x;
        y = Mouse->CursorPos.y;
    #endif
    #if __BORLANDC__ == 0x0530 // BCB3
        GetCursorPos(&MousePos);
        x = MousePos.x;
        y = MousePos.y;
    #endif
    La il n'y a rien a modifier tout se fait a la compilation

  17. #17
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    Tu pourrais aussi utiliser #elif pour ta deuxième condition. C'est l'équivalent d'un else if.

    Pour plus de détail va voir: http://msdn2.microsoft.com/en-us/lib...yd(VS.80).aspx

  18. #18
    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
    Merci de ton aide Crayon
    Je ne connaissais pas ces parametres de formatage conditionnel, n'y meme utiliser cette option, c'est apres tout assez simple d'utilisation

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 15/09/2011, 21h21
  2. Programme de boot qui passe la main à Windows
    Par Bob dans le forum Assembleur
    Réponses: 7
    Dernier message: 25/11/2002, 03h08
  3. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  4. communication entre programmes
    Par jérôme dans le forum C
    Réponses: 12
    Dernier message: 16/04/2002, 08h05
  5. [Kylix] icone associée à un programme
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h43

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