| 12
 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
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 
 | #include <windows.h>
#include <commctrl.h>
//declaration des fonctions:
LRESULT CALLBACK procedureFenetrePrincipale(HWND, UINT, WPARAM, LPARAM);
void CreationTreeview();
//handle fenetre
HINSTANCE instance;
//handle de l'image liste:
HIMAGELIST himageliste;
//handle de la treeview:
HWND htreeview;
//handle de la libreairie
HINSTANCE hlibrairie;
//handle des icones:
HICON hicone;
//testouille
//structure;
TV_INSERTSTRUCT tvii;
HTREEITEM hitem;
 
//fonctions:
void CreationTreeview(HWND fenetrePrincipale)
{
 //initialisation de la librairie:
 InitCommonControls();
 //creation de l'image liste:
 himageliste=ImageList_Create(GetSystemMetrics(SM_CXSMICON),GetSystemMetrics(SM_CYSMICON),ILC_COLOR32,4,4);
 ImageList_SetBkColor(himageliste, GetSysColor(COLOR_WINDOW));
 //Creation de la treeview:
 htreeview=CreateWindow(WC_TREEVIEW,"",WS_CHILD|WS_VISIBLE|TVS_HASBUTTONS|TVS_SHOWSELALWAYS|TVS_HASLINES|TVS_LINESATROOT,0,0,0,0,fenetrePrincipale,NULL,instance,NULL);
 //chargement de la librairie shell32:
 hlibrairie=LoadLibrary("shell32.dll");
 //chargement des images
 //variable:
 int a;
 for(a=0;a<=12;a++)
 {
  hicone=LoadIcon(hlibrairie,MAKEINTRESOURCE(a));
  ImageList_AddIcon(himageliste,hicone);
 }
 //liberation de la mémoire:
 FreeLibrary(hlibrairie);
 //verification:
 if(htreeview=NULL)
 {
  MessageBox(NULL, "erreur: creation treeview", NULL, MB_ICONWARNING);
 }
 if(himageliste=NULL)
 {
  MessageBox(NULL, "erreur: chargement des images", NULL, MB_ICONWARNING);
 }
 //recuperation des images pour l'arborescence:
 TreeView_SetImageList(htreeview,himageliste,TVSIL_NORMAL);
 //
            tvii.hInsertAfter = TVI_LAST;
            ZeroMemory(&(tvii.item), sizeof(TV_ITEM));
            tvii.item.mask  = TVIF_TEXT | TVIF_IMAGE  |TVIF_SELECTEDIMAGE | TVIF_PARAM ;
 
            tvii.hParent = TVI_ROOT;
            tvii.item.iImage = 0;
            tvii.item.iSelectedImage = 1;
            tvii.item.pszText = "TEST TREEVIEW";
            hitem = TreeView_InsertItem(htreeview, &tvii);
}
 
int WinMain (HINSTANCE cetteInstance, HINSTANCE precedenteInstance,
LPSTR lignesDeCommande, int modeDAffichage)
{
    HWND fenetrePrincipale;
    MSG message;
    WNDCLASS classeFenetre;
    instance=cetteInstance;
 
    classeFenetre.style = 0;
    classeFenetre.lpfnWndProc = procedureFenetrePrincipale;
    classeFenetre.cbClsExtra = 0;
    classeFenetre.cbWndExtra = 0;
    classeFenetre.hInstance = NULL;
    classeFenetre.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    classeFenetre.hCursor = LoadCursor(NULL, IDC_ARROW);
    classeFenetre.hbrBackground = (HBRUSH)(1 + COLOR_BTNFACE);
    classeFenetre.lpszMenuName =  NULL;
    classeFenetre.lpszClassName = "classeF";
 
    // On prévoit quand même le cas où ça échoue
    if(!RegisterClass(&classeFenetre)) return FALSE;
 
    fenetrePrincipale = CreateWindow("classeF", "Ma première fenêtre winAPI !", WS_OVERLAPPEDWINDOW,
                                   CW_USEDEFAULT, CW_USEDEFAULT, 400, 300,
                                                   NULL, NULL, cetteInstance, NULL);
    if (!fenetrePrincipale) return FALSE;
 
    ShowWindow(fenetrePrincipale, modeDAffichage);
    UpdateWindow(fenetrePrincipale);
 
 
    while (GetMessage(&message, NULL, 0, 0))
    {
        TranslateMessage(&message);
        DispatchMessage(&message);
    }
    return message.wParam;
}
 
LRESULT CALLBACK procedureFenetrePrincipale(HWND fenetrePrincipale, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
        case WM_CREATE:
        CreationTreeview(fenetrePrincipale);
            return 0;
 
        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;
 
        default:
            return DefWindowProc(fenetrePrincipale, message, wParam, lParam);
    }
} | 
Partager