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 :

Handle d'un TImage


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre tr�s actif Avatar de Argol_Medusa
    Homme Profil pro
    Ing�nieur Radiofr�quences
    Inscrit en
    Ao�t 2005
    Messages
    208
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur Radiofr�quences
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 208
    Par d�faut Handle d'un TImage
    Bonjour,

    je cherche � r�cup�rer le handle d'une TImage mais il n'est pas accessible de la m�me mani�re qu'un TPanel ( Panel1->Handle ) ou qu'un TForm ( Form1->Handle ).

    Y-a-t-il un moyen de r�cup�rer le handle de ce composant ?

    ( j'ai cherch� du cot� de GetDlgItem mais je n'ai pas r�ussi ).

  2. #2
    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 Argol_Medusa
    Peut etre en passant par le Canvas comme ceci
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    Image1->Canvas->Handle;

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

    Attention !

    Ce qui h�rite de TWinControl renvoie comme handle : un HWND (un handle de fen�tre) !
    Canvas renvoie comme handle : le HDC qu'il exploite pour dessiner.

    Voici l'ordre des choses (API Windows) simpliste :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    //...
    // le handle d'une fenêtre.
    HWND hwnd; 
    // On récupère le handle graphique de cette fenêtre.
    HDC hdc = GetDC(hwnd); 
    // on dessine sur le hdc et non sur le hwnd
    FillRect(hdc, ..., ...); 
    //...
    Et je rajoute qu'il est m�me possible que le TCanvas renvoie non pas un hdc temporaire mais le hdc du hwnd sur lequel il se dessine.
    Donc certainement le hdc de la form ... (une histoire d'�conomie des moyens... et des ressources syst�me en particulier) !

    Et pour finir ... tout d�pend de la validit� du hdc dans le temps (parce qu'il y a forc�ment un ReleaseDC ou un DeleteDC � un moment donn�) !!!

    A plus !

  4. #4
    Membre tr�s actif Avatar de Argol_Medusa
    Homme Profil pro
    Ing�nieur Radiofr�quences
    Inscrit en
    Ao�t 2005
    Messages
    208
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur Radiofr�quences
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 208
    Par d�faut
    Merci pour vos r�ponses,

    je vais essayer de regarder de plus pret, car en effet le Canvas->Handle n'est pas de m�me type.

    En fait j'essaye d'utiliser l'astuce de blondelle pour le d�placement automatique d'objet sur l'interface graphique

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
       // permet de deplacer le Panel
       ReleaseCapture();
       SendMessage(Panel1->Handle, WM_SYSCOMMAND, 0xF012, 0);
    Ca marche bien avec un Panel ou avec une Form, mais je ne peux pas l'utiliser sur une TImage pour l'instant malheureusement.

    Je vais essayer de lire un peu la doc pour mieux comprendre l'arborescence des objets.

  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 Argol_Medusa
    pour deplacer un TImage s'il est place sur un TPanel tu peut utiliser ceci
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void __fastcall TForm1::image_cycle_usinageMouseDown(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
    TCursor Save_Cursor = Screen->Cursor;
    Screen->Cursor = crSizeAll;
    Panel6->SendToBack();
    // permet de deplacer le Panel
    ReleaseCapture();
    SendMessage(Panel6->Handle, WM_SYSCOMMAND, 0xF012, 0);
    Panel6->SendToBack();
    Screen->Cursor = Save_Cursor;
    }
    Sinon il y a une autre posibilite mais c'est un peu plus long a coder, quand on maintient un click sur le TImage le curseur change et on peut deplacer le TImage, les ScrollBars se repositionne et son toujours fonctionnelles
    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
     
    void __fastcall TForm1::image_cycle_usinageMouseDown(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
    Save_Cursor = Screen->Cursor;
    Screen->Cursor = crSizeAll;
          XPos = X;
          YPos = Y;
          if (Button == mbLeft) Deplacement = true;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::image_cycle_usinageMouseMove(TObject *Sender,
          TShiftState Shift, int X, int Y)
    {
    // on recupere la position des TPanels
    a = Panel1->Top;
    b = Panel2->Top;
    c = Panel3->Top;
    d = Panel4->Top;
    aa = Panel1->Left;
    bb = Panel2->Left;
    cc = Panel3->Left;
    dd = Panel4->Left;
    // on traite le deplacement
          if ( Deplacement == true )
         {
    // on positionne les ScrollBars de la Form
         HorzScrollBar->Position += XPos - X;
         VertScrollBar->Position += YPos - Y;
         }
    // on retabli la position des TPanels
    Panel1->Top = a;
    Panel2->Top = b;
    Panel3->Top = c;
    Panel4->Top = d;
    Panel1->Left = aa;
    Panel2->Left = bb;
    Panel3->Left = cc;
    Panel4->Left = dd;
    Form1->Repaint();
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::image_cycle_usinageMouseUp(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
    Screen->Cursor = Save_Cursor;
    Deplacement = false;
    }

  6. #6
    Membre tr�s actif Avatar de Argol_Medusa
    Homme Profil pro
    Ing�nieur Radiofr�quences
    Inscrit en
    Ao�t 2005
    Messages
    208
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur Radiofr�quences
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 208
    Par d�faut
    Merci pour le code Blondelle,

    Oui j'avais justement voulu �viter de faire la bonne vieille m�thode bien longue h� h� h�.

    Du coup je suis parti sur ta solution avec un TPanel + le TImage dedans un peu plus petit pour pouvoir voir le TPanel derri�re et faire un cadre de couleur clignotant.
    ( et j'ai rajout� le cursor, pour le style certes mais c'est mieux ).


    Encore merci !

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

Discussions similaires

  1. Timage et Canvas??
    Par vanack dans le forum C++Builder
    R�ponses: 4
    Dernier message: 14/04/2007, 11h38
  2. [TImage] Transfert de Picture par pixels.
    Par H2D dans le forum Langage
    R�ponses: 9
    Dernier message: 25/10/2003, 14h37
  3. TImage
    Par Thylia dans le forum C++Builder
    R�ponses: 5
    Dernier message: 09/07/2002, 20h03
  4. Cr�ation dynamique de TImages
    Par Dric dans le forum C++Builder
    R�ponses: 10
    Dernier message: 08/07/2002, 12h36
  5. pb de handle en C
    Par deedje dans le forum C
    R�ponses: 3
    Dernier message: 21/06/2002, 16h19

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