Updated header documentation to the latest, and greatest.

This commit is contained in:
Dimitrie O. Paun 2002-10-21 19:44:51 +00:00 committed by Alexandre Julliard
parent 06701fb09e
commit 62f4c61d22
1 changed files with 119 additions and 47 deletions

View File

@ -22,29 +22,94 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* *
* NOTES * 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: * TODO:
* -- Hot item handling. * -- Hot item handling.
* -- Expand large item in ICON mode when the cursor is flying over the icon or text. * -- 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) * -- 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: * Notifications:
* LISTVIEW_Notify : most notifications from editbox * -- LVN_BEGINDRAG, LVN_BEGINRDRAG
* -- LVN_BEGINSCROLL, LVN_ENDSCROLL
* -- LVN_GETINFOTIP
* -- LVN_HOTTRACK
* -- LVN_MARQUEEBEGIN
* -- LVN_ODFINDITEM
* -- LVN_ODSTATECHANGED
* -- LVN_SETDISPINFO
* -- NM_HOVER
* *
* Data structure: * Messages:
* LISTVIEW_SetItemCount : not completed for non OWNERDATA * -- LVM_CANCELEDITLABEL
* * -- LVM_CREATEDRAGIMAGE
* Advanced functionality: * -- LVM_ENABLEGROUPVIEW
* LISTVIEW_GetNumberOfWorkAreas : not implemented * -- LVM_GETBKIMAGE, LVM_SETBKIMAGE
* LISTVIEW_GetISearchString : not implemented * -- LVM_GETGROUPINFO, LVM_SETGROUPINFO
* LISTVIEW_GetBkImage : not implemented * -- LVM_GETGROUPMETRICS, LVM_SETGROUPMETRICS
* LISTVIEW_SetBkImage : not implemented * -- LVM_GETINSERTMARK, LVM_SETINSERTMARK
* LISTVIEW_GetColumnOrderArray : simple hack only * -- LVM_GETINSERTMARKCOLOR, LVM_SETINSERTMARKCOLOR
* LISTVIEW_SetColumnOrderArray : simple hack only * -- LVM_GETINSERTMARKRECT
* LISTVIEW_Arrange : empty stub * -- LVM_GETNUMBEROFWORKAREAS
* LISTVIEW_ApproximateViewRect : incomplete * -- LVM_GETOUTLINECOLOR, LVM_SETOUTLINECOLOR
* LISTVIEW_Update : not completed * -- 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 * Known differences in message stream from native control (not known if
* these differences cause problems): * these differences cause problems):
@ -54,7 +119,6 @@
* processing for "USEDOUBLECLICKTIME". * processing for "USEDOUBLECLICKTIME".
*/ */
#include "config.h" #include "config.h"
#include "wine/port.h" #include "wine/port.h"
@ -8129,7 +8193,7 @@ LISTVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
case LVM_ARRANGE: case LVM_ARRANGE:
return LISTVIEW_Arrange(infoPtr, (INT)wParam); return LISTVIEW_Arrange(infoPtr, (INT)wParam);
/* case LVN_CANCELEDITLABEL */ /* case LVM_CANCELEDITLABEL: */
/* case LVM_CREATEDRAGIMAGE: */ /* case LVM_CREATEDRAGIMAGE: */
@ -8148,7 +8212,7 @@ LISTVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
case LVM_EDITLABELA: case LVM_EDITLABELA:
return (LRESULT)LISTVIEW_EditLabelT(infoPtr, (INT)wParam, FALSE); return (LRESULT)LISTVIEW_EditLabelT(infoPtr, (INT)wParam, FALSE);
/* case LVN_ENABLEGROUPVIEW: */ /* case LVM_ENABLEGROUPVIEW: */
case LVM_ENSUREVISIBLE: case LVM_ENSUREVISIBLE:
return LISTVIEW_EnsureVisible(infoPtr, (INT)wParam, (BOOL)lParam); return LISTVIEW_EnsureVisible(infoPtr, (INT)wParam, (BOOL)lParam);
@ -8188,6 +8252,10 @@ LISTVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
case LVM_GETEXTENDEDLISTVIEWSTYLE: case LVM_GETEXTENDEDLISTVIEWSTYLE:
return infoPtr->dwLvExStyle; return infoPtr->dwLvExStyle;
/* case LVM_GETGROUPINFO: */
/* case LVM_GETGROUPMETRICS: */
case LVM_GETHEADER: case LVM_GETHEADER:
return (LRESULT)infoPtr->hwndHeader; return (LRESULT)infoPtr->hwndHeader;
@ -8203,11 +8271,11 @@ LISTVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
case LVM_GETIMAGELIST: case LVM_GETIMAGELIST:
return (LRESULT)LISTVIEW_GetImageList(infoPtr, (INT)wParam); 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_GETISEARCHSTRINGA:
case LVM_GETISEARCHSTRINGW: case LVM_GETISEARCHSTRINGW:
@ -8253,7 +8321,7 @@ LISTVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
LISTVIEW_GetOrigin(infoPtr, (LPPOINT)lParam); LISTVIEW_GetOrigin(infoPtr, (LPPOINT)lParam);
return TRUE; return TRUE;
/* case LVN_GETOUTLINECOLOR: */ /* case LVM_GETOUTLINECOLOR: */
/* case LVM_GETSELECTEDCOLUMN: */ /* case LVM_GETSELECTEDCOLUMN: */
@ -8278,9 +8346,9 @@ LISTVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
case LVM_GETTEXTCOLOR: case LVM_GETTEXTCOLOR:
return infoPtr->clrText; return infoPtr->clrText;
/* case LVN_GETTILEINFO: */ /* case LVM_GETTILEINFO: */
/* case LVN_GETTILEVIEWINFO: */ /* case LVM_GETTILEVIEWINFO: */
case LVM_GETTOOLTIPS: case LVM_GETTOOLTIPS:
FIXME("LVM_GETTOOLTIPS: unimplemented\n"); FIXME("LVM_GETTOOLTIPS: unimplemented\n");
@ -8293,6 +8361,8 @@ LISTVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
FIXME("LVM_GETUNICODEFORMAT: unimplemented\n"); FIXME("LVM_GETUNICODEFORMAT: unimplemented\n");
return FALSE;*/ return FALSE;*/
/* case LVM_GETVIEW: */
case LVM_GETVIEWRECT: case LVM_GETVIEWRECT:
return LISTVIEW_GetViewRect(infoPtr, (LPRECT)lParam); return LISTVIEW_GetViewRect(infoPtr, (LPRECT)lParam);
@ -8300,7 +8370,7 @@ LISTVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
FIXME("LVM_GETWORKAREAS: unimplemented\n"); FIXME("LVM_GETWORKAREAS: unimplemented\n");
return FALSE; return FALSE;
/* case LVN_HASGROUP: */ /* case LVM_HASGROUP: */
case LVM_HITTEST: case LVM_HITTEST:
return LISTVIEW_HitTest(infoPtr, (LPLVHITTESTINFO)lParam, FALSE, FALSE); return LISTVIEW_HitTest(infoPtr, (LPLVHITTESTINFO)lParam, FALSE, FALSE);
@ -8311,9 +8381,9 @@ LISTVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
case LVM_INSERTCOLUMNW: case LVM_INSERTCOLUMNW:
return LISTVIEW_InsertColumnT(infoPtr, (INT)wParam, (LPLVCOLUMNW)lParam, TRUE); return LISTVIEW_InsertColumnT(infoPtr, (INT)wParam, (LPLVCOLUMNW)lParam, TRUE);
/* case LVN_INSERTGROUP: */ /* case LVM_INSERTGROUP: */
/* case LVN_INSERTGROUPSORTED: */ /* case LVM_INSERTGROUPSORTED: */
case LVM_INSERTITEMA: case LVM_INSERTITEMA:
return LISTVIEW_InsertItemT(infoPtr, (LPLVITEMW)lParam, FALSE); return LISTVIEW_InsertItemT(infoPtr, (LPLVITEMW)lParam, FALSE);
@ -8321,24 +8391,24 @@ LISTVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
case LVM_INSERTITEMW: case LVM_INSERTITEMW:
return LISTVIEW_InsertItemT(infoPtr, (LPLVITEMW)lParam, TRUE); 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: case LVM_REDRAWITEMS:
return LISTVIEW_RedrawItems(infoPtr, (INT)wParam, (INT)lParam); return LISTVIEW_RedrawItems(infoPtr, (INT)wParam, (INT)lParam);
/* case LVN_REMOVEALLGROUPS: */ /* case LVM_REMOVEALLGROUPS: */
/* case LVN_REMOVEGROUP: */ /* case LVM_REMOVEGROUP: */
case LVM_SCROLL: case LVM_SCROLL:
return LISTVIEW_Scroll(infoPtr, (INT)wParam, (INT)lParam); return LISTVIEW_Scroll(infoPtr, (INT)wParam, (INT)lParam);
@ -8367,9 +8437,9 @@ LISTVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
case LVM_SETEXTENDEDLISTVIEWSTYLE: case LVM_SETEXTENDEDLISTVIEWSTYLE:
return LISTVIEW_SetExtendedListViewStyle(infoPtr, (DWORD)wParam, (DWORD)lParam); return LISTVIEW_SetExtendedListViewStyle(infoPtr, (DWORD)wParam, (DWORD)lParam);
/* case LVN_SETGROUPINFO: */ /* case LVM_SETGROUPINFO: */
/* case LVN_SETGROUPMETRICS: */ /* case LVM_SETGROUPMETRICS: */
case LVM_SETHOTCURSOR: case LVM_SETHOTCURSOR:
return (LRESULT)LISTVIEW_SetHotCursor(infoPtr, (HCURSOR)lParam); return (LRESULT)LISTVIEW_SetHotCursor(infoPtr, (HCURSOR)lParam);
@ -8386,11 +8456,11 @@ LISTVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
case LVM_SETIMAGELIST: case LVM_SETIMAGELIST:
return (LRESULT)LISTVIEW_SetImageList(infoPtr, (INT)wParam, (HIMAGELIST)lParam); 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: case LVM_SETITEMA:
return LISTVIEW_SetItemT(infoPtr, (LPLVITEMW)lParam, FALSE); return LISTVIEW_SetItemT(infoPtr, (LPLVITEMW)lParam, FALSE);
@ -8420,9 +8490,9 @@ LISTVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
case LVM_SETITEMTEXTW: case LVM_SETITEMTEXTW:
return LISTVIEW_SetItemTextT(infoPtr, (INT)wParam, (LPLVITEMW)lParam, TRUE); return LISTVIEW_SetItemTextT(infoPtr, (INT)wParam, (LPLVITEMW)lParam, TRUE);
/* case LVN_SETOUTLINECOLOR: */ /* case LVM_SETOUTLINECOLOR: */
/* case LVN_SETSELECTEDCOLUMN: */ /* case LVM_SETSELECTEDCOLUMN: */
case LVM_SETSELECTIONMARK: case LVM_SETSELECTIONMARK:
return LISTVIEW_SetSelectionMark(infoPtr, (INT)lParam); return LISTVIEW_SetSelectionMark(infoPtr, (INT)lParam);
@ -8433,25 +8503,27 @@ LISTVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
case LVM_SETTEXTCOLOR: case LVM_SETTEXTCOLOR:
return LISTVIEW_SetTextColor(infoPtr, (COLORREF)lParam); 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_SETTOOLTIPS: */
/* case LVM_SETUNICODEFORMAT: */ /* case LVM_SETUNICODEFORMAT: */
/* case LVN_SETVIEW: */ /* case LVM_SETVIEW: */
/* case LVM_SETWORKAREAS: */ /* case LVM_SETWORKAREAS: */
/* case LVN_SORTGROUPS: */ /* case LVM_SORTGROUPS: */
case LVM_SORTITEMS: case LVM_SORTITEMS:
return LISTVIEW_SortItems(infoPtr, (PFNLVCOMPARE)lParam, (LPARAM)wParam); return LISTVIEW_SortItems(infoPtr, (PFNLVCOMPARE)lParam, (LPARAM)wParam);
/* LVM_SORTITEMSEX: */
case LVM_SUBITEMHITTEST: case LVM_SUBITEMHITTEST:
return LISTVIEW_HitTest(infoPtr, (LPLVHITTESTINFO)lParam, TRUE, FALSE); return LISTVIEW_HitTest(infoPtr, (LPLVHITTESTINFO)lParam, TRUE, FALSE);