Virtual ListIcon detect PB ID in SpliterGadget [Resolved]

Just starting out? Need help? Post your questions and find answers here.
User avatar
Kwai chang caine
Always Here
Always Here
Posts: 5353
Joined: Sun Nov 05, 2006 11:42 pm
Location: Lyon - France

Virtual ListIcon detect PB ID in SpliterGadget [Resolved]

Post by Kwai chang caine »

Hello at all,

I don't understand why, i can't detect the PbID of my virtuals ListIcons in the call back, when she is in a splitter gadget :|

Code: Select all

; http://www.purebasic.fr/english/viewtopic.php?p=513329#p513329

#ItemCount = 100000

#LVSICF_NOINVALIDATEALL = 1
#LVSICF_NOSCROLL = 2
#LVN_ODCACHEHINT = #LVN_FIRST - 13
#CDDS_ITEMPREPAINT = #CDDS_ITEM|#CDDS_PREPAINT
#CDDS_SUBITEMPREPAINT = #CDDS_SUBITEM|#CDDS_ITEMPREPAINT

Global Dim myItems.s(#ItemCount+1)
Global oldproc, header_h

Procedure winCB(hWnd, uMsg, wParam, lParam)

 result = #PB_ProcessPureBasicEvents
 Select uMsg
      
  Case #WM_NOTIFY
  
   *pnmh.NMHDR = lParam
   
   Select *pnmh\code
   
    Case #NM_CUSTOMDRAW
   
     *LVCDHeader.NMLVCUSTOMDRAW = lParam
   
     Select *LVCDHeader\nmcd\dwDrawStage    ;               
   
      Case #CDDS_ITEMPREPAINT
   
       result = #CDRF_NOTIFYSUBITEMDRAW        
   
      Case #CDDS_SUBITEMPREPAINT
      
       Debug GetDlgItem_(hwnd,wParam)
             
       If GetDlgItem_(hwnd,wParam) = GadgetID(0)
        CallDebugger
       EndIf
       
       Row = *LVCDHeader\nmcd\dwItemSpec
       Col = *LVCDHeader\iSubItem
        
       *LVCDHeader\clrText   = $2D36FD
       *LVCDHeader\clrTextBk = $BAEEE8
       result = #CDRF_DODEFAULT
       
     EndSelect
     
    Case #LVN_GETDISPINFO
    
     *pnmlvdi.NMLVDISPINFO = lParam
     
     If *pnmlvdi\item\mask & #LVIF_TEXT
      *pnmlvdi\item\pszText = @myItems(*pnmlvdi\item\iItem)
     EndIf
     
   EndSelect     
   
 EndSelect
 
 ProcedureReturn result
 
EndProcedure

OpenWindow(0, 0, 0, 300, 600, "ListIconGadgets", #PB_Window_SizeGadget|#PB_Window_SystemMenu | #PB_Window_MaximizeGadget| #PB_Window_ScreenCentered)
SetWindowCallback(@winCB())
ListIconGadget(0,0,0,0,0,"ID1",150,#LVS_OWNERDATA| #LVS_AUTOARRANGE|#PB_ListIcon_FullRowSelect| #PB_ListIcon_GridLines)
ListIconGadget(1,0,0,0,0,"ID2",150,#LVS_OWNERDATA| #LVS_AUTOARRANGE|#PB_ListIcon_FullRowSelect| #PB_ListIcon_GridLines)
SplitterGadget(2,10,10,620,240, 0,1)
ListIconGadget(3,0,260,300,260,"ID3",150,#LVS_OWNERDATA| #LVS_AUTOARRANGE|#PB_ListIcon_FullRowSelect| #PB_ListIcon_GridLines)
SplitterGadget(4,10,10,620,240, 2,3)

SendMessage_(GadgetID(0), #LVM_SETITEMCOUNT, #ItemCount,#LVSICF_NOINVALIDATEALL|#LVSICF_NOSCROLL)
SendMessage_(GadgetID(1), #LVM_SETITEMCOUNT, #ItemCount,#LVSICF_NOINVALIDATEALL|#LVSICF_NOSCROLL)
SendMessage_(GadgetID(3), #LVM_SETITEMCOUNT, #ItemCount,#LVSICF_NOINVALIDATEALL|#LVSICF_NOSCROLL)

For i=0 To #ItemCount
 myItems(i) = Str(i)
Next

Repeat
 Select WaitWindowEvent()
  Case #PB_Event_CloseWindow
   Quit = 1
 EndSelect
Until Quit = 1
Have a good day
Last edited by Kwai chang caine on Sat Feb 10, 2018 7:21 pm, edited 1 time in total.
ImageThe happiness is a road...
Not a destination
RASHAD
PureBasic Expert
PureBasic Expert
Posts: 4663
Joined: Sun Apr 12, 2009 6:27 am

Re: Virtual ListIcon detect his PB ID in SpliterGadget

Post by RASHAD »

Hi KCC

Code: Select all

; http://www.purebasic.fr/english/viewtopic.php?p=513329#p513329

#ItemCount = 100000

#LVSICF_NOINVALIDATEALL = 1
#LVSICF_NOSCROLL = 2
#LVN_ODCACHEHINT = #LVN_FIRST - 13
#CDDS_ITEMPREPAINT = #CDDS_ITEM|#CDDS_PREPAINT
#CDDS_SUBITEMPREPAINT = #CDDS_SUBITEM|#CDDS_ITEMPREPAINT

Global Dim myItems.s(#ItemCount+1)
Global oldproc, header_h

Procedure winCB(hWnd, uMsg, wParam, lParam)
 result = #PB_ProcessPureBasicEvents
 Select uMsg     
  Case #WM_NOTIFY
   *pnmh.NMHDR = lParam
   
   Select *pnmh\code   
    Case #NM_CUSTOMDRAW   
       *LVCDHeader.NMLVCUSTOMDRAW = lParam
                
      Select *LVCDHeader\nmcd\dwDrawStage
        Case #CDDS_ITEMPREPAINT   
         result = #CDRF_NOTIFYSUBITEMDRAW       
     
        Case #CDDS_SUBITEMPREPAINT       
          Row = *LVCDHeader\nmcd\dwItemSpec
          Col = *LVCDHeader\iSubItem
          *LVCDHeader\clrText   = $2D36FD 
          Select *LVCDHeader\nmcd\hdr\hwndFrom 
            Case GadgetID(0)
              *LVCDHeader\clrTextBk = $BAEEE8
            Case GadgetID(1)
              *LVCDHeader\clrTextBk = $ACFFB4
            Case GadgetID(3)
              *LVCDHeader\clrTextBk = $FEE3AC
          EndSelect 
          result = #CDRF_DODEFAULT       
      EndSelect
     
    Case #LVN_GETDISPINFO   
      *pnmlvdi.NMLVDISPINFO = lParam     
      If *pnmlvdi\item\mask & #LVIF_TEXT
      *pnmlvdi\item\pszText = @myItems(*pnmlvdi\item\iItem)
      EndIf
     
   EndSelect     
   
 EndSelect
 
 ProcedureReturn result
 
EndProcedure

OpenWindow(0, 0, 0, 640, 400, "ListIconGadgets", #PB_Window_SizeGadget|#PB_Window_SystemMenu | #PB_Window_MaximizeGadget| #PB_Window_ScreenCentered)
SetWindowCallback(@winCB())
ListIconGadget(0,0,0,0,0,"ID1",150,#LVS_OWNERDATA| #LVS_AUTOARRANGE|#PB_ListIcon_FullRowSelect| #PB_ListIcon_GridLines)
ListIconGadget(1,0,0,0,0,"ID2",150,#LVS_OWNERDATA| #LVS_AUTOARRANGE|#PB_ListIcon_FullRowSelect| #PB_ListIcon_GridLines)
SplitterGadget(2,10,10,620,240, 0,1)
ListIconGadget(3,0,260,300,260,"ID3",150,#LVS_OWNERDATA| #LVS_AUTOARRANGE|#PB_ListIcon_FullRowSelect| #PB_ListIcon_GridLines)
SplitterGadget(4,10,10,620,240, 2,3)

SendMessage_(GadgetID(0), #LVM_SETITEMCOUNT, #ItemCount,#LVSICF_NOINVALIDATEALL|#LVSICF_NOSCROLL)
SendMessage_(GadgetID(1), #LVM_SETITEMCOUNT, #ItemCount,#LVSICF_NOINVALIDATEALL|#LVSICF_NOSCROLL)
SendMessage_(GadgetID(3), #LVM_SETITEMCOUNT, #ItemCount,#LVSICF_NOINVALIDATEALL|#LVSICF_NOSCROLL)

For i=0 To #ItemCount
 myItems(i) = Str(i)
Next

Repeat
 Select WaitWindowEvent()
  Case #PB_Event_CloseWindow
   Quit = 1
 EndSelect
Until Quit = 1
Egypt my love
User avatar
Kwai chang caine
Always Here
Always Here
Posts: 5353
Joined: Sun Nov 05, 2006 11:42 pm
Location: Lyon - France

Re: Virtual ListIcon detect his PB ID in SpliterGadget

Post by Kwai chang caine »

Yeeeees !!! works great !!! 8)

One thousand of thanks great master RASHAD, the champion of the virtual listicon 8)
In this time, i use your tips of V_Listicon all the days, it's not always simple to works with her, but it's so good :mrgreen:
Have a very good night
Your french friend :wink:
ImageThe happiness is a road...
Not a destination
Post Reply