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