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 ):
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);
		}
	}
}
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
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;
 
}
Il faudrait pouvoir insérer la listview dans l'onglet 1 par exemple.
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