Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LIST VIEW


Information sur la source

Catégorie :.Net Niveau : Débutant Date de création : 17/07/2003 Date de mise à jour : 17/07/2003 09:50:43 Vu / téléchargé: 3 667 / 496

Note :
8 / 10 - par 3 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note


Description

Voici voila un petit programme sur les ListView !
 

Source

  • //--------------------------------------------------------------------
  • // les includes
  • #include <windows.h>
  • #include <stdio.h>
  • #include <commctrl.h>
  • #include "resource.h"
  • #ifndef _UTIL_H_
  • #include "util.h"
  • #endif //_UTIL_H_
  • #ifndef _LIST_VIEW_H_
  • #include "ListView.h"
  • #endif //_LIST_VIEW_H_
  • //--------------------------------------------------------------------
  • // mes includes
  • #ifndef _UTIL_H_
  • #include "util.h"
  • #endif // _UTIL_H_
  • BOOL CALLBACK MainDialogProc(
  • HWND hwnd,
  • UINT iMsg,
  • WPARAM wParam,
  • LPARAM lParam
  • );
  • //--------------------------------------------------------------------
  • // la ou le programme commmence
  • int WINAPI WinMain(
  • HINSTANCE hInstance,
  • HINSTANCE hPrevInstance,
  • LPSTR lpszCmdLine,
  • int iCmdShow
  • )
  • {
  • InitCommonControls();
  • // on active la boite de dialogue prinpale
  • DialogBox(
  • hInstance,
  • MAKEINTRESOURCE(IDD_DIALOG_MAIN),
  • NULL,
  • MainDialogProc
  • );
  • return 0 ;
  • }
  • //--------------------------------------------------------------------
  • //
  • BOOL CALLBACK MainDialogProc(
  • HWND hDlg,
  • UINT iMsg,
  • WPARAM wParam,
  • LPARAM lParam
  • )
  • {
  • static HWND hwndLV;
  • static int tabSmallIcon[4];
  • static int tabLargeIcon[4];
  • static HINSTANCE hInstance;
  • static CHOOSECOLOR cc;
  • switch(iMsg)
  • {
  • case WM_INITDIALOG:
  • {
  • LV_ITEM lvi;
  • char buf[256];
  • int i;
  • hInstance = MY_GET_INSTANCE(hDlg);
  • hwndLV = GetDlgItem(hDlg,IDC_LIST);
  • InitListViewImage(
  • hwndLV,
  • tabLargeIcon,
  • tabSmallIcon
  • );
  • // on factorise les initialisations
  • lvi.mask = LVIF_TEXT | LVIF_IMAGE;
  • lvi.iSubItem = 0;
  • lvi.pszText = buf;
  • for(i=0;i<100;i++)
  • {
  • lvi.iItem = i;
  • lvi.cchTextMax = sprintf(buf,"item #%d",i);
  • // au debut on alterne entre chaque couleur,
  • // donc si on reflechis bien il suffit de faire
  • // i&3 pour avoir 0,1,2,3,0,1,2,3,0,...
  • lvi.iImage = tabSmallIcon[i & 3];
  • ListView_InsertItem(hwndLV,&lvi);
  • }
  • // ChooseColor
  • cc.lStructSize = sizeof(cc);
  • cc.hwndOwner = hDlg;
  • cc.hInstance = hInstance;
  • cc.Flags = CC_ANYCOLOR;
  • return TRUE;
  • }
  • // -------------------------------------
  • case WM_COMMAND:
  • {
  • switch(LOWORD(wParam))
  • {
  • case ID_OPTION_STYLES_GRANDSICONES:
  • {
  • ChangeStyle(hwndLV,LVS_ICON);
  • return TRUE;
  • }
  • case ID_OPTION_STYLES_PETITSICONES:
  • {
  • ChangeStyle(hwndLV,LVS_SMALLICON);
  • return TRUE;
  • }
  • case ID_OPTION_STYLES_LISTE:
  • {
  • ChangeStyle(hwndLV,LVS_LIST);
  • return TRUE;
  • }
  • case ID_OPTION_COULEURS_TEXTE:
  • {
  • COLORREF color;
  • // noir
  • cc.rgbResult = RGB(0,0,0);
  • cc.lpCustColors = &color;
  • if(ChooseColor(&cc))
  • {
  • ListView_SetTextColor(hwndLV,cc.rgbResult);
  • InvalidateRect(hwndLV,NULL,FALSE);
  • }
  • return TRUE;
  • }
  • case ID_OPTION_COULEURS_FOND:
  • {
  • COLORREF color;
  • // blanc
  • cc.rgbResult = RGB(255,255,255);
  • cc.lpCustColors = &color;
  • if(ChooseColor(&cc))
  • {
  • // il faut changer les deux couleurs
  • ListView_SetBkColor(hwndLV,cc.rgbResult);
  • ListView_SetTextBkColor(hwndLV,cc.rgbResult);
  • InvalidateRect(hwndLV,NULL,TRUE);
  • }
  • return TRUE;
  • }
  • case ID_OPTION_COULEURS_ICONESSELECTIONNES_ROUGE:
  • case ID_OPTION_COULEURS_ICONESSELECTIONNES_VERT:
  • case ID_OPTION_COULEURS_ICONESSELECTIONNES_BLEU:
  • case ID_OPTION_COULEURS_ICONESSELECTIONNES_JAUNE:
  • {
  • UINT nbItem;
  • int iNextItem;
  • nbItem = ListView_GetSelectedCount(hwndLV);
  • if(!nbItem)
  • {
  • return FALSE;
  • }
  • iNextItem = ListView_GetNextItem(
  • hwndLV,
  • -1,
  • LVNI_ALL | LVNI_SELECTED
  • );
  • while(nbItem--)
  • {
  • int i;
  • LV_ITEM lvi;
  • lvi.iItem = iNextItem;
  • lvi.iSubItem = 0;
  • lvi.mask = LVIF_IMAGE;
  • if(!ListView_GetItem(hwndLV,&lvi))
  • {
  • DisplayLastError();
  • }
  • i = 0;
  • switch(LOWORD(wParam))
  • {
  • case ID_OPTION_COULEURS_ICONESSELECTIONNES_JAUNE:
  • i++;
  • case ID_OPTION_COULEURS_ICONESSELECTIONNES_BLEU:
  • i++;
  • case ID_OPTION_COULEURS_ICONESSELECTIONNES_VERT:
  • i++;
  • }
  • lvi.iImage = tabSmallIcon[i];
  • ListView_SetItem(hwndLV,&lvi);
  • iNextItem = ListView_GetNextItem(
  • hwndLV,
  • iNextItem,
  • LVNI_ALL | LVNI_SELECTED
  • );
  • }
  • return TRUE;
  • }
  • }
  • case ID_APROPOS:
  • {
  • MessageBox(
  • hDlg,
  • "Voila un programme sur les ListView.\n"
  • "Vive Windows grace auquel on peut faire les CommonControls dont les ListView !\n"
  • "Vive le langage C, et vive ses inventeurs !\n"
  • "Vive cppfrance.com !\n"
  • "\nAuteur : JCDjcd\n"
  • "Date : Juillet 2003\n",
  • "A propos ...",
  • MB_OK | MB_ICONQUESTION
  • );
  • return TRUE;
  • }
  • break;
  • }
  • // -------------------------------------
  • case WM_SYSCOMMAND:
  • {
  • switch(LOWORD(wParam))
  • {
  • // si on veut quitter
  • case SC_CLOSE:
  • {
  • EndDialog(hDlg,FALSE);
  • break;
  • }
  • }
  • break;
  • }
  • // -------------------------------------
  • // on ne traite pas le message
  • default:
  • {
  • break;
  • }
  • }
  • return FALSE;
  • }
