Accueil > Forum > > > > TreeView et Dialog
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
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|