WM_MEASUREITEM: MEASUREITEMSTRUCT mis = (MEASUREITEMSTRUCT)lParam, klappt nicht!



  • Wieso geht das nicht????

    case WM_MEASUREITEM: {
    
                MEASUREITEMSTRUCT mis = (MEASUREITEMSTRUCT)lParam;
    
                switch( mis.CtlID ) {
    
                    case ID_LISTBOX: {
    
                        MessageBox( 0, "", "", MB_OK );                  
                        break;
                    }
                }
                break;
            }
    

    Gruß Tobi.



  • hmm ok anscheint muss man LPMEASUREITEMSTRUCT benutzen.

    gruß Tobi.



  • aber evtl. doch noch in diesem Thread, weil wollte jetzt nicht extra ein neuen machen, wie mache ich es das ich die einzeln eingefuegten Elemente unterschiedlich färbe, weil so:

    case WM_DRAWITEM: {
    
                LPDRAWITEMSTRUCT lpDis = (LPDRAWITEMSTRUCT)lParam;
    
                switch( lpDis->CtlID ) {
    
                    case ID_LISTBOX: {
    
                        HBRUSH hBack = CreateSolidBrush( RGB( 235, 235, 255 ) );
    
                        if( ( SendMessage( lpDis->hwndItem, LB_GETCOUNT, 0, 0 ) % 2 ) != 0 ) {
    
                            ::FillRect( lpDis->hDC, &lpDis->rcItem, hBack );
                        }
                        break;
                    }
                }
                break;
            }
    

    gehts nicht.



  • also ich such ja selber schon bei google ect. aber finden tue ich eigentlich nur MFC Kram.

    Please Help! o.O



  • case WM_DRAWITEM:
                #define lpDis     ((DRAWITEMSTRUCT*) lParam)
    
                COLORREF bgColor;
                RECT rc;
    
                switch (lpDis->CtlID)
                {
                    case ID_LISTBOX:
                        if (lpDis->itemState & ODS_SELECTED)
                            bgColor = RGB (215, 230, 215);
                        else
                        {
                            if (lpDis->itemID % 2 == 0)
                                bgColor = RGB (255, 255, 255);
                            else
                                bgColor = RGB (245, 245, 245);
                        }
    
                        HBRUSH hbr = CreateSolidBrush (bgColor);
                        FillRect (lpDis->hDC, &lpDis->rcItem, hbr);
                        DeleteObject (hbr);
                    break;
                }
    
                #undef lpDis
            break;
    


  • 🙂 oh danke.

    Gruß Tobi.


Anmelden zum Antworten