//--------------------------------------------------------------------
// les includes
#include <windows.h>
#include <stdio.h>
#include <commctrl.h>
#include "resource.h"

#ifndef _UTIL_H_
  #include "util.h"
#endif //_UTIL_H_

#ifndef _LIST_VIEW_H_
  #include "ListView.h"
#endif //_LIST_VIEW_H_
//--------------------------------------------------------------------
// mes includes
#ifndef _UTIL_H_
  #include "util.h"
#endif // _UTIL_H_

BOOL CALLBACK MainDialogProc(
                             HWND     hwnd,
                             UINT     iMsg,
                             WPARAM   wParam,
                             LPARAM   lParam
                             );

//--------------------------------------------------------------------
// la ou le programme commmence
int WINAPI WinMain(
                   HINSTANCE  hInstance,
                   HINSTANCE  hPrevInstance, 
                   LPSTR      lpszCmdLine,
                   int        iCmdShow
                   )       
{
InitCommonControls();
// on active la boite de dialogue prinpale
DialogBox(
         hInstance,
         MAKEINTRESOURCE(IDD_DIALOG_MAIN),
         NULL,
         MainDialogProc
         );
return 0 ;
}


//--------------------------------------------------------------------
//
BOOL CALLBACK MainDialogProc(
                             HWND     hDlg,
                             UINT     iMsg,
                             WPARAM   wParam,
                             LPARAM   lParam
                             )
{
static HWND         hwndLV;
static int          tabSmallIcon[4];
static int          tabLargeIcon[4];
static HINSTANCE    hInstance;
static CHOOSECOLOR  cc;

switch(iMsg)
  {
  case WM_INITDIALOG:
    {
    LV_ITEM   lvi;
    char      buf[256];
    int       i;

    hInstance = MY_GET_INSTANCE(hDlg);

    hwndLV = GetDlgItem(hDlg,IDC_LIST);
    InitListViewImage(
                      hwndLV,
                      tabLargeIcon,
                      tabSmallIcon
                      );

    // on factorise les initialisations
    lvi.mask        = LVIF_TEXT | LVIF_IMAGE;
    lvi.iSubItem    = 0;
    lvi.pszText     = buf;

    for(i=0;i<100;i++)  
      {
      lvi.iItem       = i;
      lvi.cchTextMax  = sprintf(buf,"item #%d",i);
      // au debut on alterne entre chaque couleur,
      // donc si on reflechis bien il suffit de faire
      // i&3 pour avoir 0,1,2,3,0,1,2,3,0,...
      lvi.iImage      = tabSmallIcon[i & 3];
      ListView_InsertItem(hwndLV,&lvi);
      }

    // ChooseColor
    cc.lStructSize      = sizeof(cc);
    cc.hwndOwner        = hDlg;
    cc.hInstance        = hInstance;
    cc.Flags            = CC_ANYCOLOR;

    return TRUE;
    }
  // -------------------------------------
  case WM_COMMAND:
    {
    switch(LOWORD(wParam))
      {
      case ID_OPTION_STYLES_GRANDSICONES:
        {
        ChangeStyle(hwndLV,LVS_ICON);
        return TRUE;
        }
      case ID_OPTION_STYLES_PETITSICONES:
        {
        ChangeStyle(hwndLV,LVS_SMALLICON);
        return TRUE;
        }
      case ID_OPTION_STYLES_LISTE:
        {
        ChangeStyle(hwndLV,LVS_LIST);
        return TRUE;
        }
      case ID_OPTION_COULEURS_TEXTE:
        {
        COLORREF color;
        // noir
        cc.rgbResult        = RGB(0,0,0);
        cc.lpCustColors     = &color;
        if(ChooseColor(&cc))
          {
          ListView_SetTextColor(hwndLV,cc.rgbResult);
          InvalidateRect(hwndLV,NULL,FALSE);
          }
        return TRUE;
        } 
      case ID_OPTION_COULEURS_FOND:
        {
        COLORREF color;
        // blanc
        cc.rgbResult        = RGB(255,255,255);
        cc.lpCustColors     = &color;
        if(ChooseColor(&cc))
          {
          // il faut changer les deux couleurs
          ListView_SetBkColor(hwndLV,cc.rgbResult);
          ListView_SetTextBkColor(hwndLV,cc.rgbResult);
          InvalidateRect(hwndLV,NULL,TRUE);
          }
        return TRUE;
        } 
      case ID_OPTION_COULEURS_ICONESSELECTIONNES_ROUGE:
      case ID_OPTION_COULEURS_ICONESSELECTIONNES_VERT:
      case ID_OPTION_COULEURS_ICONESSELECTIONNES_BLEU:
      case ID_OPTION_COULEURS_ICONESSELECTIONNES_JAUNE:
        {
        UINT nbItem;
        int  iNextItem;
        nbItem = ListView_GetSelectedCount(hwndLV);
        if(!nbItem)
          {
          return FALSE;
          }
        iNextItem = ListView_GetNextItem(
                                         hwndLV,
                                         -1,
                                         LVNI_ALL | LVNI_SELECTED
                                         );
        while(nbItem--)
          {
          int i;

          LV_ITEM lvi;
          lvi.iItem     = iNextItem;
          lvi.iSubItem  = 0;
          lvi.mask      = LVIF_IMAGE;
          if(!ListView_GetItem(hwndLV,&lvi))
            {
            DisplayLastError();
            }

          i = 0;
          switch(LOWORD(wParam))
            {
            case ID_OPTION_COULEURS_ICONESSELECTIONNES_JAUNE:
              i++;
            case ID_OPTION_COULEURS_ICONESSELECTIONNES_BLEU:
              i++;
            case ID_OPTION_COULEURS_ICONESSELECTIONNES_VERT:
              i++;
            }
          
          lvi.iImage = tabSmallIcon[i];
          ListView_SetItem(hwndLV,&lvi);

          iNextItem = ListView_GetNextItem(
                                           hwndLV,
                                           iNextItem,
                                           LVNI_ALL | LVNI_SELECTED
                                           );
          }
        return TRUE;
        }
      }
    case ID_APROPOS:
      {
      MessageBox(
                  hDlg,
                  "Voila un programme sur les ListView.\n"
                  "Vive Windows grace auquel on peut faire les CommonControls dont les ListView !\n"
                  "Vive le langage C, et vive ses inventeurs !\n"
                  "Vive cppfrance.com !\n"
                  "\nAuteur : JCDjcd\n"
                  "Date : Juillet 2003\n",
                  "A propos ...",
                  MB_OK | MB_ICONQUESTION
                  );
      return TRUE;
      }
    break;
    }
  // -------------------------------------
  case WM_SYSCOMMAND:
    {
    switch(LOWORD(wParam))
      {
      // si on veut quitter
      case SC_CLOSE:
        {
        EndDialog(hDlg,FALSE);
        break;
        }
      }
    break;
    }    
  // -------------------------------------
  // on ne traite pas le message
  default:
    {
    break;
    }
  }

return FALSE;
}

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de JackosKing le 17/07/2003 10:08:23

