Revert changes to the painting code, the WM_CTLCOLORSTATIC message
[wine] / DEVELOPERS-HINTS
index f696a48..193c51f 100644 (file)
@@ -15,10 +15,14 @@ DLLs (under dlls/):
 -------------------
 
        advapi32/               - Crypto, systeminfo, security, eventlogging
+       advpack/                - Reads and verifies .INF files
+       amstream/               - MultiMedia Streams
+       atl/                    - Active Template Library
        avicap32/               - AVI capture window class
        avifil32/               - COM object to play AVI files
        cabinet/                - Cabinet file interface
        capi2032/               - Wrapper library for CAPI4Linux access
+       cards/                  - Card graphics
        cfgmgr32/               - Config manager
        comcat/                 - Component category manager
        comctl32/               - Common controls
@@ -29,7 +33,10 @@ DLLs (under dlls/):
        d3d8/                   - Direct3D (3D graphics)
        d3d9/                   - Direct3D (3D graphics)
        d3dim/                  - Direct3D Immediate Mode
+       d3drm/                  - Direct3D Retained Mode
        d3dx8/                  - Direct3D (3D graphics)
+       d3dxof/                 - DirectX Files Functions
+       dbghelp/                - Engine for symbol and module enumeration
        dciman32/               - DCI Manager (graphics)
        ddraw/                  - DirectDraw (graphics)
        devenum/                - Device enumeration (part of DirectShow)
@@ -46,35 +53,48 @@ DLLs (under dlls/):
        dmusic32/               - DirectMusic Legacy Port
        dplay/                  - DirectPlay (networking)
        dplayx/                 - DirectPlay (networking)
+       dpnet/                  - DirectPlay (networking)
        dpnhpast/               - DirectPlay NAT Helper PAST
        dsound/                 - DirectSound (audio)
+       dswave/                 - DirectMusic Wave
+       dxdiagn/                - DirectX Diagnostic Tool 
        gdi/                    - GDI (graphics)
        glu32/                  - OpenGL Utility library (graphics)
        glut32/                 - OpenGL Utility Toolkit
+       hhctrl.ocx/             - HHCTRL OCX implementation
+       iccvid/                 - Radius Cinepak Video Decoder
        icmp/                   - ICMP protocol (networking)
+       ifsmgr.vxd/             - IFSMGR VxD implementation
        imagehlp/               - PE (Portable Executable) Image Helper lib
        imm32/                  - Input Method Manager
        iphlpapi/               - IP Helper API
+       itss/                   - Infotech Structured Storage (HTML Help)
        kernel/                 - The Windows kernel
        lzexpand/               - Lempel-Ziv compression/decompression
        mapi32/                 - Mail interface
+       mlang/                  - Multi Language Support
+       mmdevldr.vxd/           - MMDEVLDR VxD implementation
+       monodebg.vxd/           - MONODEBG VxD implementation
        mpr/                    - Multi-Protocol Router (networking)
        msacm/                  - Audio Compression Manager (multimedia)
        msacm/imaadp32/         - IMA ADPCM Audio Codec
        msacm/msadp32/          - MS ADPCM Audio Codec
        msacm/msg711/           - MS G711 Audio Codec (includes A-Law & MU-Law)
        msacm/winemp3/          - Mpeg Layer 3 Audio Codec
+       mscms/                  - Color Management System
        msdmo/                  - DirectX Media Objects
        mshtml/                 - MS HTML component
+       msi/                    - Microsoft Installer
        msimg32/                - Gradient and transparency (graphics)
        msisys/                 - System information
-       msi/                    - Microsoft Installer
        msnet32/                - Network interface
+       msrle32/                - Video codecs
        msvcrt/                 - C runtime library 
        msvcrt20/               - C runtime library version 2.0
+       msvcrt40/               - C runtime library version 4.0
        msvcrtd/                - C runtime library debugging
+       msvidc32/               - Microsoft Video-1 Decoder
        msvideo/                - 16 bit video manager
-       msvideo/msrle32/        - Video codecs
        mswsock/                - Misc networking
        netapi32/               - Network interface
        newdev/                 - New Hardware Device Library
@@ -92,13 +112,18 @@ DLLs (under dlls/):
        qcap/                   - DirectShow runtime
        quartz/                 - DirectShow runtime
        rasapi32/               - Remote Access Server interface
+       riched20/               - Rich text editing control version 2.0
        richedit/               - Rich text editing control
        rpcrt4/                 - Remote Procedure Call runtime
