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 :

Bordure variable sous une listbox


Sujet :

Windows

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Bordure variable sous une listbox
    Bonjour,

    Débutant en prog windows, je me sui servi d'un tuto de ce site pour apprendre puis j'ai essayé mes propres trucs.

    ALors voila, j'ai une listbox qui devrait occuper toute la fenetre, mais quand je lance l'application, il y a une bordure restante sous la fenetre. Come ceci :



    Et le plus etrange, c'est que lorsque je redimensionne la fenetre en hauteur, la bordure change de taille, peut devenir moyenne ou toute fine (c'est qu'elle est censée etre au départ), mais sans rapport avec la nouvelle taille de la fenetre.

    Je fais le code minimum qui me produti cet effet :
    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    #include <windows.h>
    
    HINSTANCE hinst;
    HWND hwnd;
    HWND hListBox;
    
    LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
    
    char szClassName[ ] = "WindowsApp";
    
    int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance,
                        LPSTR lpszArgument, int nFunsterStil)
    {
        hinst = hThisInstance;
        
        MSG messages;   
        WNDCLASSEX wincl;     
    
        wincl.hInstance = hThisInstance;
        wincl.lpszClassName = szClassName;
        wincl.lpfnWndProc = WindowProcedure;      
        wincl.style = CS_DBLCLKS;                 
        wincl.cbSize = sizeof (WNDCLASSEX);
        wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
        wincl.lpszMenuName = NULL;               
        wincl.cbClsExtra = 0;     
        wincl.cbWndExtra = 0;     
        wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
    
        if (!RegisterClassEx (&wincl))
            return 0;
    
        hwnd = CreateWindowEx (
               0,                    
               szClassName,         
               "Resultat de la recherche",      
               WS_OVERLAPPEDWINDOW,  
               CW_USEDEFAULT,        
               CW_USEDEFAULT,        
               544,                  
               375,                  
               HWND_DESKTOP,         
               NULL,                 
               hThisInstance,        
               NULL                  
               );
    
        ShowWindow (hwnd, nFunsterStil);
    
        while (GetMessage (&messages, NULL, 0, 0))
        {
            TranslateMessage(&messages);
            DispatchMessage(&messages);
        }
        return messages.wParam;
    }
    
    LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {   
        switch (message)                 
        {
            case WM_CREATE:
                {
                 hListBox = CreateWindowEx(WS_EX_CLIENTEDGE,"LISTBOX", "Texte", 
                                           WS_VISIBLE|WS_CHILD|LBS_SORT|LBS_NOTIFY|WS_HSCROLL|WS_VSCROLL,
                                           0, 0, 0, 0, hwnd, NULL, hinst, NULL);
                 return 0;
                }        
            
            
            case WM_SIZE:
                RECT clientRect;
                GetClientRect(hwnd, &clientRect);        
                MoveWindow(hListBox, 0, 0, clientRect.right, clientRect.bottom, TRUE);
                 return 0;
                                                
            case WM_DESTROY:
                PostQuitMessage (0);  
                break;
                
            default:     
                return DefWindowProc (hwnd, message, wParam, lParam);
        }
    
        return 0;
    }
    Il y as sans doute un truc très bête qui m'échappe, mais je cherche et je trouve pas (et ca m'agace grave ).

    Si vous pouvez éclairer ma lanterne, ce serais sympa. Merci d'avance !

  2. #2
    Membre averti Avatar de pascal.barbier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2007
    Messages : 362
    Points : 442
    Points
    442
    Par défaut
    Cet effet est normal.
    Il est du au fait que la taille d'une litbox est un multiple de la taille d'une de ses lignes.
    Tu pourra le vérifier en agrandissant lentement ta fenêtre verticalement : la barre grise augmente pendant que la taille de la listbox n'augmente pas. A un certain moment, il y a assez de place pour une nouvelle ligne dans la listbox et la barre grise disparait pour laisser la place à une ligne de listbox supplémentaire.
    www.iristechnologies.eu
    Centre de formation à Paris et Toulouse

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Ah Ok, alors c'est pas dans mon code que ca cloche !!
    Ca me rassure, parce que je voyais pas ce que j'avais put faire de travers !

    Donc si j'ai bien saisi, la listbox n'augmente que par 'pas' ?

    Merci Pascal, pour ta réponse.

    d'habitude on fait quoi pour traiter ce genre d'effet ?

  4. #4
    Membre averti Avatar de pascal.barbier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2007
    Messages : 362
    Points : 442
    Points
    442
    Par défaut
    Je te laissais chercher mais apparamment tu n'as pas trouvé :
    Ajoute le style LBS_NOINTEGRALHEIGHT à la création de la listbox.
    www.iristechnologies.eu
    Centre de formation à Paris et Toulouse

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Ah désolé, mais je crois que je risquais pas de trouver car je cherchais pas de ce coté la.

    Au lieu de chercher (comme il était logique de le faire) dans l'aide de la listbox, j'ai essayé de chercher un moyen de reduire (par code) la fenetre principale pour l'ajuster à la listbox. J'aurais vraiment pas eu le réflexe de voir s'il y a un style adéquat.

    J'avoue que j'ai pas été malin sur ce coup la, mais c'est pas grave, ca me servira de lecon pour une prochain fois. Le prochain coup je chercherais encore mieux.

    En tout cas, encore merci pour le temps consacré. Je vais de ce pas mettre la balise "Resolu" si j'y arrive

  6. #6
    Membre averti Avatar de pascal.barbier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2007
    Messages : 362
    Points : 442
    Points
    442
    Par défaut
    Ne t'inquiète pas, ma remarque était une boutade.
    Chez crosoft c'est souvent comme ça qu'on galère en cherchant très loin quelque chose qui est juste devant notre nez.
    Au fait, bienvenue sur developpez.com
    www.iristechnologies.eu
    Centre de formation à Paris et Toulouse

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Merci pour la bienvenue !

    Oui, c'est vrai que même si on cherches bien, il y as parfois des choses ou on passe complètement à coté.

    Un exemple parmi d'autres, avec la fonction FindFirstFile qui accepte un chemin tel que d:\test\*.* ce qui est normal, mais qui accepte egalement un chemin tel que D:\test\//\//\\*.* (il n'y as pas de caracteres d'echappement, c'est une chaine que je rentre dans une editbox).

    Bon, ca m'empeche pas de dormir, ni de coder, de toute facon je m'arrange toujours pour avoir la première version, mais j'avoue que malgré mes recherches, je n'ai toujours pas réussi à comprendre la raison (s'il y en as une).

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

Discussions similaires

  1. changer les variables d'une listbox
    Par MatthieuT42 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 02/06/2015, 13h59
  2. [CSS 2.1] Bordure variable sur une div
    Par Torgar dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 16/12/2011, 15h56
  3. Access>Variable dans une ListBox
    Par manganoni.genevieve@ dans le forum Access
    Réponses: 1
    Dernier message: 17/09/2007, 11h06
  4. utilisé une chaine comme un nom de variable sous delphi ?
    Par hatem_info dans le forum Langage
    Réponses: 3
    Dernier message: 11/10/2005, 16h22
  5. Réponses: 5
    Dernier message: 08/09/2005, 20h33

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