Code: Select all
lvi.LV_ITEM\mask=#LVIF_STATE
lvi\stateMask=#LVIS_SELECTED
lvi\state=#LVIS_SELECTED
SendMessage_(GadgetID(0),#LVM_SETITEMSTATE,-1,lvi)
Code: Select all
lvi.LV_ITEM\mask=#LVIF_STATE
lvi\stateMask=#LVIS_SELECTED
lvi\state=#LVIS_SELECTED
SendMessage_(GadgetID(0),#LVM_SETITEMSTATE,-1,lvi)
Code: Select all
Procedure TreeDeselectAllItems(TreeId)
Protected CurItem.i, CurState.i, ItemCnt.i = CountGadgetItems(TreeId)
If ItemCnt <= 0: ProcedureReturn: EndIf
For CurItem = 0 To ItemCnt-1
CurState = GetGadgetItemState(TreeId, CurItem)
CurState = CurState ! #PB_Tree_Checked
SetGadgetItemState(TreeId, CurItem, CurState)
Next
EndProcedure
Procedure TreeSelectAllItems(TreeId)
Protected CurItem.i, CurState.i, ItemCnt.i = CountGadgetItems(TreeId)
If ItemCnt <= 0: ProcedureReturn: EndIf
For CurItem = 0 To ItemCnt-1
CurState = GetGadgetItemState(TreeId, CurItem)
CurState = CurState | #PB_Tree_Checked
SetGadgetItemState(TreeId, CurItem, CurState)
Next
EndProcedure
Maybe that's the key!? I didn't think there was such an "apply to all items" WM message, but maybe -1 is all thats needed?!?! hope so! but i just noticed it looks like thats what you were trying in your first post; Function: LVM_SetItemState
; Description:
; Changes the state of an item in a ListView control.
; Parameters:
; p_Item - Zero-based index of the item. If set to -1, the state change is applied to all items.
Code: Select all
[DllImport("user32.dll", EntryPoint = "SendMessage")]
internal static extern IntPtr SendMessage(IntPtr hWnd, UInt32 msg, IntPtr wParam, IntPtr lParam);
// Select All
SendMessage(listBox.Handle, 0x185, (IntPtr)1, (IntPtr)(-1));
// Unselect All
SendMessage(listBox.Handle, 0x185, (IntPtr)0, (IntPtr)(-1));
Code: Select all
#LVIS_CHECKED = $2000
#LVIS_UNCHECKED = $1000
If OpenWindow(0, 0, 0, 640, 400, "ListIconGadgets", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(0, 10, 10, 620,350, "Column 0", 100, #PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect| #PB_ListIcon_CheckBoxes )
ButtonGadget(1,10,370,100,20,"Set CheckBoxes")
For c = 1 To 6
AddGadgetColumn(0, c, "Column " + Str(c), 100)
Next
For r = 0 To 100
AddGadgetItem(0, r, " Item "+Str(r)+Chr(10)+"Item "+Str(r)+Chr(10)+"Item 3"+Chr(10)+"Item 4")
Next
EndIf
Repeat
Select WaitWindowEvent(1)
Case #PB_Event_CloseWindow
Quit = 1
Case #PB_Event_Gadget
Select EventGadget()
Case 1
Run ! 1
If Run = 1
lvi.LV_ITEM\mask=#LVIF_STATE
lvi\stateMask=#LVIS_STATEIMAGEMASK
lvi\state=#LVIS_CHECKED
SendMessage_(GadgetID(0),#LVM_SETITEMSTATE,-1,lvi)
Debug GetGadgetItemState(0,2)
Else
lvi.LV_ITEM\mask=#LVIF_STATE
lvi\stateMask=#LVIS_STATEIMAGEMASK
lvi\state=#LVIS_UNCHECKED
SendMessage_(GadgetID(0),#LVM_SETITEMSTATE,-1,lvi)
Debug GetGadgetItemState(0,2)
EndIf
EndSelect
EndSelect
Until Quit = 1