一般带表头的列表,只要双击表头 item 间的间隙,那么表头会把 Column 的长度展开至最大。请问:当我要双击表头 item 的间隙后,Column 展开至我所需要的长度,需要怎样处理?我用Spy++ 捕获了(双击表头 item 间的间隙时)一些消息:(如下),但具体不知道如何处理。
HDM_GETITEMCOUNT
HDM_GETITEMRECT
HDM_LAYOUT
HDM_ORDERTOINDEX
HDM_GETITEMCOUNT
HDM_GETITEMRECT
HDM_LAYOUT
HDM_ORDERTOINDEX
if (HDN_DIVIDERDBLCLICK == lpNmhdr->code && GetHeader() == lpNmhdr->hwndFrom)
{
LPNMHEADER phdn = (HD_NOTIFY FAR* ) lParam;
int iItem = phdn->iItem;
LVCOLUMN lvcol;
lvcol.mask = LVCF_WIDTH;
GetColumn(iItem, &lvcol);
int iColumnWidth = GetMaxTextWidthInColumn(iItem, AtlGetDefaultGuiFont());//获得该 Column 下内容最长的文字长度
lvcol.mask = LVCF_WIDTH;
lvcol.cx = iColumnWidth + 28;
SetColumn(iItem, &lvcol);
SetMsgHandled(TRUE);
return 1;
}
最后感谢回帖的朋友~