Programming Tips - How can I hide a checkbox in a TreeView ?

Date: 2010may17
OS: Windows
Language: C/C++	
Keywords: grey, gray, disable

Q.  How can I hide a checkbox in a TreeView ?

A.  Here's a function that hides it.  Until a user clicks on it.
You need to add more code to prevent it from re-appearing when the user
clicks on it.

BOOL SetCheckStateDisabled(HWND hwndTree, HTREEITEM hItem, const BOOL bChecked) { TVITEM tvItem; ZeroMemory(&tvItem, sizeof(tvItem)); tvItem.mask = TVIF_HANDLE | TVIF_STATE; tvItem.hItem = hItem; tvItem.stateMask = TVIS_STATEIMAGEMASK; // Image 3 in the tree-view check box image list is the // disabled unchecked box. Image 4 is the disabled checked box. tvItem.state = INDEXTOSTATEIMAGEMASK((bChecked ? 4 : 3)); return TreeView_SetItem(hwndTree, &tvItem); }
MSDN says:
Version 5.80 displays a check box even if no image is associated with the item.
They are talking about that version of Comctl32.dll. Which suggests this trick may not work. But I have tried this in version 5.82 (Vista) and it does work there.