scroll: audit

Dimitrie O. Paun dpaun at rogers.com
Fri Oct 8 08:58:26 CDT 2004


ChangeLog
    Audit the scroll control.
    Reorganize the documentation in a more readable format.


Index: dlls/user/scroll.c
===================================================================
RCS file: /var/cvs/wine/dlls/user/scroll.c,v
retrieving revision 1.1
diff -u -r1.1 scroll.c
--- dlls/user/scroll.c	31 Aug 2004 01:10:08 -0000	1.1
+++ dlls/user/scroll.c	8 Oct 2004 06:06:54 -0000
@@ -17,6 +17,20 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * NOTES
+ *
+ * This code was audited for completeness against the documented features
+ * of Comctl32.dll version 6.0 on Oct. 8, 2004, by Dimitrie O. Paun.
+ * 
+ * Unless otherwise noted, we believe this code to be complete, as per
+ * the specification mentioned above.
+ * If you discover missing features, or bugs, please note them below.
+ *
+ * TODO:
+ *   - GetScrollBarInfo
+ *   - SBM_GETSCROLLBARINFO
+ *   - SCROLLBARINFO
  */
 
 #include <stdarg.h>
@@ -178,8 +192,8 @@
  * Return TRUE if the scrollbar is vertical, FALSE if horizontal.
  */
 static BOOL SCROLL_GetScrollBarRect( HWND hwnd, INT nBar, RECT *lprect,
-                                       INT *arrowSize, INT *thumbSize,
-                                       INT *thumbPos )
+                                     INT *arrowSize, INT *thumbSize,
+                                     INT *thumbPos )
 {
     INT pixels;
     BOOL vertical;
@@ -745,11 +759,13 @@
  *           SCROLL_HandleKbdEvent
  *
  * Handle a keyboard event (only for SB_CTL scrollbars with focus).
+ *
+ * PARAMS
+ *    hwnd   [I] Handle of window with scrollbar(s)
+ *    wParam [I] Variable input including enable state
+ *    lParam [I] Variable input including input point
  */
-static void SCROLL_HandleKbdEvent(
-HWND hwnd /* [in] Handle of window with scrollbar(s) */,
-WPARAM wParam /* [in] Variable input including enable state */,
-LPARAM lParam /* [in] Variable input including input point */)
+static void SCROLL_HandleKbdEvent(HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     TRACE("hwnd=%p wParam=%d lParam=%ld\n", hwnd, wParam, lParam);
 
@@ -1089,11 +1105,13 @@
 /***********************************************************************
  *           SCROLL_CreateScrollBar
  *
- *  Create a scroll bar
+ * Create a scroll bar
+ *
+ * PARAMS
+ *    hwnd     [I] Handle of window with scrollbar(s)
+ *    lpCreate [I] The style and place of the scroll bar
  */
-static void SCROLL_CreateScrollBar(
-HWND hwnd /* [in] Handle of window with scrollbar(s) */,
-LPCREATESTRUCTW lpCreate /* [in] The style and place of the scroll bar */)
+static void SCROLL_CreateScrollBar(HWND hwnd, LPCREATESTRUCTW lpCreate)
 {
     LPSCROLLBAR_INFO info = SCROLL_GetScrollBarInfo(hwnd, SB_CTL);
     if (!info) return;
@@ -1146,12 +1164,14 @@
 /*************************************************************************
  *           SCROLL_GetScrollInfo
  *
- *  Internal helper for the API function
+ * Internal helper for the API function
+ *
+ * PARAMS
+ *    hwnd [I]  Handle of window with scrollbar(s)
+ *    nBar [I]  One of SB_HORZ, SB_VERT, or SB_CTL
+ *    info [IO] fMask specifies which values to retrieve
  */
-static BOOL SCROLL_GetScrollInfo(
-HWND hwnd /* [in] Handle of window with scrollbar(s) */,
-INT nBar /* [in] One of SB_HORZ, SB_VERT, or SB_CTL */,
-LPSCROLLINFO info /* [in/out] (fMask specifies which values to retrieve) */)
+static BOOL SCROLL_GetScrollInfo(HWND hwnd, INT nBar, LPSCROLLINFO info)
 {
     LPSCROLLBAR_INFO infoPtr;
 
@@ -1179,10 +1199,12 @@
  *           SCROLL_GetScrollPos
  *
  *  Internal helper for the API function
+ *
+ * PARAMS
+ *    hwnd [I]  Handle of window with scrollbar(s)
+ *    nBar [I]  One of SB_HORZ, SB_VERT, or SB_CTL
  */
-static INT SCROLL_GetScrollPos(
-HWND hwnd /* [in] Handle of window with scrollbar(s) */,
-INT nBar /* [in] One of SB_HORZ, SB_VERT, or SB_CTL */)
+static INT SCROLL_GetScrollPos(HWND hwnd, INT nBar)
 {
     LPSCROLLBAR_INFO infoPtr = SCROLL_GetScrollBarInfo(hwnd, nBar);
     return infoPtr ? infoPtr->curVal: 0;
@@ -1194,13 +1216,15 @@
  *
  *  Internal helper for the API function
  *
+ * PARAMS
+ *    hwnd  [I]  Handle of window with scrollbar(s)
+ *    nBar  [I]  One of SB_HORZ, SB_VERT, or SB_CTL
+ *    lpMin [O]  Where to store minimum value
+ *    lpMax [O]  Where to store maximum value
+ *
  * RETURNS STD
  */
-static BOOL SCROLL_GetScrollRange(
-HWND hwnd, /* [in] Handle of window */
-INT nBar, /* [in] One of SB_HORZ, SB_VERT, or SB_CTL  */
-LPINT lpMin, /* [out] Where to store minimum value */
-LPINT lpMax /* [out] Where to store maximum value */)
+static BOOL SCROLL_GetScrollRange(HWND hwnd, INT nBar, LPINT lpMin, LPINT lpMax)
 {
     LPSCROLLBAR_INFO infoPtr = SCROLL_GetScrollBarInfo(hwnd, nBar);
 
@@ -1214,12 +1238,14 @@
 /*************************************************************************
  *           SCROLL_SetScrollRange
  *
+ * PARAMS
+ *    hwnd  [I]  Handle of window with scrollbar(s)
+ *    nBar  [I]  One of SB_HORZ, SB_VERT, or SB_CTL
+ *    lpMin [I]  Minimum value
+ *    lpMax [I]  Maximum value
+ *
  */
-static BOOL SCROLL_SetScrollRange(
-        HWND hwnd, /* [in] Handle of window */
-        INT nBar, /* [in] One of SB_HORZ, SB_VERT, or SB_CTL  */
-        INT minVal, /* [out] minimum value */
-        INT maxVal /* [out] maximum value */)
+static BOOL SCROLL_SetScrollRange(HWND hwnd, INT nBar, INT minVal, INT maxVal)
 {
     LPSCROLLBAR_INFO infoPtr = SCROLL_GetScrollBarInfo(hwnd, nBar);
 
@@ -1425,6 +1451,12 @@
  * SetScrollInfo can be used to set the position, upper bound,
  * lower bound, and page size of a scrollbar control.
  *
+ * PARAMS
+ *    hwnd    [I]  Handle of window with scrollbar(s)
+ *    nBar    [I]  One of SB_HORZ, SB_VERT, or SB_CTL
+ *    info    [I]  Specifies what to change and new values
+ *    bRedraw [I]  Should scrollbar be redrawn afterwards?
+ *
  * RETURNS
  *    Scrollbar position
  *
@@ -1434,11 +1466,7 @@
  *  (corresponding to the 76 different positions of the window on
  *  the text), and info->nPage=25.
  */
-INT WINAPI SetScrollInfo(
-HWND hwnd /* [in] Handle of window whose scrollbar will be affected */,
-INT nBar /* [in] One of SB_HORZ, SB_VERT, or SB_CTL */,
-const SCROLLINFO *info /* [in] Specifies what to change and new values */,
-BOOL bRedraw /* [in] Should scrollbar be redrawn afterwards ? */)
+INT WINAPI SetScrollInfo(HWND hwnd, INT nBar, const SCROLLINFO *info, BOOL bRedraw)
 {
     TRACE("hwnd=%p nBar=%d info=%p, bRedraw=%d\n", hwnd, nBar, info, bRedraw);
 
@@ -1602,12 +1630,14 @@
  * GetScrollInfo can be used to retrieve the position, upper bound,
  * lower bound, and page size of a scrollbar control.
  *
+ * PARAMS
+ *  hwnd [I]  Handle of window with scrollbar(s)
+ *  nBar [I]  One of SB_HORZ, SB_VERT, or SB_CTL
+ *  info [IO] fMask specifies which values to retrieve
+ *
  * RETURNS STD
  */
-BOOL WINAPI GetScrollInfo(
-HWND hwnd /* [in] Handle of window with scrollbar(s) */,
-INT nBar /* [in] One of SB_HORZ, SB_VERT, or SB_CTL */,
-LPSCROLLINFO info /* [in/out] (fMask specifies which values to retrieve) */)
+BOOL WINAPI GetScrollInfo(HWND hwnd, INT nBar, LPSCROLLINFO info)
 {
     TRACE("hwnd=%p nBar=%d info=%p\n", hwnd, nBar, info);
 
@@ -1624,6 +1654,12 @@
 /*************************************************************************
  *           SetScrollPos   (USER32.@)
  *
+ * PARAMS
+ *    hwnd    [I]  Handle of window with scrollbar(s)
+ *    nBar    [I]  One of SB_HORZ, SB_VERT, or SB_CTL
+ *    nPos    [I]  New value
+ *    bRedraw [I]  Should scrollbar be redrawn afterwards?
+ *
  * RETURNS
  *    Success: Scrollbar position
  *    Failure: 0
@@ -1632,11 +1668,7 @@
  *    Note the ambiguity when 0 is returned.  Use GetLastError
  *    to make sure there was an error (and to know which one).
  */
-INT WINAPI SetScrollPos(
-HWND hwnd /* [in] Handle of window whose scrollbar will be affected */,
-INT nBar /* [in] One of SB_HORZ, SB_VERT, or SB_CTL */,
-INT nPos /* [in] New value */,
-BOOL bRedraw /* [in] Should scrollbar be redrawn afterwards ? */ )
+INT WINAPI SetScrollPos( HWND hwnd, INT nBar, INT nPos, BOOL bRedraw)
 {
     SCROLLINFO info;
     SCROLLBAR_INFO *infoPtr;
@@ -1655,6 +1687,10 @@
 /*************************************************************************
  *           GetScrollPos   (USER32.@)
  *
+ * PARAMS
+ *    hwnd    [I]  Handle of window with scrollbar(s)
+ *    nBar    [I]  One of SB_HORZ, SB_VERT, or SB_CTL
+ *
  * RETURNS
  *    Success: Current position
  *    Failure: 0
@@ -1663,9 +1699,7 @@
  *    There is ambiguity when 0 is returned.  Use GetLastError
  *    to make sure there was an error (and to know which one).
  */
-INT WINAPI GetScrollPos(
-HWND hwnd /* [in] Handle of window with scrollbar(s) */,
-INT nBar /* [in] One of SB_HORZ, SB_VERT, or SB_CTL */)
+INT WINAPI GetScrollPos(HWND hwnd, INT nBar)
 {
     TRACE("hwnd=%p nBar=%d\n", hwnd, nBar);
 
@@ -1680,14 +1714,16 @@
 /*************************************************************************
  *           SetScrollRange   (USER32.@)
  *
+ * PARAMS
+ *    hwnd    [I]  Handle of window with scrollbar(s)
+ *    nBar    [I]  One of SB_HORZ, SB_VERT, or SB_CTL
+ *    minVal  [I]  New minimum value
+ *    maxVal  [I]  New Maximum value
+ *    bRedraw [I]  Should scrollbar be redrawn afterwards?
+ *
  * RETURNS STD
  */
-BOOL WINAPI SetScrollRange(
-HWND hwnd, /* [in] Handle of window whose scrollbar will be affected */
-INT nBar, /* [in] One of SB_HORZ, SB_VERT, or SB_CTL */
-INT minVal, /* [in] New minimum value */
-INT maxVal, /* [in] New maximum value */
-BOOL bRedraw /* [in] Should scrollbar be redrawn afterwards ? */)
+BOOL WINAPI SetScrollRange(HWND hwnd, INT nBar, INT minVal, INT maxVal, BOOL bRedraw)
 {
     SCROLLINFO info;
  
@@ -1731,13 +1767,15 @@
 /*************************************************************************
  *           GetScrollRange   (USER32.@)
  *
+ * PARAMS
+ *    hwnd    [I]  Handle of window with scrollbar(s)
+ *    nBar    [I]  One of SB_HORZ, SB_VERT, or SB_CTL
+ *    lpMin   [O]  Where to store minimum value
+ *    lpMax   [O]  Where to store maximum value
+ *
  * RETURNS STD
  */
-BOOL WINAPI GetScrollRange(
-HWND hwnd /* [in] Handle of window with scrollbar(s) */,
-INT nBar /* [in] One of SB_HORZ, SB_VERT, or SB_CTL  */,
-LPINT lpMin /* [out] Where to store minimum value */,
-LPINT lpMax /* [out] Where to store maximum value */)
+BOOL WINAPI GetScrollRange(HWND hwnd, INT nBar, LPINT lpMin, LPINT lpMax)
 {
     TRACE("hwnd=%p nBar=%d lpMin=%p lpMax=%p\n", hwnd, nBar, lpMin, lpMax);
 
@@ -1820,12 +1858,14 @@
 /*************************************************************************
  *           ShowScrollBar   (USER32.@)
  *
+ * PARAMS
+ *    hwnd    [I]  Handle of window with scrollbar(s)
+ *    nBar    [I]  One of SB_HORZ, SB_VERT, or SB_CTL
+ *    fShow   [I]  TRUE = show, FALSE = hide
+ *
  * RETURNS STD
  */
-BOOL WINAPI ShowScrollBar(
-HWND hwnd, /* [in] Handle of window whose scrollbar(s) will be affected   */
-INT nBar, /* [in] One of SB_HORZ, SB_VERT, SB_BOTH or SB_CTL */
-BOOL fShow /* [in] TRUE = show, FALSE = hide  */)
+BOOL WINAPI ShowScrollBar(HWND hwnd, INT nBar, BOOL fShow)
 {
     SCROLL_ShowScrollBar( hwnd, nBar, (nBar == SB_VERT) ? 0 : fShow,
                                       (nBar == SB_HORZ) ? 0 : fShow );



More information about the wine-patches mailing list