LBS_MULTIPLESEL zur laufzeit ändern



  • Ich habe ein listbox, die ich einmal mit LBS_MULTIPLESEL(mehrfachauswahl)
    brauche dann wiederum ohne.
    Habe es bereits mit 'SetWindowLong' versucht.

    Vieleicht hat jemand eine Idee.



  • Sollte sich doch eigentlich auch über SetWindowLong machen lassen, oder?! Zeig' doch mal deine bisherigen Versuche.



  • DWORD dw=GetWindowLong(hwnd,GWL_STYLE) ;

    SetWindowLong (hwnd, GWL_STYLE,dw | LBS_MULTIPLESEL) ;

    danke für die Antword Coste



  • hey 🙂

    Wie kann man denn dann wieder das Style entfernen?

    DWORD dw=GetWindowLong(hwnd,GWL_STYLE) ;
    
    dw = dw - LBS_MULTIPLESEL;
    
    SetWindowLong (hwnd, GWL_STYLE,dw );
    

    wird ja warscheinlich falsch sein. Wie mache ich ein OR rückgängig, entferne also LBS_MULTIPLESEL daraus???

    Danke & Gruss,
    ~code_pilot



  • dw & ~LBS_MULTIPLESEL;
    


  • Hmmm warum kann ich dann nicht die Scrollbars sowie das automatische scrollen eines multiline Edit-Controls entfernen?

    Meine Default-Styles des Fensters:

    //Creating the Edit Controls
    hEdit = CreateWindowEx(WS_EX_CLIENTEDGE,"edit", "Hello World\r\nThis is my little program.", WS_CHILD | WS_VISIBLE | ES_LEFT |
    WS_VSCROLL | WS_HSCROLL | ES_AUTOHSCROLL | ES_AUTOVSCROLL | ES_MULTILINE,
    1, 1, 342, 180, hMain, (HMENU) EDIT, hInstance, NULL) ;
    

    Und jetzt will ich sie entfernen:

    //Unset the scrollbars
    DWORD dw = GetWindowLong(hEdit ,GWL_STYLE);
    dw = dw & ~WS_VSCROLL & ~WS_HSCROLL & ~ES_AUTOVSCROLL & ~ES_AUTOHSCROLL;
    
    SetWindowLong( hEdit , GWL_STYLE, dw);
    InvalidateRect( hEdit , NULL, TRUE);
    

    Hmm?? Zwar bleiben die Scrollbars "ausgegraut" nachdem ich das gemacht habe, aber sie verschwinden nicht, und der Text, wenn er über das Zeilenende hinausschießt, bricht nicht um, was aber normalerweise der Fall ist wenn ich diese Styles (WS_VSCROLL | WS_HSCROLL | ES_AUTOHSCROLL | ES_AUTOVSCROLL) nicht beim Erstellen mitübergebe 😕 ?

    Wisst ihr da ne Lösung?

    Gruss,
    ~code_pilot



  • Man kann LBS_MULTIPLESEL und auch andere, spezielle Styles überhaupt nicht ändern.

    To create a list box by using the CreateWindow or CreateWindowEx function, use the LISTBOX class, appropriate window style constants, and the following style constants to define the list box. After the control has been created, these styles cannot be modified, except as noted.

    Eigentlich schade. 😞


Log in to reply