LRESULT CListCtrlTip::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if (WM_NOTIFY == message)
{
NMHEADER *pHDN = (LPNMHEADER)lParam;
switch(((NMHDR*)lParam)->code)
{
case HDN_DIVIDERDBLCLICKA:
ZeroMemory(&lvc,sizeof(lvc));
lvc.iSubItem = iColomn;
lvc.mask = LVCF_TEXT | LVCF_WIDTH;
lvc.cchTextMax = 256;
TCHAR szCol[256];
lvc.pszText = szCol;
GetColumn(iColomn,&lvc);
int nWidthColumn = GetStringWidth(lvc.pszText) + 20;
// 再设置列宽能宽至最宽的那一项
int nCnt = GetItemCount();
for (int i = 0; i < nCnt; i++)
{
if (GetStringWidth(GetItemText(i, iColomn)) > nWidthColumn)
{
nWidthColumn = GetStringWidth(GetItemText(i, iColomn));
}
}
SetRedraw(FALSE);
LRESULT ret = CListCtrl::WindowProc(message,wParam,lParam);
int nWidth = GetColumnWidth(iColomn);
SetColumnWidth(iColomn,max(nWidth,nWidthColumn));
SetRedraw(TRUE);
return 1;
}
}
return CListCtrl::WindowProc(message, wParam, lParam);
}
{
if (WM_NOTIFY == message)
{
NMHEADER *pHDN = (LPNMHEADER)lParam;
switch(((NMHDR*)lParam)->code)
{
case HDN_DIVIDERDBLCLICKA:
case HDN_DIVIDERDBLCLICKW:
// 先保证列宽不能小于列头文字宽
int iColomn = pHDN->iItem;
LVCOLUMN lvc;ZeroMemory(&lvc,sizeof(lvc));
lvc.iSubItem = iColomn;
lvc.mask = LVCF_TEXT | LVCF_WIDTH;
lvc.cchTextMax = 256;
TCHAR szCol[256];
lvc.pszText = szCol;
GetColumn(iColomn,&lvc);
int nWidthColumn = GetStringWidth(lvc.pszText) + 20;
// 再设置列宽能宽至最宽的那一项
int nCnt = GetItemCount();
for (int i = 0; i < nCnt; i++)
{
if (GetStringWidth(GetItemText(i, iColomn)) > nWidthColumn)
{
nWidthColumn = GetStringWidth(GetItemText(i, iColomn));
}
}
SetRedraw(FALSE);
LRESULT ret = CListCtrl::WindowProc(message,wParam,lParam);
int nWidth = GetColumnWidth(iColomn);
SetColumnWidth(iColomn,max(nWidth,nWidthColumn));
SetRedraw(TRUE);
return 1;
}
}
return CListCtrl::WindowProc(message, wParam, lParam);
}