+       rsabase/                - RSA encryption
+       rsaenh/                 - Crypto API that provides algorithms for DES, 3DES, and RSA among others
+       secur32/                - Contains Windows Security functions
+       sensapi/                - System Event Notification Service
        serialui/               - Serial port property pages
        setupapi/               - Setup interface
        shdocvw/                - Shell document object and control
-       shfolder/               - Shell folder service
        shell32/                - COM object implementing shell views
+       shfolder/               - Shell folder service
        shlwapi/                - Shell Light-Weight interface
        snmpapi/                - SNMP protocol interface (networking)
        sti/                    - Still Image service
@@ -110,7 +135,14 @@ DLLs (under dlls/):
        urlmon/                 - URL Moniker allows binding to a URL (like KIO/gnome-vfs)
        user/                   - Window management, standard controls, etc.
        uxtheme/                - Theme library
+       vdhcp.vxd/              - VDHCP VxD implementation
+       vdmdbg/                 - Virtual DOS machine debug library
        version/                - File installation library
+       vmm.vxd/                - VMM VxD implementation
+       vnbt.vxd/               - VNBT VxD implementation
+       vnetbios.vxd/           - VNETBIOS VxD implementation
+       vtdapi.vxd/             - VTDAPI VxD implementation
+       vwin32.vxd/             - VWIN32 VxD implementation
        win32s/                 - 32-bit function access for 16-bit systems
        winaspi/                - 16 bit Advanced SCSI Peripheral Interface
        wined3d/                - Wine internal Direct3D helper
@@ -134,11 +166,12 @@ DLLs (under dlls/):
        winmm/wineoss/          - OSS audio driver
        winnls/                 - National Language Support
        winsock/                - Sockets 2.0 (networking)
-       wsock32/                - Sockets 1.1 (networking)
-       wintab32/               - Tablet device interface
        winspool/               - Printing & Print Spooler
+       wintab32/               - Tablet device interface
        wintrust/               - Trust verification interface
        wow32/                  - WOW subsystem
+       wsock32/                - Sockets 1.1 (networking)
+       wtsapi32/               - Terminal Services
        x11drv/                 - X11 display driver (Wine specific)
 
 Winelib programs (under programs/):
@@ -149,13 +182,15 @@ Winelib programs (under programs/):
        cmdlgtst/               - Common dialog tests
        control/                - Control panel
        expand/                 - Decompress Lempel-Ziv compressed archive
-       notepad/                - Notepad with RichEdit functionality
+       msiexec/                - Microsoft Installer frontend
+       notepad/                - Notepad replacement 
        progman/                - Program manager
        regedit/                - Registry editor
        regsvr32/               - Register COM server
        rpcss/                  - RPC services
        rundll32/               - Execute DLL functions directly
        start/                  - Replacement for start.exe
+       taskmgr/                - Manage running Windows/Winelib applications
        uninstaller/            - Remove installed programs
        view/                   - Metafile viewer
        wcmd/                   - Command line interface
@@ -176,28 +211,32 @@ Winelib programs (under programs/):
 Support programs, libraries, etc:
 ---------------------------------
 
+       dlls/dxerr8/            - DirectX 8 error import lib
+       dlls/dxerr9/            - DirectX 9 error import lib
+       dlls/dxguid/            - DirectX UUID import lib
+       dlls/strmiids/          - Exports class (CLSIDs) and interface (IIDs) identifiers 
+       dlls/uuid/              - Windows-compatible UUID import lib
        documentation/          - some documentation
-       documentation/samples   - sample configuration files
+       documentation/samples/  - sample configuration files
        include/                - Windows standard includes
-       include/msvcrt          - MSVC compatible libc headers
-       include/wine            - Wine specific headers
+       include/msvcrt/         - MSVC compatible libc headers
+       include/wine/           - Wine specific headers
        libs/                   - the Wine libraries
        libs/port/              - portability library
        libs/unicode/           - Unicode support shared
-       libs/uuid/              - Windows-compatible UUID numbers
        libs/wine/              - Wine bootstrap library
        libs/wpp/               - C preprocessor
        loader/                 - the main Wine loader
        server/                 - the Wine server
        tools/                  - various tools used to build/check Wine
-       tools/widl              - the IDL compiler
-       tools/winapi{,_check}   - A Win32 API checker
-       tools/winebuild         - Wine build tool
-       tools/winedump          - a .DLL dump utility
-       tools/winegcc           - a MinGW command line compatible gcc wrapper
-       tools/wmc               - the message compiler
-       tools/wpp               - the C pre-processor library
-       tools/wrc               - the resource compiler
+       tools/widl/             - the IDL compiler
+       tools/winapi{,_check}/  - A Win32 API checker
+       tools/winebuild/        - Wine build tool
+       tools/winedump/         - a .DLL dump utility
+       tools/winegcc/          - a MinGW command line compatible gcc wrapper
+       tools/wmc/              - the message compiler
+       tools/wpp/              - the C pre-processor library
+       tools/wrc/              - the resource compiler
 
 
 Miscellaneous:
