ChangeLog Updated header documentation to the latest, and greatest. --- dlls/comctl32/listview.c.V14 Mon Oct 21 01:32:22 2002 +++ dlls/comctl32/listview.c Mon Oct 21 10:38:58 2002 @@ -22,29 +22,94 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * NOTES - * Listview control implementation. * + * This code was audited for completeness against the documented features + * of Comctl32.dll version 6.0 on Oct. 21, 2002, by Dimitrie O. Paun. + * + * Unless otherwise noted, we belive this code to be complete, as per + * the specification mentioned above. + * If you discover missing features, or bugs, please note them below. + * * TODO: * -- Hot item handling. * -- Expand large item in ICON mode when the cursor is flying over the icon or text. * -- Support CustonDraw options for _WIN32_IE >= 0x560 (see NMLVCUSTOMDRAW docs) - * + * -- work areas + * -- tilemode + * -- groups + * -- FIXMEs (search for them) + * + * States + * -- LVIS_ACTIVATING (not currently supported my comctl32.dll version 6.0) + * -- LVIS_CUT + * -- LVIS_DROPHILITED + * -- LVIS_OVERLAYMASK + * + * Styles + * -- LVS_NOLABELWRAP + * -- LVS_NOSCROLL (see Q137520) + * -- LVS_SORTASCENDING, LVS_SORTDESCENDING + * + * Extended Styles + * -- LVS_EX_BORDERSELECT + * -- LVS_EX_CHECKBOXES + * -- LVS_EX_FLATSB + * -- LVS_EX_GRIDLINES + * -- LVS_EX_HEADERDRAGDROP + * -- LVS_EX_INFOTIP + * -- LVS_EX_LABELTIP + * -- LVS_EX_MULTIWORKAREAS + * -- LVS_EX_ONECLICKACTIVATE + * -- LVS_EX_REGIONAL + * -- LVS_EX_SIMPLESELECT + * -- LVS_EX_SUBITEMIMAGES + * -- LVS_EX_TRACKSELECT + * -- LVS_EX_TWOCLICKACTIVATE + * -- LVS_EX_UNDERLINECOLD + * -- LVS_EX_UNDERLINEHOT + * * Notifications: - * LISTVIEW_Notify : most notifications from editbox - * - * Data structure: - * LISTVIEW_SetItemCount : not completed for non OWNERDATA - * - * Advanced functionality: - * LISTVIEW_GetNumberOfWorkAreas : not implemented - * LISTVIEW_GetISearchString : not implemented - * LISTVIEW_GetBkImage : not implemented - * LISTVIEW_SetBkImage : not implemented - * LISTVIEW_GetColumnOrderArray : simple hack only - * LISTVIEW_SetColumnOrderArray : simple hack only - * LISTVIEW_Arrange : empty stub - * LISTVIEW_ApproximateViewRect : incomplete - * LISTVIEW_Update : not completed + * -- LVN_BEGINDRAG, LVN_BEGINRDRAG + * -- LVN_BEGINSCROLL, LVN_ENDSCROLL + * -- LVN_GETINFOTIP + * -- LVN_HOTTRACK + * -- LVN_MARQUEEBEGIN + * -- LVN_ODFINDITEM + * -- LVN_ODSTATECHANGED + * -- LVN_SETDISPINFO + * -- NM_HOVER + * + * Messages: + * -- LVM_CANCELEDITLABEL + * -- LVM_CREATEDRAGIMAGE + * -- LVM_ENABLEGROUPVIEW + * -- LVM_GETBKIMAGE, LVM_SETBKIMAGE + * -- LVM_GETGROUPINFO, LVM_SETGROUPINFO + * -- LVM_GETGROUPMETRICS, LVM_SETGROUPMETRICS + * -- LVM_GETINSERTMARK, LVM_SETINSERTMARK + * -- LVM_GETINSERTMARKCOLOR, LVM_SETINSERTMARKCOLOR + * -- LVM_GETINSERTMARKRECT + * -- LVM_GETNUMBEROFWORKAREAS + * -- LVM_GETOUTLINECOLOR, LVM_SETOUTLINECOLOR + * -- LVM_GETSELECTEDCOLUMN, LVM_SETSELECTEDCOLUMN + * -- LVM_GETISEARCHSTRINGW, LVM_GETISEARCHSTRINGA + * -- LVM_GETTILEINFO, LVM_SETTILEINFO + * -- LVM_GETTILEVIEWINFO, LVM_SETTILEVIEWINFO + * -- LVM_GETTOOLTIPS, LVM_SETTOOLTIPS + * -- LVM_GETUNICODEFORMAT, LVM_SETUNICODEFORMAT + * -- LVM_GETVIEW, LVM_SETVIEW + * -- LVM_GETWORKAREAS, LVM_SETWORKAREAS + * -- LVM_HASGROUP, LVM_INSERTGROUP, LVM_REMOVEGROUP, LVM_REMOVEALLGROUPS + * -- LVM_INSERTGROUPSORTED + * -- LVM_INSERTMARKHITTEST + * -- LVM_ISGROUPVIEWENABLED + * -- LVM_MAPIDTOINDEX, LVM_MAPINDEXTOID + * -- LVM_MOVEGROUP + * -- LVM_MOVEITEMTOGROUP + * -- LVM_SETINFOTIP + * -- LVM_SETTILEWIDTH + * -- LVM_SORTGROUPS + * -- LVM_SORTITEMSEX * * Known differences in message stream from native control (not known if * these differences cause problems): @@ -54,7 +119,6 @@ * processing for "USEDOUBLECLICKTIME". */ - #include "config.h" #include "wine/port.h" @@ -8129,7 +8193,7 @@ case LVM_ARRANGE: return LISTVIEW_Arrange(infoPtr, (INT)wParam); -/* case LVN_CANCELEDITLABEL */ +/* case LVM_CANCELEDITLABEL: */ /* case LVM_CREATEDRAGIMAGE: */ @@ -8148,7 +8212,7 @@ case LVM_EDITLABELA: return (LRESULT)LISTVIEW_EditLabelT(infoPtr, (INT)wParam, FALSE); - /* case LVN_ENABLEGROUPVIEW: */ + /* case LVM_ENABLEGROUPVIEW: */ case LVM_ENSUREVISIBLE: return LISTVIEW_EnsureVisible(infoPtr, (INT)wParam, (BOOL)lParam); @@ -8188,6 +8252,10 @@ case LVM_GETEXTENDEDLISTVIEWSTYLE: return infoPtr->dwLvExStyle; + /* case LVM_GETGROUPINFO: */ + + /* case LVM_GETGROUPMETRICS: */ + case LVM_GETHEADER: return (LRESULT)infoPtr->hwndHeader; @@ -8203,11 +8271,11 @@ case LVM_GETIMAGELIST: return (LRESULT)LISTVIEW_GetImageList(infoPtr, (INT)wParam); - /* case LVN_GETINSERTMARK: */ + /* case LVM_GETINSERTMARK: */ - /* case LVN_GETINSERTMARKCOLOR: */ + /* case LVM_GETINSERTMARKCOLOR: */ - /* case LVN_GETINSERTMARKRECT: */ + /* case LVM_GETINSERTMARKRECT: */ case LVM_GETISEARCHSTRINGA: case LVM_GETISEARCHSTRINGW: @@ -8253,7 +8321,7 @@ LISTVIEW_GetOrigin(infoPtr, (LPPOINT)lParam); return TRUE; - /* case LVN_GETOUTLINECOLOR: */ + /* case LVM_GETOUTLINECOLOR: */ /* case LVM_GETSELECTEDCOLUMN: */ @@ -8278,9 +8346,9 @@ case LVM_GETTEXTCOLOR: return infoPtr->clrText; - /* case LVN_GETTILEINFO: */ + /* case LVM_GETTILEINFO: */ - /* case LVN_GETTILEVIEWINFO: */ + /* case LVM_GETTILEVIEWINFO: */ case LVM_GETTOOLTIPS: FIXME("LVM_GETTOOLTIPS: unimplemented\n"); @@ -8293,6 +8361,8 @@ FIXME("LVM_GETUNICODEFORMAT: unimplemented\n"); return FALSE;*/ + /* case LVM_GETVIEW: */ + case LVM_GETVIEWRECT: return LISTVIEW_GetViewRect(infoPtr, (LPRECT)lParam); @@ -8300,7 +8370,7 @@ FIXME("LVM_GETWORKAREAS: unimplemented\n"); return FALSE; - /* case LVN_HASGROUP: */ + /* case LVM_HASGROUP: */ case LVM_HITTEST: return LISTVIEW_HitTest(infoPtr, (LPLVHITTESTINFO)lParam, FALSE, FALSE); @@ -8311,9 +8381,9 @@ case LVM_INSERTCOLUMNW: return LISTVIEW_InsertColumnT(infoPtr, (INT)wParam, (LPLVCOLUMNW)lParam, TRUE); - /* case LVN_INSERTGROUP: */ + /* case LVM_INSERTGROUP: */ - /* case LVN_INSERTGROUPSORTED: */ + /* case LVM_INSERTGROUPSORTED: */ case LVM_INSERTITEMA: return LISTVIEW_InsertItemT(infoPtr, (LPLVITEMW)lParam, FALSE); @@ -8321,24 +8391,24 @@ case LVM_INSERTITEMW: return LISTVIEW_InsertItemT(infoPtr, (LPLVITEMW)lParam, TRUE); - /* case LVN_INSERTMARKHITTEST: */ + /* case LVM_INSERTMARKHITTEST: */ - /* case LVN_ISGROUPVIEWENABLED: */ + /* case LVM_ISGROUPVIEWENABLED: */ - /* case LVN_MAPIDTOINDEX: */ + /* case LVM_MAPIDTOINDEX: */ - /* case LVN_INEDXTOID: */ + /* case LVM_MAPINDEXTOID: */ - /* case LVN_MOVEGROUP: */ + /* case LVM_MOVEGROUP: */ - /* case LVN_MOVEITEMTOGROUP: */ + /* case LVM_MOVEITEMTOGROUP: */ case LVM_REDRAWITEMS: return LISTVIEW_RedrawItems(infoPtr, (INT)wParam, (INT)lParam); - /* case LVN_REMOVEALLGROUPS: */ + /* case LVM_REMOVEALLGROUPS: */ - /* case LVN_REMOVEGROUP: */ + /* case LVM_REMOVEGROUP: */ case LVM_SCROLL: return LISTVIEW_Scroll(infoPtr, (INT)wParam, (INT)lParam); @@ -8367,9 +8437,9 @@ case LVM_SETEXTENDEDLISTVIEWSTYLE: return LISTVIEW_SetExtendedListViewStyle(infoPtr, (DWORD)wParam, (DWORD)lParam); - /* case LVN_SETGROUPINFO: */ + /* case LVM_SETGROUPINFO: */ - /* case LVN_SETGROUPMETRICS: */ + /* case LVM_SETGROUPMETRICS: */ case LVM_SETHOTCURSOR: return (LRESULT)LISTVIEW_SetHotCursor(infoPtr, (HCURSOR)lParam); @@ -8386,11 +8456,11 @@ case LVM_SETIMAGELIST: return (LRESULT)LISTVIEW_SetImageList(infoPtr, (INT)wParam, (HIMAGELIST)lParam); - /* case LVN_SETINFOTIP: */ + /* case LVM_SETINFOTIP: */ - /* case LVN_SETINSERTMARK: */ + /* case LVM_SETINSERTMARK: */ - /* case LVN_SETINSERTMARKCOLOR: */ + /* case LVM_SETINSERTMARKCOLOR: */ case LVM_SETITEMA: return LISTVIEW_SetItemT(infoPtr, (LPLVITEMW)lParam, FALSE); @@ -8420,9 +8490,9 @@ case LVM_SETITEMTEXTW: return LISTVIEW_SetItemTextT(infoPtr, (INT)wParam, (LPLVITEMW)lParam, TRUE); - /* case LVN_SETOUTLINECOLOR: */ + /* case LVM_SETOUTLINECOLOR: */ - /* case LVN_SETSELECTEDCOLUMN: */ + /* case LVM_SETSELECTEDCOLUMN: */ case LVM_SETSELECTIONMARK: return LISTVIEW_SetSelectionMark(infoPtr, (INT)lParam); @@ -8433,25 +8503,27 @@ case LVM_SETTEXTCOLOR: return LISTVIEW_SetTextColor(infoPtr, (COLORREF)lParam); - /* case LVN_SETTILEINFO: */ + /* case LVM_SETTILEINFO: */ - /* case LVN_SETTILEVIEWINFO: */ + /* case LVM_SETTILEVIEWINFO: */ - /* case LVN_SETTILEWIDTH: */ + /* case LVM_SETTILEWIDTH: */ /* case LVM_SETTOOLTIPS: */ /* case LVM_SETUNICODEFORMAT: */ - /* case LVN_SETVIEW: */ + /* case LVM_SETVIEW: */ /* case LVM_SETWORKAREAS: */ - /* case LVN_SORTGROUPS: */ + /* case LVM_SORTGROUPS: */ case LVM_SORTITEMS: return LISTVIEW_SortItems(infoPtr, (PFNLVCOMPARE)lParam, (LPARAM)wParam); + /* LVM_SORTITEMSEX: */ + case LVM_SUBITEMHITTEST: return LISTVIEW_HitTest(infoPtr, (LPLVHITTESTINFO)lParam, TRUE, FALSE);