IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Problème avec une listbox


Sujet :

Windows

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Points : 39
    Points
    39
    Par défaut Problème avec une listbox
    Bonjour,
    J'ai un problème tout bête avec les listbox.
    Tout d'abord j'ai ajouter une ressource ( ->add ressource -> dialogue)
    puis j'insère à l'aide de la tool box ma list box, impossible d'écrire à l'intérieur. Sur msdn ils parlent d'une scroolbar view mais impossible de la trouver. Pouvez vous me dire comment inserer les données à ma list box?
    Merci

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Points : 39
    Points
    39
    Par défaut
    J'ai réussi à inserer du texte, mais il s'affiche en japonnais.. Et des que je clique sur un choix tout se multiplie et je me retrouve avec n * 2 choix identiques...
    J'ai testé tous les attributs dispo mais aucun me convient...


    case WM_INITDIALOG:
    hwndList = GetDlgItem(Dlg, IDC_LIST1 );
    SendMessage(hwndList, LB_ADDSTRING, 0, (LPARAM)"0");
    SendMessage(hwndList, LB_ADDSTRING, 0, (LPARAM)"1");
    SendMessage(hwndList, LB_ADDSTRING, 0, (LPARAM)"Triangle");
    SendMessage(hwndList, LB_SETCURSEL, Forme, 0);
    return TRUE;

    dans ressource.rc

    IDD_DIALOG1 DIALOGEX 0, 0, 316, 184
    STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
    CAPTION "Dialog"
    FONT 8, "MS Shell Dlg", 400, 0, 0x1
    BEGIN
    DEFPUSHBUTTON "OK",IDOK,205,163,50,14
    PUSHBUTTON "Cancel",IDCANCEL,259,163,50,14
    CTEXT "Choix de l'instruction",IDC_STATIC,69,18,151,17,SS_NOTIFY | SS_CENTERIMAGE | SS_PATHELLIPSIS | SS_REALSIZECONTROL,WS_EX_DLGMODALFRAME
    LISTBOX IDC_LIST1,65,56,153,74,LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL
    END

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Je parie que tu as casté une chaîne litérale en quelque chose qu'il ne fallait pas (comme en LPCTSTR, LPCWSTR ou en LPARAM devant contenir un LPCTSTR).

    Si tel est le cas, la solution est: TEXT().
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Points : 39
    Points
    39
    Par défaut
    /*Oui mais Sendmessage attend un objet de type param non ?
    SendMessage(hwndList, LB_ADDSTRING, 0, (LPARAM)"Triangle");*/


    Ok ca marche j'ai modifier en utilisant : SendMessage(hwndList, LB_ADDSTRING, 0, (LONG)TEXT("Triangle"));

    Mais comment expliquer le fait que tout se dédouble ?

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Tu peux re-remplacer (LONG) par (LPARAM) : L'erreur, c'est qu'il manquait TEXT().

    Pour le reste, peux-tu poster la DialogProc entière? Dans des balises [CODE] si possible?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Points : 39
    Points
    39
    Par défaut
    Alors:
    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
    LRESULT CALLBACK MainProc(HWND Dlg,UINT message,WPARAM wParam,LPARAM lParam)
    {
         int Select;
         switch(message)
         {
               case WM_COMMAND:
                       Select=LOWORD(wParam);
                       switch(Select)
                        {
    		   case IDOK:
       		       EndDialog(Dlg,0);
    		       PostQuitMessage(0);
    		        return TRUE;
    		   case IDCANCEL:
    			EndDialog(Dlg,Select);
    			PostQuitMessage(0);
    			return TRUE;
    	          }
    	case WM_INITDIALOG:
           		hwndList = GetDlgItem(Dlg, IDC_LIST1 );
    
    		SendMessage(hwndList, LB_ADDSTRING, 0, (LONG)TEXT("TEST"));
    		SendMessage(hwndList, LB_SETCURSEL, Forme, 0);
    		return TRUE;
    	default:
    		return FALSE;
    }
    }

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Il manque un return/break après le switch de WM_COMMAND.

    D'ailleurs, pour ce genre de choses, je conseille d'y aller en Single Entry, Single Exit (SESE):
    Code C : 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
    INT_PTR HandleWmCommand(HWND Dlg, WORD controlId, WORD notificationCode, HWND hContol)
    {
    	INT_PTR bRet = TRUE;
     
    	switch(controlId)
    	{
    	case IDOK:
    		EndDialog(Dlg,0);
    		/*Note: C'est soit EndDialog, soit PostQuitMessage().*/
    		break;
    	case IDCANCEL:
    		EndDialog(Dlg,IDCANCEL);
    		break;
    	default:
    		bRet = FALSE;
    		break;
    	}
    	return bRet;
    }
     
    /*Une DialogProc doit retourner TRUE ou FALSE dans un INT_PTR*/
    INT_PTR CALLBACK MainProc(HWND Dlg, UINT message, WPARAM wParam, LPARAM lParam)
    {
    	INT_PTR bRet = TRUE;
     
    	switch(message)
    	{
    	case WM_COMMAND:
    		bRet = HandleWmCommand(Dlg, LOWORD(wParam), HIWORD(wParam), (HWND)lParam);
    		break; /*C'est ce break qui manquait*/
    	case WM_INITDIALOG:
    		{
    		hwndList = GetDlgItem(Dlg, IDC_LIST1 );
     
    		SendMessage(hwndList, LB_ADDSTRING, 0, (LPARAM)TEXT("TEST"));
    		SendMessage(hwndList, LB_SETCURSEL, Forme, 0);
    		}
    		break;
    	default:
    		bRet = FALSE;
    		break;
    	}
    	return bRet;
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Points : 39
    Points
    39
    Par défaut
    Merci ca marche, c'est au top

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Problème avec une listbox
    Par sarah-geek dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/08/2012, 12h54
  2. [XL-2000] Problème avec une listbox
    Par juju05 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/12/2010, 17h25
  3. Problème avec un Listbox utilsant une WebMethod
    Par Jayeff_land dans le forum ASP.NET
    Réponses: 2
    Dernier message: 13/02/2009, 14h25
  4. problème avec une requête imbriquée
    Par jaimepasteevy dans le forum Langage SQL
    Réponses: 13
    Dernier message: 05/12/2003, 10h29
  5. Problème avec une procédure stockée
    Par in dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/05/2003, 15h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo