Bonjour:
je cherche a mettre une listview dans un tab control (par exemple si onglet 1 afficher listview sinon non)
ma listview (reçois un tableau ):
le programme principale:
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 void listview (HWND hlistview,HWND hDlg) { DestroyWindow(hlistview); //MessageBox(NULL,tab[2][11],"barre de titre",MB_OK| MB_ICONEXCLAMATION); // Définir le titre de la boite de dialogue: SetWindowText(hDlg,tab[1][0]); //Créer les controles: hlistview=CreateWindowEx(WS_EX_CLIENTEDGE,WC_LISTVIEW,0, WS_CHILD | WS_VISIBLE | LVS_REPORT | LVS_SHOWSELALWAYS | LVS_SINGLESEL ,10, 30, 620, 320, hDlg, 0, 0, 0); SendMessage(hlistview,LVM_SETEXTENDEDLISTVIEWSTYLE,0,LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES ); // Créer les colonnes de la ListView: LVCOLUMN lvc; lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT |LVCF_SUBITEM; lvc.fmt = LVCFMT_CENTER; lvc.iSubItem =0; lvc.cx = 0; lvc.pszText = 0; for (d=0;d<12;d++) { SendMessage(hlistview,LVM_INSERTCOLUMN,d,(LPARAM)&lvc); lvc.iSubItem =1; lvc.cx = 100; lvc.pszText =tab[2][d]; } SendMessage(hlistview,LVM_INSERTCOLUMN,12,(LPARAM)&lvc); // Ajout des éléments de la ListView: lvi.mask=LVIF_TEXT | LVIF_STATE ; //char* contenu[]={"1","France","Paris","2","Allemagne","Berlin","3","Angleterre","London","4","Italie","Rome","5","Espagne","Madrid"}; int i; for(i=0;i<nbligne;i++) { for (c=0;c<=12;c++) { lvi.iItem=i; lvi.iSubItem=c; SendMessage(hlistview,LVM_INSERTITEM ,c,(LPARAM)&lvi); lvi.iSubItem=c; lvi.pszText=tab[i+3][c-1]; SendMessage(hlistview,LVM_SETITEMTEXT ,i,(LPARAM)&lvi); } } }
Il faudrait pouvoir insérer la listview dans l'onglet 1 par exemple.
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 BOOL CALLBACK DlgProc(HWND hDlg,UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; static HWND hlistview; HWND hTabCtrl = GetDlgItem(hDlg, IDC_TAB1); TCITEM tci; switch (message) { case WM_INITDIALOG: tci.mask = TCIF_TEXT; tci.pszText = "Onglet 2"; SendMessage(hTabCtrl, TCM_INSERTITEM, 1, (LPARAM) &tci); tci.mask = TCIF_TEXT; tci.pszText = "Onglet 1"; SendMessage(hTabCtrl, TCM_INSERTITEM, 0, (LPARAM) &tci); NMHDR nmhdr; nmhdr.code=TCN_SELCHANGE; nmhdr.hwndFrom=hTabCtrl; SendMessage(hDlg,WM_NOTIFY,0,(LPARAM)&nmhdr); break; case WM_NOTIFY: NMHDR* pnmh; pnmh = (NMHDR*)lParam; // S'assurer qu'il s'agit d'un changement d'onglet: if(pnmh->hwndFrom == hTabCtrl && pnmh->code == TCN_SELCHANGE) { // Forcer le redessin du TabControl: InvalidateRect(hTabCtrl,0,0); // Obtenir l'index de l'onglet sélectionné: int cursel=SendMessage(hTabCtrl,TCM_GETCURSEL,0,0); // N'afficher que le Static correspondant à l'onglet sélectionné: ShowWindow(hlistview,cursel==1); return 0; } break; case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Analyse les sélections de menu*: switch (wmId) { case ID_FICHIER_QUITTER: EndDialog(hDlg,0); break; case ID_FICHIER_OUVRIR: chargertableau (hDlg); //permet de charger un tableau a partir d'un fichier break; case ID_OUTILS_TABLEAU: listview (hlistview,hDlg); //affiche la listview break; } break;//break du switch break;//break du WM_COMMAND case WM_CLOSE: //Fermer la boite de dialogue: EndDialog(hDlg,0); break; } return 0; }
pour une fenêtre simple je déclare le HWND dans case WM_INITDIALOG puis je fait un ShowWindow (HWND,cursel==1)(1 correspond l'onglet) dans case WM_NOTIFY.
Merci
Partager