
                  COMMON CONTROLS
              their development status
    and their UNDOCUMENTED features and functions
-----------------------------------------------------


1. Introduction
---------------
  The information provided herein is based on the dll version 4.72 which
  is included in MS Internet Explorer 4.01.

  All information about common controls should be collected in this document.

  All Wine programmers are encouraged to add their knowledge to this document.


2. General Information
----------------------
  Further information about common controls can be found in the MS Platform SDK
  and the MS Internet Client SDK (most recent). Information from these SDK's
  will NOT be repeated here. Only information which can NOT be found in these
  SDK's will be collected here. Some information in the SDK's mentioned above
  is (intentionally???) WRONG. Corrections to wrong information will be
  collected here too.


3. Controls
-----------
  This paragraph describes the development status of the common controls.


3.1 Animation Control
---------------------
  Author:
      Dummy written by Eric Kohl. <ekohl@abo.rhein-zeitung.de>

  Status:
      Dummy control. No functionality.

  Notes:
      Author needed!! Any volunteers??


3.2 Combo Box Ex Control
------------------------
  Author:
      Dummy written by Eric Kohl. <ekohl@abo.rhein-zeitung.de>

  Status:
      Dummy control. No functionality.

  Notes:
      Author needed!! Any volunteers??


3.3 Date and Time Picker Control
--------------------------------
  Author:
      Dummy written by Eric Kohl. <ekohl@abo.rhein-zeitung.de>

  Status:
      Dummy control. No functionality.

  Notes:
      Author needed!! Any volunteers??


3.4 Drag List Box Control
-------------------------
  Status:
      Nothing done at all.

  Notes:
      Author needed!! Any volunteers??


3.5 Flat Scroll Bar Control
---------------------------
  Status:
      Nothing done at all.

  Notes:
      Author needed!! Any volunteers??


3.6 Header Control
------------------
  Author:
      Eric Kohl <ekohl@abo.rhein-zeitung.de>

  Status:
      Almost finished.


3.7 Hot Key Control
-------------------
  Author:
      Dummy written by Eric Kohl. <ekohl@abo.rhein-zeitung.de>

  Status:
      Dummy control. No functionality.

  Notes:
      Author needed!! Any volunteers??


3.8 Image List (no control)
---------------------------
  Author:
      Eric Kohl <ekohl@abo.rhein-zeitung.de>

  Status:
      Almost finished.


3.9 IP Address Control
----------------------
  Author:
      Dummy written by Eric Kohl. <ekohl@abo.rhein-zeitung.de>
      Alex Priem <alexp@sci.kun.nl>

  Status:
      Under construction.

  Notes:
      Author needed!! Any volunteers??


3.10 List View Control
----------------------
  Author:
      Dummy written by Eric Kohl. <ekohl@abo.rhein-zeitung.de>
      Ben Williams <biwillia@shrug.isdn.uiuc.edu>

  Status:
      Under construction.

  Notes:
      Author needed!! Any volunteers??


3.11 Month Calendar Control
---------------------------
  Author:
      Dummy written by Eric Kohl. <ekohl@abo.rhein-zeitung.de>

  Status:
      Dummy control. No functionality.

  Notes:
      Author needed!! Any volunteers??


3.12 Native font control
------------------------
  Status:
      Dummy written by Eric Kohl.

  Notes:
      Author needed!! Any volunteers??


3.13 Pager Control
------------------
  Author:
      Dummy written by Eric Kohl.

  Status:
      Dummy control. No functionality.

  Notes:
      Author needed!! Any volunteers??


3.14 Progress Bar Control
-------------------------
  Author:
      Original implementation by Dimitrie O. Paun.
      Fixes and improvements by Eric Kohl.

  Status:
      Almost finished (should behave like the original).

  Notes:
      WM_GETFONT and WM_SETFONT are not implemented yet. They seem to be
      useless because progress bars usually don't display any textual
      information. But if M$ implemented an undocumented flag to display
      textual information (e.g. percentage) these messages would make sense.


3.15 Property Sheet
-------------------
  Author:
      Anders Carlsson <anders.carlsson@linux.nu>

  Status:
      - Development in progress.
      - Not yet published.

  Notes:
      Tab control must be implemented first.


