Language C to PB, Trying adapt D64,D71,D81 DiskImage Source

Just starting out? Need help? Post your questions and find answers here.
infratec
Always Here
Always Here
Posts: 6817
Joined: Sun Sep 07, 2008 12:45 pm
Location: Germany

Re: Language C to PB, Trying adapt D64,D71,D81 DiskImage Sou

Post by infratec »

Marty2PB wrote:... an CanvasGadget() to the look of the ListIconGadget()... Puhh.. This is many work.... I try
ListEx() does exactly this.
Maybe you can reach your goal with ListEx() and his parameters.
Marty2PB
User
User
Posts: 47
Joined: Thu Mar 13, 2014 4:31 pm

Re: Language C to PB, Trying adapt D64,D71,D81 DiskImage Sou

Post by Marty2PB »

I have found Quicker Solution for the Test Gui

Code: Select all

    Procedure OnDrawItem(hWnd, lParam)
                    
        Protected  Text$ = Space(#MAX_PATH)
        
        *lpdis.DRAWITEMSTRUCT = lparam        
        
        If (*lpdis\itemID > -1 )
            
            Select *lpdis\itemAction
                Case #ODA_DRAWENTIRE               
                    
                    ;
                    ; Text Color
                    SetTextColor_(*lpdis\hDC,$FCF7F5) 
                    
                    If( *lpdis\itemState & #ODS_SELECTED )
                        ;
                        ; Highlighted
                        
                        SetBkColor_( *lpdis\hDC, GetSysColor_( #COLOR_HIGHLIGHT ) );
                        hBackBrush = CreateSolidBrush_( GetSysColor_( #COLOR_HIGHLIGHT ) );
                        
                    Else
                        ;
                        ; Not Highlighted
                        SetBkColor_( *lpdis\hDC, $B15629 );
                        hBackBrush = CreateSolidBrush_( $B15629 );
                        
                    EndIf  
                    
                    Dim itemrect.RECT(3)
                    For i = 0 To 2                                      ; Columns
                        RtlZeroMemory_(@itemrect(i),SizeOf(RECT))
                        
                        itemrect(i)\top = i
                        
                        SendMessage_(*lpdis\hwndItem, #LVM_GETSUBITEMRECT, *lpdis\itemid, @itemrect(i))
                        
                        text$ = GetGadgetItemText(GetDlgCtrlID_(*lpdis\hwndItem), *lpdis\itemid, i)
                        
                        SelectObject_(*lpdis\hDC, GetStockObject_(#NULL_PEN))
                        
                        SelectObject_(*lpdis\hDC, hBackBrush)
                        Rectangle_ (*lpdis\hDC, itemrect(i)\left, itemrect(i)\top, itemrect(i)\right, itemrect(i)\bottom-1) ; Size of Highlighted  Bar
                        TextOut_(*lpdis\hDC, itemrect(i)\left, itemrect(i)\top, text$, Len(text$))
                        
                        DeleteObject_(hBackBrush)                        
                    Next            
                Case #ODA_SELECT                    
                Case #ODA_FOCUS  
            EndSelect
        EndIf
      
    EndProcedure    
        
  
  Procedure WinCallback(hWnd, uMsg, wParam, lParam) 
      
      Select uMsg
              
          Case #WM_DRAWITEM
              OnDrawItem(hWnd, lParam)
          Case #WM_MEASUREITEM              
              *lpmis.MEASUREITEMSTRUCT = lparam
              *lpmis\itemheight = 12       ; <<-- Set ListIconGadget Row Size       
      EndSelect
      
    ProcedureReturn #PB_ProcessPureBasicEvents 
  EndProcedure


    If OpenWindow(0, 0, 0, 340, 600, Preview$, #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
        
        SetWindowCallback(@WinCallback())    ; Callback aktivieren
        
        ListIconGadget(1,4,4,332,400, "",50, #LVS_OWNERDRAWFIXED)
                SendMessage_(GadgetID(1),#WM_SETFONT,CBMFontCharset1(),1) 
        SendMessage_(GadgetID(1),#LVM_SETEXTENDEDLISTVIEWSTYLE,0,#LVS_EX_LABELTIP| #LVS_EX_FULLROWSELECT)        
........


Image
Post Reply