@@ -206,13 +245,7 @@ Miscellaneous:
 Note: these directories will ultimately get moved into their
 respective dlls.
 
-       files/                  - KERNEL file I/O
        misc/                   - KERNEL registry 
-
-       graphics/               - GDI graphics drivers
-       objects/                - GDI logical objects
-
-       controls/               - USER built-in widgets
        windows/                - USER window management
 
 
@@ -262,6 +295,11 @@ into a stub:
    *  
    * Draw many Bezier curves.
    *
+   * PARAMS
+   *   hdc   [I] Device context to draw to
+   *   p     [I] Array of POINT structs
+   *   count [I] Number of points in p
+   *
    * RETURNS
    *   Success: Non-zero.
    *   Failure: FALSE. Use GetLastError() to find the error cause.
@@ -269,19 +307,16 @@ into a stub:
    * BUGS
    *   Unimplemented
    */
-   BOOL WINAPI PolyBezierTo(HDC hdc,     /* [In] Device context to draw to */
-                            LPCVOID p,   /* [In] Array of POINT structs */
-                            DWORD count  /* [In] Number of points in p */
-   ) 
+   BOOL WINAPI PolyBezierTo(HDC hdc, LPCVOID p, DWORD count) 
    {
-      /* tell the user they've got a substandard implementation */
-      FIXME(gdi, ":(%x,%p,%d): stub\n", hdc, p, count);
-
-      /* some programs may be able to compensate, 
-       * if they know what happened 
-       */
-      SetLastError(ERROR_CALL_NOT_IMPLEMENTED);  
-      return FALSE;    /* error value */
+       /* tell the user they've got a substandard implementation */
+       FIXME("(%x,%p,%d): stub\n", hdc, p, count);
+
+       /* some programs may be able to compensate, 
+        * if they know what happened 
+        */
+       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);  
+       return FALSE;    /* error value */
    }
 
 4. Implement and test the rest of the function.
@@ -425,16 +460,6 @@ struct { BYTE x; WORD y; };
 
 For alignment on a 2-byte boundary, there is a "pshpack2.h", etc.
 
-The use of the WINE_PACKED attribute is obsolete. Please remove these 
-in favour of the above solution. 
-Using WINE_PACKED, you would declare the above structure like this:
-
-struct { BYTE x; WORD y WINE_PACKED; };
-
-You had to do this every time a structure member is not aligned
-correctly under Windows (i.e. a WORD not on an even address, or a
-DWORD on a address that was not a multiple of 4).
-
 
 NAMING CONVENTIONS FOR API FUNCTIONS AND TYPES
 ==============================================
@@ -445,8 +470,7 @@ functions and types. If the Windows API uses the name 'xxx', the Wine
 code must use:
 
  - 'xxx16' for the Win16 version,
- - 'xxx'   for the Win32 version when no ASCII/Unicode strings are
-   involved,
+ - 'xxx'   for the Win32 version when no strings are involved,
  - 'xxxA'  for the Win32 version with ASCII strings,
  - 'xxxW'  for the Win32 version with Unicode strings.
 
@@ -483,30 +507,6 @@ and this will use the correct declaration depending on the definition
 of the UNICODE symbol.
 
 
-NAMING CONVENTIONS FOR NON-API FUNCTIONS AND TYPES
-==================================================
-
-Functions and data which are internal to your code (or at least shouldn't be
-visible to any Winelib or Windows program) should be preceded by
-an identifier to the module:
-
-Examples:
-
-ENUMPRINTERS_GetDWORDFromRegistryA()    (in dlls/winspool/info.c)
-IAVIFile_fnRelease()                    (in dlls/avifil32/avifile.c)
-X11DRV_CreateDC()                       (in graphics/x11drv/init.c)
-
-if you need prototypes for these, there are a few possibilities:
-- within same source file only:
-  put the prototypes at the top of your file and mark them as prototypes.
-- within the same module:
-  create a header file within the subdirectory where that module resides,
-  e.g.  graphics/ddraw_private.h
-- from a totally different module, or for use in winelib:
-  you should never do that. Only exported APIs can be called across
-  module boundaries.
-
-
 DEBUG MESSAGES
 ==============