begin process at 2012 05 30 18:53:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Driver

 > 

TreeView et Dialog


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

TreeView et Dialog

vendredi 20 octobre 2006 à 21:00:50 | TreeView et Dialog

jojomillenium

Bonjour,

Je n'arrive pas a faire 2 choses :( Pourtant j'ai essayé! Google et MSDN n'ont pas été mes amis ce coup ci!
(Code ci dessous)
Je programme en Win32 sans MFC. J'aimerai qu'au chargement du TreeView, tous mes elements soit cocher (et par la meme occas comment recupérer l'info de si l'utilisateur coche ou decoche?)
Et la deuxième chose, lorsque je clique sur un des elements (donc que je le selectionne), j'aimerai que mon GroupBox d'id ID_LAYER passe de disabled a enabled!
Le code pour le TreeView a été repris d'un code de ce site.

Merci pour votre aide!

code :
TreeView.h

#ifndef __HTreeView__
#define __HTreeView__

#include <commctrl.h>
#include "CString.h"
#include <deque>

using namespace std;

struct STVGroup {
    HTREEITEM hGroupItem;
    HTREEITEM hItem_Actif3D;
    HTREEITEM hItem_Actif2D;
    HTREEITEM hItem_NbFaces;
    HTREEITEM hItem_NbLignes;
};

struct STVMain {
    CString mainName;
    HTREEITEM hMainItem;
    HTREEITEM hItem_NbVertices;
    HTREEITEM hItem_NbFaces;
    HTREEITEM hItem_NbLignes;
    HTREEITEM hItem_NbGroupes;
    std::deque<STVGroup> pTVGroups;
};

//void UpdateTVGroupInfos(long g=-1);
bool InitTreeView(const char *mainName);

#endif // __HTreeView__

TreeView.cpp
#include <windows.h>
#include "General.h"
#include "resource.h"

#define TREEVIEW_SELECTION_GROUP        1
#define TREEVIEW_SELECTION_ACTIF3D        2
#define TREEVIEW_SELECTION_ACTIF2D        3

STVMain objTreeView;    // les données du TreeView

HTREEITEM tvInsertItem(HWND hWnd,HTREEITEM parentItem,LPSTR strText,bool itemChild,long itemParam) {
    TVINSERTSTRUCT tviStr;
    ZeroMemory(&tviStr,sizeof(TVINSERTSTRUCT));
    tviStr.hParent = parentItem;
    tviStr.hInsertAfter = TVI_LAST;
    tviStr.item.pszText = strText;
    tviStr.item.cchTextMax = strlen(strText);
    tviStr.item.cChildren = itemChild;
    tviStr.item.lParam = itemParam;
    tviStr.item.state = NULL;
    tviStr.item.mask = TVIF_CHILDREN | TVIF_TEXT | TVIF_PARAM | TVIF_STATE;
    return TreeView_InsertItem(GetDlgItem(hWnd,ID_TREE), (LPTVINSERTSTRUCT) &tviStr);
}

void tvItemLeftClick(HWND hWnd) {
    TVITEM tvItem;
    ZeroMemory(&tvItem,sizeof(TVITEM));
    tvItem.hItem = TreeView_GetSelection(GetDlgItem(hWnd,ID_TREE));
    tvItem.mask = TVIF_PARAM;
    TreeView_GetItem(GetDlgItem(hWnd,ID_TREE),&tvItem);
    GetDlgItem(hWnd,ID_LAYER)->
    switch(tvItem.lParam & 0x000000FF) {
    case TREEVIEW_SELECTION_GROUP:
        displayGroup = (tvItem.lParam >> 8)-1;
        InvalidateRect(hWnd,NULL,false);
        break;
    }
}

void InitTreeViewListe(HWND hWnd) {
    STVGroup tvGroup;
    char buftmp[256];
    long param;
    int NumCouche=0;

    ZeroMemory(&tvGroup,sizeof(STVGroup));
    objTreeView.hMainItem = tvInsertItem(hWnd,NULL,objTreeView.mainName,1,TREEVIEW_SELECTION_GROUP);
    if(LNWell.num_quads>0)
    {
        sprintf(buftmp,"NWell (%d éléments)",LNWell.num_quads);
        objTreeView.hMainItem = tvInsertItem(hWnd,NULL,buftmp,0,1);

    }
    if(LActive.num_quads>0)
    {
        sprintf(buftmp,"Active (%d éléments)",LActive.num_quads);
        objTreeView.hMainItem = tvInsertItem(hWnd,NULL,buftmp,0,1);
    }
    if(LCont.num_quads>0)
    {
        sprintf(buftmp,"Cont (%d éléments)",LCont.num_quads);
        objTreeView.hMainItem = tvInsertItem(hWnd,NULL,buftmp,0,1);
    }
    if(LMetal1.num_quads>0)
    {
        sprintf(buftmp,"Metal1 (%d éléments)",LMetal1.num_quads);
        objTreeView.hMainItem = tvInsertItem(hWnd,NULL,buftmp,0,1);
    }
    if(LMetal2.num_quads>0)
    {
        sprintf(buftmp,"Metal2 (%d éléments)",LMetal2.num_quads);
        objTreeView.hMainItem = tvInsertItem(hWnd,NULL,buftmp,0,1);
    }
}


