for example:
|-DSP1
| |-error1
| |-error2
|
|-DSP2
|-error1
|-error2
I want to be able to have checkmarks to select DSPs only. However, if I
enable checkboxes, all items get a checkbox.
is there a way to just have the DSP items to have checkboxes?
Nick
Joseph M. Newcomer [MVP]
email: newc...@flounder.com
Web: http://www.flounder.com
MVP Tips: http://www.flounder.com/mvp_tips.htm
Yes. Enable the checkbox option and then manage all the setting of
checkboxes directly (do not use SetCheck). Checkmarks are managed using the
state attribute. So setting that to 0 will turn off the checkbox. (If I
remember, 1 == unchecked and 2 == checked - I'd have to look at the code to
verify)
Dave Connet
"David Connet" <st...@agilityrecordbook.com> wrote in message
news:IuZlk.17431$mh5....@nlpi067.nbdc.sbc.com...
it looks like there are only 7 states, none that deal with checkbox state:
TVIS_BOLD
TVIS_CUT
TVIS_DROPHILITED
TVIS_EXPANDED
TVIS_EXPANDEDONCE
TVIS_EXPANDPARTIAL
TVIS_SELECTED
To set the checkbox state:
TVITEM tvi = {0};
tvi.mask = TVIF_HANDLE | TVIF_STATE;
tvi.hItem = hParentItem;
tvi.stateMask = TVIS_STATEIMAGEMASK;
tvi.state = INDEXTOSTATEIMAGEMASK(index);
m_wndTree.SetItem(&tvi);
where and index of 0 means not to show a check box, 1 means unchecked, 2
means checked.
To get the check box state:
TVITEM tvi = {0};
// Prepare to receive the desired information.
tvi.mask = TVIF_HANDLE | TVIF_STATE;
tvi.hItem = hItem;
tvi.stateMask = TVIS_STATEIMAGEMASK;
// Request the information.
m_wndTree.GetItem(&tvi);
// Return zero if it's not checked, or nonzero otherwise.
return ((BOOL)(tvi.state >> 12) -1);
BTW you have to construct the TreeCtrl with the TVS_CHECKBOXES style.
Hope that helps, Cheers Volker
--
Volker Enderlein
Tel: +49 (0)371 53119651 Institut für Mechatronik
Fax: +49 (0)371 53119699 Reichenhainer Strasse 88
email: vol...@ifm.tu-chemnitz.de D-09126 Chemnitz
How do I know when a box has been checked?
I tried using TVN_ITEMCHANGED, but that handler doesn't get called when I
check the checkbox.
I suppose I could check the states of all DSP checkboxes after a NM_CLICK
message, but thats pretty troublesome and won't handle the case if the user
uses a keyboard to select the checkbox
Nick
"Volker Enderlein" <vol...@ifm.tu-chemnitz.de> wrote in message
news:eeWEUB59...@TK2MSFTNGP02.phx.gbl...
Victor
"Nick Schultz" <nick.s...@flir.com> wrote in message
news:%23UWIg39...@TK2MSFTNGP04.phx.gbl...
Hi Nick,
a word of warning after rereading the doc. If you create your TreeCtrl
with the TVS_CHECKBOXES style you may facing a wrong appearance the
first time you call your program.
The docs clearly say not to use this style when creating the TreeCtrl
but to add it later with a SetWindowLong call.
// Create tree windows.
const DWORD dwViewStyle = WS_CHILD | WS_VISIBLE | TVS_HASLINES |
TVS_LINESATROOT | TVS_HASBUTTONS;
if (!m_wndTree.Create (dwViewStyle, rectDummy, this, IDC_TREECTRL))
{
TRACE0("Failed to create tree ctrl\n");
return -1; // fail to create
}
SetWindowLong(m_wndTree, GWL_STYLE, dwViewStyle | TVS_CHECKBOXES);
if (!m_wndTree.Create (dwViewStyle, rectDummy, this, IDC_TREECTRL))
{
TRACE0("Failed to create tree ctrl\n");
return -1; // fail to create
}
m_wndTree.ModifyStyle(0, TVS_CHECKBOXES);
Victor