I looked up some information on the LVM_SETITEMSTATE message (I've
reproduced it below). The only problem is that it wants a pointer, and when
I've tried to pass pointers to SendMessage before, it doesn't work. I pack
the structure, then pack a pointer to it (I've tried using both 'p' and 'P'
in my pack call), but it doesn't like the resulting pointer. Anyway, maybe
someone else can get it to work (I haven't actually tried it with this
message).
From the MSDN web site (msdn.microsoft.com):
To send this message, call the SendMessage function as follows.
lResult = SendMessage( // returns LRESULT in lResult
(HWND) hWndControl, // handle to destination control
(UINT) LVM_SETITEMSTATE, // message ID
(WPARAM) wParam, // = (WPARAM) (int) i;
(LPARAM) lParam // = (LPARAM) (LPLVITEM) pitem;
);
Parameters
i
Index of the list-view item. If this parameter is -1, then the state change
is applied to all items.
pitem
Pointer to an LVITEM structure. The stateMask member specifies which state
bits to change, and the state member contains the new values for those bits.
The other members are ignored.
Syntax
typedef struct _LVITEM {
UINT mask;
int iItem;
int iSubItem;
UINT state;
UINT stateMask;
LPTSTR pszText;
int cchTextMax;
int iImage;
LPARAM lParam;
#if (_WIN32_IE >= 0x0300)
int iIndent;
#endif
#if (_WIN32_IE >= 0x560)
int iGroupId;
UINT cColumns; // tile view columns
PUINT puColumns;
#endif
} LVITEM, *LPLVITEM;
Members
mask
Set of flags that specify which members of this structure contain data
to be set or which members are being requested. This member can have one or
more of the following flags set:
LVIF_COLUMNS
The cColumns member is valid or must be filled in.
LVIF_DI_SETITEM
The operating system should store the requested list item information
and not ask for it again. This flag is used only with the LVN_GETDISPINFO
notification message.
LVIF_GROUPID
The iGroupId member is valid or must be filled in.
LVIF_IMAGE
The iImage member is valid or must be filled in.
LVIF_INDENT
The iIndent member is valid or must be filled in.
LVIF_NORECOMPUTE
The control will not generate LVN_GETDISPINFO to retrieve text
information if it receives an LVM_GETITEM message. Instead, the pszText
member will contain LPSTR_TEXTCALLBACK.
LVIF_PARAM
The lParam member is valid or must be filled in.
LVIF_STATE
The state member is valid or must be filled in.
LVIF_TEXT
The pszText member is valid or must be filled in.
iItem
Zero-based index of the item to which this structure refers. iSubItem
One-based index of the subitem to which this structure refers, or zero if
this structure refers to an item rather than a subitem.
state
Indicates the item's state, state image, and overlay image. The
stateMask member indicates the valid bits of this member.
Bits 0 through 7 of this member contain the item state flags. This can
be one or more of the item state values.
Bits 8 through 11 of this member specify the one-based overlay image
index. Both the full-sized icon image list and the small icon image list can
have overlay images. The overlay image is superimposed over the item's icon
image. If these bits are zero, the item has no overlay image. To isolate
these bits, use the LVIS_OVERLAYMASK mask. To set the overlay image index in
this member, you should use the INDEXTOOVERLAYMASK macro. The image list's
overlay images are set with the ImageList_SetOverlayImage function.
Bits 12 through 15 of this member specify the state image index. The
state image is displayed next to an item's icon to indicate an
application-defined state. If these bits are zero, the item has no state
image. To isolate these bits, use the LVIS_STATEIMAGEMASK mask. To set the
state image index, use the INDEXTOSTATEIMAGEMASK macro. The state image
index specifies the index of the image in the state image list that should
be drawn. The state image list is specified with the LVM_SETIMAGELIST
message.
stateMask
Value specifying which bits of the state member will be retrieved or
modified. For example, setting this member to LVIS_SELECTED will cause only
the item's selection state to be retrieved.
This member allows you to modify one or more item states without having
to retrieve all of the item states first. For example, setting this member
to LVIS_SELECTED and state to zero will cause the item's selection state to
be cleared, but none of the other states will be affected.
To retrieve or modify all of the states, set this member to (UINT)-1.
You can use the macro ListView_SetItemState both to set and to clear
bits.
pszText
If the structure specifies item attributes, pszText is a pointer to a
null-terminated string containing the item text. If the structure receives
item attributes, pszText is a pointer to a buffer that receives the item
text.
If the value of pszText is LPSTR_TEXTCALLBACK, the item is a callback
item. If the callback text changes, you must explicitly set pszText to
LPSTR_TEXTCALLBACK and notify the list-view control of the change by sending
an LVM_SETITEM OR LVM_SETITEMTEXT message.
Do not set pszText to LPSTR_TEXTCALLBACK if the list-view control has
the LVS_SORTASCENDING or LVS_SORTDESCENDING style.
cchTextMax
Number of characters in the buffer pointed to by pszText . This member is
only used when the structure receives item attributes. It is ignored when
the structure specifies item attributes.
iImage
Index of the item's icon in the control's image list. This applies to both
the large and small image list. If this member is the I_IMAGECALLBACK value,
the parent window is responsible for storing the index. In this case, the
list-view control sends the parent an LVN_GETDISPINFO notification message
to retrieve the index when it needs to display the image.
lParam
Value specific to the item. If you use the LVM_SORTITEMS message, the
list-view control passes this value to the application-defined comparison
function. You can also use the LVM_FINDITEM message to search a list-view
control for an item with a specified lParam value. iIndent
Version 4.70 . Number of image widths to indent the item. A single
indentation equals the width of an item image. Therefore, the value 1
indents the item by the width of one image, the value 2 indents by two
images, and so on. Note that this field is supported only for items.
Attempting to set subitem indentation will cause the calling function to
fail.
iGroupId
Version 6.0 Identifier of the tile view group that receives the item.
cColumns
Version 6.0 Number of tile view columns to display for this item. puColumns;
Version 6.0 Pointer to the array of column indices; length of cColumns.
"We don't stop playing because we grow old;
we grow old because we stop playing."
- George Bernard Shaw
"Our greatest glory is not in never falling,
but in rising every time we fall."
- Confucius
"Imagination is more important than knowledge. Knowledge is limited.
Imagination encircles the world." Albert Einstein
"We don't stop playing because we grow old;
we grow old because we stop playing."
- George Bernard Shaw
"Our greatest glory is not in never falling,
but in rising every time we fall."
- Confucius
"Imagination is more important than knowledge. Knowledge is limited.
Imagination encircles the world." Albert Einstein
_________________________________________________________________
Send and receive Hotmail on your mobile device: http://mobile.msn.com