Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3407 connectés 

 


Dernière réponse
Sujet : [C++] VISUAL: Listbox de taille variable??
H4dd3R Moi j´aime le forum programmation!!  :love:  
 
Effectivement CListBox::SetHorizontalExtent() existe!!
En fait la classe est juste trop paresseuse pour calculer la taille horizontale comme elle le fait pour la verticale..
 
Mais sinon un CListBox (C comme trente deuc bits ;) ) est bien plus sociable que son ancètre 16 bits: pas besoin de rajouter 8, il est même trop prudent comme ça!! ;)
 
Merci!! :)

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
H4dd3R Moi j´aime le forum programmation!!  :love:  
 
Effectivement CListBox::SetHorizontalExtent() existe!!
En fait la classe est juste trop paresseuse pour calculer la taille horizontale comme elle le fait pour la verticale..
 
Mais sinon un CListBox (C comme trente deuc bits ;) ) est bien plus sociable que son ancètre 16 bits: pas besoin de rajouter 8, il est même trop prudent comme ça!! ;)
 
Merci!! :)
Carbon_14 En 16 bits (ça va aussi en 32), j'ai une listbox avec scroll horizontal...
 CONTROL "", IDINFOSP_COMM, "LISTBOX", LBS_NOTIFY | WS_BORDER | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL, 5, 90, 218, 46
 
J'ai été perplexe car y avait pas moyen de scroller quand le texte était (trop) long. Barre visible mais invalidée.
 
En fouillant dans la doc de BC 3.1 (vieux mais bien pour moi), je suis arrivé au fait qu'il faut envoyer le message LB_SETHORIZONTALEXTENT au ListBox pour lui donner la largeur effective du texte. Si plus grand que sa largeur, il "décide" de valider la barre.
 
Mon code donne alors (suis qu'amateur, y a sans doute à rédire  :))
     WORD   wLongest = 0;
 
       hdc = GetDC(hDlg);
       hFontOld = SelectObject(hdc, hFonte(0, 8, 0, FW_NORMAL, SERIF));
       do
       {
         Charge_bBuf_Avec_Chaine();
         // mesure taille des chaînes entrées pour savoir s'il faut valider
         // la barre de défilement horizontal
         #ifndef __FLAT__
  GetTextExtentPoint(hdc, (LPSTR)bBuf, strlen(bBuf), &size);
  #else
         GetTextExtentPoint32(hdc, (LPSTR)bBuf, strlen(bBuf), &size);
  #endif
  larg = size.cx;  
  if (larg > wLongest) wLongest = (WORD)larg;
  SendDlgItemMessage(hDlg, IDINFOSP_COMM, LB_ADDSTRING, 0, (LPARAM)bBuf);
  Incrémente pointeur
       } while (pasfini);
 
       // Applique largeur maxi de chaîne intégrée la plus longue
       SendDlgItemMessage(hDlg, IDINFOSP_COMM, LB_SETHORIZONTALEXTENT,
     (WPARAM)(wLongest + 8), 0L); // + 8 sinon trop juste
       SelectObject(hdc, hFontOld);                           hFonte(1, NULL, NULL, NULL, NULL);
       ReleaseDC(hDlg, hdc);
 
C'est pas toujours parfait (j'ai aussi une barre verticale qui joue peut-être). Le dernier caractère est des fois a demi-visible. Ajouter 60 au lieu de 8 ne semble pas améliorer les choses (on ne trompe pas un ListBox comme ça !  :D)
H4dd3R Oui SetScrollRange() marche sur la barre verticale, mais la barre horizontale reste disablée qqe soit le scroll range..
 
Bouuuuuhh!! :-\
chrisbk t'as essayer de jouer avec les SetScrollRange et tout ca ?
H4dd3R Pour info pour connaitre la taille d´un texte: GetTextExtentPoint32().. :)
 
Par contre oui il y a bien une option "horizontal scroll" mais ça marche pas sur une listbox.
Il faudrait un autre objet de remplacement.. Une idée qqun??
chrisbk Arf je suis vraiment pas sur, m'enfin dans les propertie de la list box dans l'editeur de ressources y'a un truc a cocher nomme "horizontal scroll".
 
 
mais bon, c'est peut etre un piege :D
H4dd3R Si ça marche merci!! ;)
En fait j´aurais qu´à réagir au redimentionnement de fenêtre et à ajuster la taille de la listbox à la client area.. :)
 
Par contre pas moyen d´avoir un scroll horizontal sur une listbox?? :(
 
Et qqun a une idée pour savoir la taille nécesaire en connaissant les strings?? Ca risque d´être chiant car ça dépend de la fonte..
chrisbk MoveWindow ne marche pas ?
H4dd3R Salut.
Voilà mon problème:
j´ai un tableau de strings de tailles diverses.
J´aimerais afficher une listbox avec ces strings pour que l´utilisateur puisse en choisir un.
 
Et la question: ;)
comment faire pour changer la taille de la listbox (elle sera ds sa propre fenêtre) pour l´adapter à la taille des strings??
Car si je met la Listbox avec l´éditeur de ressources je pourrais certes changer la taille de la fenêtre, mais la listbox bougera pas!!  :(  
 
HELP!! :)

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)