// la procédure CallBack pour la gestion du treeview
LRESULT CALLBACK DlgTreeViewProc(HWND hDlg,UINT msg,WPARAM wParam,LPARAM lParam) {
    switch(msg) {
    case WM_NOTIFY:
        switch(wParam) {
        case ID_TREE:
            UINT cde = ((LPNMHDR)lParam)->code;
            switch(((LPNMHDR)lParam)->code) {
            case TVN_SELCHANGED:
                tvItemLeftClick(hDlg);
                break;
            }
            break;
        }
        break;
    case WM_CONTEXTMENU:
        POINT mpt;
        GetCursorPos(&mpt); // coordonnées de la souris par rapport à l'ecran
        ScreenToClient(GetDlgItem(hDlg, ID_TREE), &mpt); // convertion pour qu'elles soient par rapport au Treeview
        TV_HITTESTINFO tvHit; // on récupère l'item survolé par la souris
        tvHit.pt = mpt;
        break;
       
    case WM_KEYUP:
    case WM_KEYDOWN:
        break;
    case WM_INITDIALOG:
        InitTreeViewListe(hDlg);
        TreeView_Expand(GetDlgItem(hDlg, ID_TREE),objTreeView.hMainItem,TVE_EXPAND);
        break;
    case WM_SYSCOMMAND:
        switch(wParam) {
        case SC_CLOSE: // on empêche de fermer la fenêtre du TreeView
            return 1;
        }
        return false;
    case WM_CLOSE: // gère la fermeture de la fenêtre
        TreeView_DeleteAllItems(GetDlgItem(hDlg,ID_TREE)); // supprime tous les items
        tvhDlg = NULL; // reset le pointeur de la fenêtre
        EndDialog(hDlg,0); // et la détruit
        return 1;
    }
    return 0;
}

// crée la fenêtre pour le treeview et la remplie avec les infos
bool InitTreeView(const char *mainName) {
    INITCOMMONCONTROLSEX TV_Init_Str;
    TV_Init_Str.dwSize = sizeof(INITCOMMONCONTROLSEX);
    TV_Init_Str.dwICC = ICC_TREEVIEW_CLASSES ;
    InitCommonControlsEx(&TV_Init_Str); // charge les dll utiles pour la gestion du treeview

    objTreeView.mainName = mainName;
    objTreeView.mainName.Cut(objTreeView.mainName.FindFromEnd('\\')+1,objTreeView.mainName.GetLength());
    tvhDlg = CreateDialog(hInstance, MAKEINTRESOURCE(ID_CONTROL), hWnd, (DLGPROC)DlgTreeViewProc);
   
    return (tvhDlg)?true:false;
}





Cette discussion est classée dans : id, treeview, hwnd, objtreeview, htreeitem


Répondre à ce message

Sujets en rapport avec ce message

texte - TreeView [ par glipper ] Bonjour,J'ai créé une TreeView, dans laquelle j'y ai inséré des items... et j'essaie de recuperer l'andle de l'item selectionné. J'ai utilisé ceci : H Urgent : Récupération d'un événement sur un TreeView [ par vow ] Bonjour,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 TreeView-->NM_CLICK [ par Xentor609 ] Salut!Je crée un treeview qui ressemble à celui d'Explorer, en montrant l'arborescence du disque-dur.Voici le bout de code qui, je pense, pose un prob wParam et button [ par ToToL ] Et oui c'est encore moi avec mon histoire de bouton.je réexplique mon probleme : je voudrai que quand on reste cliquer sur le bouton, je le sache pour Recuperation des Child dans un treeview (API sans MFC) [ par joh ] Bonjour,j'ai un treeview avec des noeud racine contenant des sous-Item.Je voudrai recuperer le 1er Child d'un Noeud.HTREEITEM hSitem = (HTREEITEM)Send probleme de compilation (débutant) [ par cddvdcopy ] je suis débutant, merci de m'éclairer !! ce code marche : #include #define ID_SFC 100 #define ID_RECHERCHE 200 #define ID_EXIT 300 probleme de slider [ par shadow1779 ] Bonjour,pour mon mp3 je me suis fais un slider pour fais l'avancement de la position, j'ai donc dans mon WM_INITDIALOG ceci://initialisation de la pos TreeView sous C++ builder [ par JejeLand ] Salut à tous...Je souhaiterais générer un treeview contenant une arborescence de répertoire. Pour cela je dispose d'une structure contenant la liste d Fenêtre CHILD [ par yserver ] BonjourUne petite question. J'ai une fenêtre avec des contrôles definie à l'interieur comme suit:hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLA Help! dans LRESULT CALLBACK WindProc [ par frogs_yoman ] Salut, Je souhaiterais savoir comment faire:J'ai un petit prog int WINAPI WinMain qui crée une fenetre (HWND hwnd), un bouton (HWND bouton, en child d


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,201 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales