响应LVN_GETDISPINFO消息后我们可以通过结构体内容去更新列表控件,使更新CListCtrl内容变得非常简单了,但是在第一次使用这个的时候,拿到LV_DISPINFO消息却无从下手,现在做个笔记了。
我们看到了关于LV_DISPINFO宏:
LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
一步一步的追踪LV_DISPINFO如下:
#define LV_DISPINFO NMLVDISPINFO在追踪
#ifdef UNICODE
#define NMLVDISPINFO NMLVDISPINFOW
#else
#define NMLVDISPINFO NMLVDISPINFOA
#endif
对NMLVDISPINFOA进行追踪
typedef struct tagLVDISPINFO {
NMHDR hdr;//找到了这个
LVITEMA item;
} NMLVDISPINFOA, FAR *LPNMLVDISPINFOA;
//UNICODE和这个一样,只是tagLVITEMA总的A改为W而已
typedef struct tagLVITEMA
{
UINT mask;
int iItem;
int iSubItem;
UINT state;
UINT stateMask;
LPSTR pszText;
int cchTextMax;
int iImage;
LPARAM lParam;
#if (_WIN32_IE >= 0x0300)
int iIndent;
#endif
} LVITEMA, FAR* LPLVITEMA;
因此我们还是可以通过一定的结构转换后,就可以得到常用的项和列号,文本等信息了。