3.16 Rebar Control (Cool Bar)
-----------------------------
  Author:
      Eric Kohl <ekohl@abo.rhein-zeitung.de>

  Status:
      Development in progress.
      Many bugs and missing features.

  Notes:
      Author needed!! Any volunteers??


3.17 Status Bar Control
-----------------------
  Author:
      Original implementation by Bruce Milner.
      Fixes and improvements by Eric Kohl.

  Status:
      Almost finished.

  Notes:
      - Unicode support is still missing.
      - Tooltip integration is almost complete.


3.18 Tab Control
----------------
  Author:
      Anders Carlsson <anders.carlsson@linux.nu>

  Status:
      - Development in progress.


3.19 Toolbar Control
--------------------
  Author:
      Eric Kohl <ekohl@abo.rhein-zeitung.de>

  Status:
      - Development in progress.
      - Basic functionality is almost done. (dll version 4.0)

  Notes:
      - Bitmaps are not correctly displayed.


3.20 Tooltip Control
--------------------
  Author:
      Eric Kohl <ekohl@abo.rhein-zeitung.de>

  Status:
      - Almost finished.

  Notes:
      - Unicode support is still missing.


3.21 Trackbar Control
---------------------
  Author:
      Dummy written by Eric Kohl <ekohl@abo.rhein-zeitung.de>
      Alex Priem <alexp@sci.kun.nl>

  Status:
      Under construction.


3.22 Tree View Control
----------------------
  Author:
      Dummy written by Eric Kohl.
      Alex Priem <alexp@sci.kun.nl>

  Status:
      Under contstruction.


3.23 Updown Control
-------------------
  Author:
      Original implementation by Dimitrie O. Paun.
      Some minor changes by Eric Kohl <ekohl@abo.rhein-zeitung.de>.

  Status:
      - Unknown.

  Notes:
      - Have a look at controls/updown.c for a list of bugs and missing
        features.

      - The status is unknown, because I did not have a close look at this
        control. One test-program looked quite good, but in Win95's
        cdplayer.exe the control does not show at all.
      
      Any volunteers??


4. Additional Information
-------------------------

  Has to be written...


5. Undocumented features
------------------------

  There are quite a lot of undocumented functions like:
     - DSA (Dynnamic Storage Array) functions.
     - DPA (Dymnamic Pointer Array) functions.
     - MRU ("Most Recently Used" List) functions.
     - other unknown functions.

  Have a look at relay32/comctl32.spec.


5.1 Dymnamic Storage Array (DSA)
---------------------------------
  The DSA functions are used to store and manage dynamic arrays of fixed size
  memory blocks. They are used by TASKMAN.EXE, Explorer, IE4 and other
  Programs and DLL's that are "parts of the Windows Operating System".
  The implementation should be complete.

  Have a look at the source code to get more information.


5.2 Dynamic Pointer Array (DPA)
------------------------------------
  Similar to the DSA functions, but they just store pointers. They are used by
  Explorer, IE4 and other Programs and DLL's that are "parts of the Windows
  Operating System". The implementation should be complete.

  Have a look at the source code to get more information.


5.3 "Most Recently Used" - List (MRU)
-------------------------------------
  The function 'COMCTL32_157()' could be called 'CreateMRUListEx32A()'.
  Only stubs are implemented to keep Explorer from bailing out.

  No more information available at this time!


5.4 MenuHelp
------------
  Has to be written...


5.5 GetEffectiveClientRect
--------------------------
  Has to be written...


5.6 ShowHideMenuCtl
-------------------
  The official documentation provided by MS is incomplete.

  lpInfo:
  ...
  Both values of the first pair must be the handle to the applications main
  menu.
  ...


5.7 Other undocumented functions
--------------------------------
  Several other undocumented functions are used by IE4.

  COMCTL32_11, COMCTL_385, COMCTL32_386 and COMCTL32_388.
  Their stubs are implemented to keep IE4 from bailing out.


6. Epilogue
-----------
  You see, much work has still to be done. If you are interested in writing
  a control send me an e-mail. If you like to fix bugs or add some
  functionality send an e-mail to the author of the control.


Eric Kohl <ekohl@abo.rhein-zeitung.de>