thx c'est ce que je cherchais :p
question bete, mais je peux pas tester jlà, est ce que ca gere les icon sup à 256 couleurs, car avec mfc pas moyen j'y suis pas arrivé :( ptetre qu'avec les api..

signaler à un administrateur
Commentaire de JackosKing le 17/07/2003 10:13:21

au fait tu n'aurais pas un exemple ou l'on cree soit meme dynamiquement la listview au lieu d'utiliser une resource?

signaler à un administrateur
Commentaire de JCDjcd le 17/07/2003 10:20:13

Oui oui !

// CreateListView - creates a list view control.
// Returns the handle of the new control if successful or NULL
//     otherwise.
// hwndParent - handle of the control's parent window
// pfData - file containing list view items
HWND WINAPI CreateListView(HWND hwndParent, FILE *pfData)
{
    HWND hwndLV;

    // Force the common controls DLL to be loaded.
    InitCommonControls();

    // Create the list view window.
    hwndLV = CreateWindow(WC_LISTVIEW, "",
        WS_CHILD | LVS_REPORT | LVS_EDITLABELS,
        0, 0, CW_USEDEFAULT, CW_USEDEFAULT,
        hwndParent, NULL, g_hinst, NULL);
    if (hwndLV == NULL)
        return NULL;


    return hwndLV;              // return the control's handle
}

