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

MFC Discussion :

(VC++6 / C) Récupération d'événements d'un Treeview


Sujet :

MFC

  1. #1
    Vow
    Vow est déconnecté
    Membre expérimenté Avatar de Vow
    Inscrit en
    Janvier 2003
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 259
    Points : 1 584
    Points
    1 584
    Par défaut [RESOLU] (VC++6 / C) Récupération d'événements d'un Treeview
    Bonjour, (et Bonne Année)

    J'ai une fenêtre principale, avec un menu et un toolbar, et une fenêtre secondaire (hwndParent) contenant un treeview.
    Je travaille sur Visual C++ 6 mais avec du langage C (ça serait trop facile sinon...).
    J'aimerais récupérer l'appel de touches du clavier (WM_KEYDOWN ou WM_KEYUP) mais je n'ai pas encore trouvé comment faire.
    Est-ce que quelqu'un pourrait m'aider, svp ?
    Merci d'avance.
    Salutations.

    PS : Voici ma fonction de création de Treeview

    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
     
    HWND CreateTreeView(HWND hwndParent) 
    { 
    RECT r; 
    HWND hwndTV; 
     
    // La Common Control DLL est chargée 
    InitCommonControls(); 
     
    // Taille de la fenetre parent 
    GetClientRect(hwndParent, &r); 
    hwndTV = CreateWindowEx( 
    0, 
    WC_TREEVIEW, 
    "Tree View", 
    WS_CHILD | TVS_HASLINES | TVS_HASBUTTONS | TVS_LINESATROOT , 
    0, 0, r.right, r.bottom, 
    hwndParent, 
    (HMENU) IDW_BASE, 
    g_hInst, 
    NULL); 
     
    TreeView_SetBkColor(hwndTV, RGB(255, 255, 255)); 
     
    // Initialisation de la liste des images 
    if (LoadImageLists(hwndTV) == FALSE) 
    { 
    DestroyWindow(hwndTV); 
    return (NULL); 
    } 
     
    return( hwndTV ); 
    }

  2. #2
    mat.M
    Invité(e)
    Par défaut
    Il faut , dans la boucle des messages de la fenêtre contenant l'arbre gérer tous les message commençant par TVN_XXXX en envoyant le :

    ex:
    TVN_SELCHANGED

    Notifies a tree-view control's parent window that the selection has changed from one item to another. This notification message is sent in the form of a WM_NOTIFY message.

    TVN_SELCHANGED
    pnmtv = (LPNMTREEVIEW) lParam

    Un bon conseil : utilises les MFC tu te feras moins suer !!
    Cela paraît compliqué au début mais avec de bons bouquins c'est bien moins fastidieux qu'en win32

  3. #3
    Vow
    Vow est déconnecté
    Membre expérimenté Avatar de Vow
    Inscrit en
    Janvier 2003
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 259
    Points : 1 584
    Points
    1 584
    Par défaut
    En fait, j'avais trouvé hier assez rapidement.
    Mais je ne savais pas comment l'appliquer. Et j'ai enfin trouvé.

    Dans la fonction de "création" de la fenêtre :

    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
     
    long CALLBACK PRSMDIChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
     
    // Variable permettant de récuperer les messages sur le Treeview
    LPNMHDR lpNotify;
     
    // Variable permettant de récuperer les messages de touches sur le Treeview
    LPNMTVKEYDOWN laTouche;
     
    switch(message)
     {
     
     case WM_NOTIFY:
      lpNotify = (LPNMHDR) lParam;
      if (lpNotify == NULL)
       break;
     
      // Captures des touches Raccourcis
      if (lpNotify->idFrom == IDW_BASE 
       && lpNotify->code == TVN_KEYDOWN)
      {
       laTouche = (LPNMTVKEYDOWN) lParam;
       switch (laTouche->wVKey)
       {
        case VK_F2:
         PostMessage(g_hWndMain, WM_COMMAND, 
    IDM_DE_LA_FONCTION_DE_F2, 0L);
         break;
        case VK_INSERT:
         PostMessage(g_hWndMain, WM_COMMAND, 
    IDM_DE_LA_FONCTION_DE_INSER, 0L);
         break;
        case VK_DELETE:
         PostMessage(g_hWndMain, WM_COMMAND, 
    IDM_DE_LA_FONCTION_DE_SUPPR, 0L);
         break;
       }
      }
      break;
     }
    return(0L);
    }
    Merci d'avoir cherché.
    @++

  4. #4
    Vow
    Vow est déconnecté
    Membre expérimenté Avatar de Vow
    Inscrit en
    Janvier 2003
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 259
    Points : 1 584
    Points
    1 584
    Par défaut
    PS : Je programme en C, je ne peux pas utiliser les MFC. Si au moins mon application avait été programmée en C++ dès le début, ça aurait été plus facile

  5. #5
    Vow
    Vow est déconnecté
    Membre expérimenté Avatar de Vow
    Inscrit en
    Janvier 2003
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 259
    Points : 1 584
    Points
    1 584
    Par défaut
    En fait, à l'origine, je cherchais à appliquer un accelerator dans mon programme en C. Mais il n'y avait aucune solution apparemment.

  6. #6
    mat.M
    Invité(e)
    Par défaut
    Juste une petite remarque en passant , concernant les MFC : pas la peine de connaître le C++ dans tous ses détails , jusqu'au moindre détail.
    Il suffit juste de savoir ce que c'est qu'une classe ses membres ( données et méthodes) , la notion d'héritage simple puisque c'est toute une hiérachie de classe.
    Ne pas oublié que c'est une simple encapsulation des API....
    Par contre il faut comprendre un minimum l'architecture

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

Discussions similaires

  1. Récupération d'évènement entre assemblys différentes
    Par ld9474 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/07/2008, 16h23
  2. récupération d'événement des bontons suivant et précédent
    Par philippe_62 dans le forum VBA Access
    Réponses: 4
    Dernier message: 19/04/2008, 13h20
  3. [plugin] Récupération d'évènement
    Par sanchou dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 04/03/2007, 19h15
  4. [C#]Récupération d'évènement et ListView
    Par Bmagic dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/02/2007, 12h45
  5. Réponses: 1
    Dernier message: 21/10/2005, 14h08

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