signaler à un administrateur
Commentaire de JackosKing le 17/07/2003 10:42:54

ok thx :) et pour les icone sur a 2565 c'est oui je supose:p
i'm happy

signaler à un administrateur
Commentaire de JackosKing le 17/07/2003 13:23:24

heu est il possible de sauvegarder l'état d'un list view, ie. la position de la scroll barre ainsi que la selection? la selection je pense que oui, mais la position de la scrolbar...

signaler à un administrateur
Commentaire de JackosKing le 17/07/2003 18:13:46

au fait ton prog ne compile pas.. ya des erreurs :(
d:documents and settingsjackoskingureaucppfrance_source_2217main.c(100) : warning C4133: '=' : incompatible types - from 'struct HINSTANCE__ *' to 'struct HWND__ *'
etc...

signaler à un administrateur
Commentaire de JackosKing le 17/07/2003 18:27:54

enfin j'ai une erreur de link, mais bon je sais pas pkoi :(

signaler à un administrateur
Commentaire de JackosKing le 17/07/2003 18:28:00

istView.obj : error LNK2001: unresolved external symbol __imp__ImageList_ReplaceIcon@12
ListView.obj : error LNK2001: unresolved external symbol __imp__ImageList_Create@20
main.obj : error LNK2001: unresolved external symbol __imp__InitCommonControls@0

signaler à un administrateur
Commentaire de JCDjcd le 18/07/2003 21:18:59

Moi je comile avec Visual C++

signaler à un administrateur
Commentaire de victorcoasne le 18/04/2005 16:13:45

Pas mal !

ça peut être utile !

8/10 !

signaler à un administrateur
Commentaire de jno7 le 10/06/2005 16:07:39

Excellent, je cherchais depuis un moment comment créer des listes sans passer par les mfc.
Il faut juste ne pas oublier de linker avec comctl32.lib et le tour est joué.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,42 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.