Changeset 2126 for trunk/src/comctl32


Ignore:
Timestamp:
Dec 18, 1999, 9:57:01 PM (26 years ago)
Author:
achimha
Message:

WINE 991212 updates - treeview missing

Location:
trunk/src/comctl32
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/comctl32/comctl32.def

    r1788 r2126  
    1 ; $Id: comctl32.def,v 1.14 1999-11-21 11:04:36 achimha Exp $
     1; $Id: comctl32.def,v 1.15 1999-12-18 20:56:57 achimha Exp $
    22LIBRARY COMCTL32 INITINSTANCE
    33DESCRIPTION 'COMCTL32 Common Controls Library'
     
    143143
    144144  comctl32_410        = _comctl32_410@16           @410
    145   InitMUILanguage     = _InitMUILanguage@4         @500 ;should be 70
     145  comctl32_411        = _comctl32_411@12           @411
     146  comctl32_412        = _comctl32_412@12           @412
     147  comctl32_413        = _comctl32_413@16           @413
     148  InitMUILanguage     = _InitMUILanguage@4         @414 ;should be 70
  • trunk/src/comctl32/comctl32.h

    r1730 r2126  
    1 /* $Id: comctl32.h,v 1.10 1999-11-14 10:58:37 achimha Exp $ */
     1/* $Id: comctl32.h,v 1.11 1999-12-18 20:56:58 achimha Exp $ */
    22/*
    33 * Win32 common controls implementation
     
    1212 */
    1313
    14 /* Status: WINE 990923 */
     14/* Status: WINE 991212 */
    1515
    1616#ifndef _H_COMCTL32
     
    7474#define IDC_SUNKEN_LINE   12326
    7575
     76#define IDS_CLOSE 4160
     77
    7678/* Toolbar customization dialog */
    7779#define IDD_TBCUSTOMIZE     200
     
    110112#define IDM_DEC                         312
    111113
     114/* treeview checkboxes */
     115#define IDT_CHECK 401
     116
    112117#endif /* _H_COMCTL32 */
  • trunk/src/comctl32/comctl32undoc.c

    r1735 r2126  
    1 /* $Id: comctl32undoc.c,v 1.15 1999-11-14 13:09:59 achimha Exp $ */
     1/* $Id: comctl32undoc.c,v 1.16 1999-12-18 20:56:58 achimha Exp $ */
    22/*
    33 * Undocumented functions from COMCTL32.DLL
     
    1212 */
    1313
    14 /* WINE 991031 level */
     14/* WINE 991212 level */
    1515
    1616/* CB: todo
     
    254254 * lists.
    255255 *
    256  *
    257  */
    258 
    259 typedef struct tagMRUINFO
    260 {
    261     DWORD  dwParam1;
    262     DWORD  dwParam2;
    263     DWORD  dwParam3;
    264     HKEY   hkeyMain;
    265     LPCSTR lpszSubKey;
    266     DWORD  dwParam6;
    267 } MRUINFO, *LPMRUINFO;
    268 
     256 * Stored in the reg. as a set of values under a single key.  Each item in the
     257 * list has a value name that is a single char. 'a' - 'z', '{', '|' or '}'.
     258 * The order of the list is stored with value name 'MRUList' which is a string
     259 * containing the value names (i.e. 'a', 'b', etc.) in the relevant order.
     260 */
     261
     262typedef struct tagCREATEMRULIST
     263{
     264    DWORD  cbSize;        /* size of struct */
     265    DWORD  nMaxItems;     /* max no. of items in list */
     266    DWORD  dwFlags;       /* see below */
     267    HKEY   hKey;          /* root reg. key under which list is saved */
     268    LPCSTR lpszSubKey;    /* reg. subkey */
     269    PROC   lpfnCompare;   /* item compare proc */
     270} CREATEMRULIST, *LPCREATEMRULIST;
     271
     272/* dwFlags */
     273#define MRUF_STRING_LIST  0 /* list will contain strings */
     274#define MRUF_BINARY_LIST  1 /* list will contain binary data */
     275#define MRUF_DELAYED_SAVE 2 /* only save list order to reg. is FreeMRUList */
     276
     277/* If list is a string list lpfnCompare has the following prototype
     278 * int CALLBACK MRUCompareString(LPCSTR s1, LPCSTR s2)
     279 * for binary lists the prototype is
     280 * int CALLBACK MRUCompareBinary(LPCVOID data1, LPCVOID data2, DWORD cbData)
     281 * where cbData is the no. of bytes to compare.
     282 * Need to check what return value means identical - 0?
     283 */
    269284
    270285typedef struct tagMRU
     
    278293} MRU, *HMRU;
    279294
    280 LPVOID WINAPI
    281 CreateMRUListLazyA (LPMRUINFO lpmi, DWORD dwParam2,
    282                     DWORD dwParam3, DWORD dwParam4);
    283 
    284 
    285 /**************************************************************************
    286  * CreateMRUListA [COMCTL32.151]
    287  *
    288  * PARAMS
    289  *     dwParam
    290  *
    291  * RETURNS
    292  */
    293 
    294 LPVOID WINAPI
    295 CreateMRUListA (LPMRUINFO lpmi)
    296 {
    297      return CreateMRUListLazyA (lpmi, 0, 0, 0);
    298 }
    299 
    300 
     295HANDLE WINAPI
     296CreateMRUListLazyA (LPCREATEMRULIST lpcml, DWORD dwParam2,
     297                    DWORD dwParam3, DWORD dwParam4);
     298
     299
     300/**************************************************************************
     301 *              CreateMRUListA [COMCTL32.151]
     302 *
     303 * PARAMS
     304 *     lpcml [I] ptr to CREATEMRULIST structure.
     305 *
     306 * RETURNS
     307 *     Handle to MRU list.
     308 */
     309HANDLE WINAPI
     310CreateMRUListA (LPCREATEMRULIST lpcml)
     311{
     312     return CreateMRUListLazyA (lpcml, 0, 0, 0);
     313}
     314
     315/**************************************************************************
     316 *              FreeMRUListA [COMCTL32.152]
     317 *
     318 * PARAMS
     319 *     hMRUList [I] Handle to list.
     320 *
     321 */
    301322DWORD WINAPI
    302 FreeMRUListA (HMRU hmru)
    303 {
    304 //    FIXME (commctrl, "(%p) empty stub!\n", hmru);
     323FreeMRUListA (HANDLE hMRUList)
     324{
     325    FIXME("(%08x) empty stub!\n", hMRUList);
    305326
    306327#if 0
    307328    if (!(hmru->dwParam1 & 1001)) {
    308         RegSetValueExA (hmru->hKeyMRU, "MRUList", 0, REG_SZ,
    309                           hmru->lpszMRUString,
    310                           lstrlenA (hmru->lpszMRUString));
     329        RegSetValueExA (hmru->hKeyMRU, "MRUList", 0, REG_SZ,
     330                          hmru->lpszMRUString,
     331                          lstrlenA (hmru->lpszMRUString));
    311332    }
    312333
     
    316337#endif
    317338
    318     return COMCTL32_Free (hmru);
    319 }
    320 
    321 
    322 
    323 DWORD WINAPI
    324 AddMRUData (DWORD dwParam1, DWORD dwParam2, DWORD dwParam3)
    325 {
    326 
    327 //    FIXME (commctrl, "(%lx %lx %lx) empty stub!\n",
    328 //         dwParam1, dwParam2, dwParam3);
     339    return COMCTL32_Free ((LPVOID)hMRUList);
     340}
     341
     342
     343/**************************************************************************
     344 *              AddMRUData [COMCTL32.167]
     345 *
     346 * Add item to MRU binary list.  If item already exists in list them it is
     347 * simply moved up to the top of the list and not added again.  If list is
     348 * full then the least recently used item is removed to make room.
     349 *
     350 * PARAMS
     351 *     hList [I] Handle to list.
     352 *     lpData [I] ptr to data to add.
     353 *     cbData [I] no. of bytes of data.
     354 *
     355 * RETURNS
     356 *     No. corresponding to registry name where value is stored 'a' -> 0 etc.
     357 *     -1 on error.
     358 */
     359INT WINAPI
     360AddMRUData (HANDLE hList, LPCVOID lpData, DWORD cbData)
     361{
     362    FIXME("(%08x, %p, %ld) empty stub!\n", hList, lpData, cbData);
    329363
    330364    return 0;
    331365}
    332366
    333 
    334 DWORD WINAPI
    335 FindMRUData (DWORD dwParam1, DWORD dwParam2, DWORD dwParam3, DWORD dwParam4)
    336 {
    337 
    338 //    FIXME (commctrl, "(%lx %lx %lx %lx) empty stub!\n",
    339 //         dwParam1, dwParam2, dwParam3, dwParam4);
    340 
     367/**************************************************************************
     368 *              AddMRUStringA [COMCTL32.153]
     369 *
     370 * Add item to MRU string list.  If item already exists in list them it is
     371 * simply moved up to the top of the list and not added again.  If list is
     372 * full then the least recently used item is removed to make room.
     373 *
     374 * PARAMS
     375 *     hList [I] Handle to list.
     376 *     lpszString [I] ptr to string to add.
     377 *
     378 * RETURNS
     379 *     No. corresponding to registry name where value is stored 'a' -> 0 etc.
     380 *     -1 on error.
     381 */
     382INT WINAPI
     383AddMRUStringA(HANDLE hList, LPCSTR lpszString)
     384{
     385    FIXME("(%08x, %s) empty stub!\n", hList, debugstr_a(lpszString));
     386
     387    return 0;
     388}
     389
     390/**************************************************************************
     391 *              DelMRUString [COMCTL32.156]
     392 *
     393 * Removes item from either string or binary list (despite its name)
     394 *
     395 * PARAMS
     396 *    hList [I] list handle
     397 *    nItemPos [I] item position to remove 0 -> MRU
     398 *
     399 * RETURNS
     400 *    TRUE is successful, FALSE if nItemPos is out of range.
     401 */
     402BOOL WINAPI
     403DelMRUString(HANDLE hList, INT nItemPos)
     404{
     405    FIXME("(%08x, %d): stub\n", hList, nItemPos);
    341406    return TRUE;
    342407}
    343408
    344 
    345 LPVOID WINAPI
    346 CreateMRUListLazyA (LPMRUINFO lpmi, DWORD dwParam2, DWORD dwParam3, DWORD dwParam4)
     409/**************************************************************************
     410 *                  FindMRUData [COMCTL32.169]
     411 *
     412 * Searches binary list for item that matches lpData of length cbData.
     413 * Returns position in list order 0 -> MRU and if lpRegNum != NULL then value
     414 * corresponding to item's reg. name will be stored in it ('a' -> 0).
     415 *
     416 * PARAMS
     417 *    hList [I] list handle
     418 *    lpData [I] data to find
     419 *    cbData [I] length of data
     420 *    lpRegNum [O] position in registry (maybe NULL)
     421 *
     422 * RETURNS
     423 *    Position in list 0 -> MRU.  -1 if item not found.
     424 */
     425INT WINAPI
     426FindMRUData (HANDLE hList, LPCVOID lpData, DWORD cbData, LPINT lpRegNum)
     427{
     428    FIXME("(%08x, %p, %ld, %p) empty stub!\n",
     429           hList, lpData, cbData, lpRegNum);
     430
     431    return 0;
     432}
     433
     434/**************************************************************************
     435 *                  FindMRUStringA [COMCTL32.155]
     436 *
     437 * Searches string list for item that matches lpszString.
     438 * Returns position in list order 0 -> MRU and if lpRegNum != NULL then value
     439 * corresponding to item's reg. name will be stored in it ('a' -> 0).
     440 *
     441 * PARAMS
     442 *    hList [I] list handle
     443 *    lpszString [I] string to find
     444 *    lpRegNum [O] position in registry (maybe NULL)
     445 *
     446 * RETURNS
     447 *    Position in list 0 -> MRU.  -1 if item not found.
     448 */
     449INT WINAPI
     450FindMRUStringA (HANDLE hList, LPCSTR lpszString, LPINT lpRegNum)
     451{
     452    FIXME("(%08x, %s, %p) empty stub!\n", hList, debugstr_a(lpszString),
     453          lpRegNum);
     454
     455    return 0;
     456}
     457
     458HANDLE WINAPI
     459CreateMRUListLazyA (LPCREATEMRULIST lpcml, DWORD dwParam2, DWORD dwParam3, DWORD dwParam4)
    347460{
    348461    /* DWORD  dwLocal1;   *
     
    358471    LPVOID ptr;
    359472
    360 //    FIXME (commctrl, "(%p) empty stub!\n", lpmi);
    361 
    362     if (lpmi) {
    363 //      FIXME (commctrl, "(%lx %lx %lx %lx \"%s\" %lx)\n",
    364 //             lpmi->dwParam1, lpmi->dwParam2, lpmi->dwParam3,
    365 //             (DWORD)lpmi->hkeyMain, lpmi->lpszSubKey, lpmi->dwParam6);
    366     }
     473    FIXME("(%p) empty stub!\n", lpcml);
     474
     475    if (lpcml == NULL)
     476        return 0;
     477
     478    if (lpcml->cbSize < sizeof(CREATEMRULIST))
     479        return 0;
     480
     481    FIXME("(%lu %lu %lx %lx \"%s\" %p)\n",
     482          lpcml->cbSize, lpcml->nMaxItems, lpcml->dwFlags,
     483          (DWORD)lpcml->hKey, lpcml->lpszSubKey, lpcml->lpfnCompare);
    367484
    368485    /* dummy pointer creation */
    369486    ptr = COMCTL32_Alloc (32);
    370487
    371 //    FIXME (commctrl, "-- ret = %p\n", ptr);
    372 
    373     return ptr;
     488    FIXME("-- ret = %p\n", ptr);
     489
     490    return (HANDLE)ptr;
     491}
     492
     493/**************************************************************************
     494 *                EnumMRUListA [COMCTL32.154]
     495 *
     496 * Enumerate item in a list
     497 *
     498 * PARAMS
     499 *    hList [I] list handle
     500 *    nItemPos [I] item position to enumerate
     501 *    lpBuffer [O] buffer to receive item
     502 *    nBufferSize [I] size of buffer
     503 *
     504 * RETURNS
     505 *    For binary lists specifies how many bytes were copied to buffer, for
     506 *    string lists specifies full length of string.  Enumerating past the end
     507 *    of list returns -1.
     508 *    If lpBuffer == NULL or nItemPos is -ve return value is no. of items in
     509 *    the list.
     510 */
     511INT WINAPI EnumMRUListA(HANDLE hList, INT nItemPos, LPVOID lpBuffer,
     512DWORD nBufferSize)
     513{
     514    FIXME("(%08x, %d, %p, %ld): stub\n", hList, nItemPos, lpBuffer,
     515          nBufferSize);
     516    return 0;
    374517}
    375518
     
    19762119BOOL WINAPI comctl32_410( HWND hw, DWORD b, DWORD c, DWORD d) {
    19772120
    1978   dprintf(("COMCTL32: comctl32_410 - unimplemented stub\n"));
    1979    //FIXME_(commctrl)("(%x, %lx, %lx, %lx): stub!\n", hw, b, c, d);
     2121   FIXME("(%x, %lx, %lx, %lx): stub!\n", hw, b, c, d);
     2122
     2123   return TRUE;
     2124}
     2125
     2126/**************************************************************************
     2127 * comctl32_411 [COMCTL32.411]
     2128 *
     2129 * FIXME: What's this supposed to do?
     2130 *        Parameter 1 is an HWND, you're on your own for the rest.
     2131 */
     2132
     2133BOOL WINAPI comctl32_411( HWND hw, DWORD b, DWORD c) {
     2134
     2135   FIXME("(%x, %lx, %lx): stub!\n", hw, b, c);
     2136
     2137   return TRUE;
     2138}
     2139
     2140/**************************************************************************
     2141 * comctl32_412 [COMCTL32.412]
     2142 *
     2143 * FIXME: What's this supposed to do?
     2144 *        Parameter 1 is an HWND, you're on your own for the rest.
     2145 */
     2146
     2147BOOL WINAPI comctl32_412( HWND hwnd, DWORD b, DWORD c)
     2148{
     2149    FIXME("(%x, %lx, %lx): stub!\n", hwnd, b, c);
     2150
     2151    if (IsWindow (hwnd) == FALSE)
     2152        return FALSE;
     2153
     2154    if (b == 0)
     2155        return FALSE;
     2156
     2157
     2158    return TRUE;
     2159}
     2160
     2161/**************************************************************************
     2162 * comctl32_413 [COMCTL32.413]
     2163 *
     2164 * FIXME: What's this supposed to do?
     2165 *        Parameter 1 is an HWND, you're on your own for the rest.
     2166 */
     2167
     2168BOOL WINAPI comctl32_413( HWND hw, DWORD b, DWORD c, DWORD d) {
     2169
     2170   FIXME("(%x, %lx, %lx, %lx): stub!\n", hw, b, c, d);
    19802171
    19812172   return TRUE;
     
    19892180 */
    19902181
    1991 BOOL WINAPI InitMUILanguage( DWORD a ) {
    1992 
    1993    //FIXME_(commctrl)("(%lx): stub!\n", a);
    1994   dprintf(("COMCTL32: InitMUILanguage - unimplemented stub\n"));
     2182BOOL WINAPI InitMUILanguage( LANGID uiLang) {
     2183
     2184   FIXME("(%04x): stub!\n", uiLang);
    19952185
    19962186   return TRUE;
    19972187}
    1998 
  • trunk/src/comctl32/datetime.c

    r1431 r2126  
    1 /* $Id: datetime.c,v 1.5 1999-10-24 22:49:42 sandervl Exp $ */
     1/* $Id: datetime.c,v 1.6 1999-12-18 20:56:58 achimha Exp $ */
    22/*
    33 * Date and time picker control
     
    1515 */
    1616
     17/* WINE 991212 level */
     18
    1719#include "winbase.h"
    1820#include "commctrl.h"
     
    133135  SIZE size;
    134136  BOOL prssed=FALSE;
    135   COLORREF oldBk;
     137  COLORREF oldBk = 0;
    136138
    137139
  • trunk/src/comctl32/draglist.c

    r104 r2126  
    1313 */
    1414
     15/* WINE 991212 level */
     16
    1517#include "commctrl.h"
     18
     19static DWORD dwLastScrollTime = 0;
    1620
    1721
    1822BOOL WINAPI MakeDragList (HWND hwndLB)
    1923{
    20 //    FIXME (commctrl, "(0x%x)\n", hwndLB);
     24    FIXME("(0x%x)\n", hwndLB);
    2125
    2226
     
    2731VOID WINAPI DrawInsert (HWND hwndParent, HWND hwndLB, INT nItem)
    2832{
    29 //    FIXME (commctrl, "(0x%x 0x%x %d)\n", hwndParent, hwndLB, nItem);
     33    FIXME("(0x%x 0x%x %d)\n", hwndParent, hwndLB, nItem);
    3034
    3135
     
    3539INT WINAPI LBItemFromPt (HWND hwndLB, POINT pt, BOOL bAutoScroll)
    3640{
    37 //    FIXME (commctrl, "(0x%x %ld x %ld %s)\n",
    38 //         hwndLB, pt.x, pt.y, bAutoScroll ? "TRUE" : "FALSE");
     41    RECT rcClient;
     42    INT nIndex;
     43    DWORD dwScrollTime;
    3944
     45    FIXME("(0x%x %ld x %ld %s)\n",
     46           hwndLB, pt.x, pt.y, bAutoScroll ? "TRUE" : "FALSE");
     47
     48    ScreenToClient (hwndLB, &pt);
     49    GetClientRect (hwndLB, &rcClient);
     50    nIndex = (INT)SendMessageA (hwndLB, LB_GETTOPINDEX, 0, 0);
     51
     52    if (PtInRect (&rcClient, pt))
     53    {
     54        /* point is inside -- get the item index */
     55        while (TRUE)
     56        {
     57            if (SendMessageA (hwndLB, LB_GETITEMRECT, nIndex, (LPARAM)&rcClient) == LB_ERR)
     58                return -1;
     59
     60            if (PtInRect (&rcClient, pt))
     61                return nIndex;
     62
     63            nIndex++;
     64        }
     65    }
     66    else
     67    {
     68        /* point is outside */
     69        if (!bAutoScroll)
     70            return -1;
     71
     72        if ((pt.x > rcClient.right) || (pt.x < rcClient.left))
     73            return -1;
     74
     75        if (pt.y < 0)
     76            nIndex--;
     77        else
     78            nIndex++;
     79
     80        dwScrollTime = GetTickCount ();
     81
     82        if ((dwScrollTime - dwLastScrollTime) < 200)
     83            return -1;
     84
     85        dwLastScrollTime = dwScrollTime;
     86
     87        SendMessageA (hwndLB, LB_SETTOPINDEX, (WPARAM)nIndex, 0);
     88    }
    4089
    4190    return -1;
    4291}
    4392
     93
     94static LRESULT CALLBACK
     95DRAGLIST_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
     96{
     97
     98    return FALSE;
     99}
  • trunk/src/comctl32/imagelist.c

    r1788 r2126  
    1 /* $Id: imagelist.c,v 1.9 1999-11-21 11:04:36 achimha Exp $ */
     1/* $Id: imagelist.c,v 1.10 1999-12-18 20:56:58 achimha Exp $ */
    22/*
    33 *  ImageList implementation
     
    3030*/
    3131
    32 /* WINE 990923 level */
     32/* WINE 991212 level */
    3333
    3434/* This must be defined because the HIMAGELIST type is just a pointer
     
    4242#include "commctrl.h"
    4343#include "comctl32.h"
     44#include "winerror.h"
    4445
    4546#define _MAX(a,b) (((a)>(b))?(a):(b))
     
    19101911HIMAGELIST WINAPI ImageList_Read (PVOID pstm)
    19111912{
     1913//    HRESULT errCode;
     1914//    ULONG ulRead;
     1915//    ILHEAD ilHead;
     1916//    HIMAGELIST himl;
     1917
     1918
    19121919    dprintf(("ImageList_Read empty stub!\n"));
    19131920
    1914     return NULL;
     1921//    errCode = IStream_Read (pstm, &ilHead, sizeof(ILHEAD), &ulRead);
     1922//    if (errCode != S_OK)
     1923//    return NULL;
     1924
     1925    FIXME("Magic: 0x%x\n", ilHead.usMagic);
     1926
     1927//    himl = ImageList_Create (32, 32, ILD_NORMAL, 2, 2);
     1928
     1929//    return himl;
     1930  return 0;
    19151931}
    19161932
     
    23952411        BitBlt (hdcBitmap, 0, 0, nCopyCount * himl->cx, himl->cy,
    23962412                  hdcImageList, 0, 0, SRCCOPY);
    2397 
     2413#if 0
    23982414        /* delete 'empty' image space */
    23992415        SetBkColor (hdcBitmap, RGB(255, 255, 255));
     
    24012417        PatBlt (hdcBitmap,  nCopyCount * himl->cx, 0,
    24022418                  (nNewCount - nCopyCount) * himl->cx, himl->cy, BLACKNESS);
    2403 
     2419#endif
    24042420        DeleteObject (himl->hbmImage);
    24052421        himl->hbmImage = hbmNewBitmap;
     
    24202436            BitBlt (hdcBitmap, 0, 0, nCopyCount * himl->cx, himl->cy,
    24212437                      hdcImageList, 0, 0, SRCCOPY);
    2422 
     2438#if 0
    24232439            /* delete 'empty' image space */
    24242440            SetBkColor (hdcBitmap, RGB(255, 255, 255));
     
    24262442            PatBlt (hdcBitmap,  nCopyCount * himl->cx, 0,
    24272443                      (nNewCount - nCopyCount) * himl->cx, himl->cy, BLACKNESS);
    2428 
     2444#endif
    24292445            DeleteObject (himl->hbmMask);
    24302446            himl->hbmMask = hbmNewBitmap;
  • trunk/src/comctl32/listview.c

    r1775 r2126  
    1919 *
    2020 * Data structure:
    21  *   LISTVIEW_SetItemCount : empty stub
     21 *   LISTVIEW_SetItemCount : not completed
    2222 *
    2323 * Unicode:
     
    3434 *   LISTVIEW_GetISearchString : not implemented
    3535 *   LISTVIEW_GetBkImage : not implemented
    36  *   LISTVIEW_GetColumnOrderArray : not implemented
    37  *   LISTVIEW_SetColumnOrderArray : not implemented
     36 *   LISTVIEW_GetColumnOrderArray : simple hack only
     37 *   LISTVIEW_SetColumnOrderArray : simple hack only
    3838 *   LISTVIEW_Arrange : empty stub
    3939 *   LISTVIEW_ApproximateViewRect : incomplete
     
    4343 */
    4444
    45 /* WINE 991114 level */
     45/* WINE 991212 level */
    4646
    4747#include <string.h>
     
    20382038  nLast = nItem + LISTVIEW_GetCountPerColumn(hwnd) + 1;
    20392039  nLast = min(nLast, GETITEMCOUNT(infoPtr));
     2040
     2041//AH required for Odin?
     2042#if 0
     2043  /* send cache hint notification */
     2044  if (GetWindowLongA(hwnd,GWL_STYLE) & LVS_OWNERDATA)
     2045  {
     2046    NMLVCACHEHINT nmlv;
     2047
     2048    nmlv.hdr.hwndFrom = hwnd;
     2049    nmlv.hdr.idFrom = GetWindowLongA(hwnd,GWL_ID);
     2050    nmlv.hdr.code = LVN_ODCACHEHINT;
     2051    nmlv.iFrom = nItem;
     2052    nmlv.iTo   = nLast;
     2053
     2054    SendMessageA(GetParent(hwnd), WM_NOTIFY, (WPARAM)nmlv.hdr.idFrom,
     2055                 (LPARAM)&nmlv);
     2056  }
     2057#endif
     2058
    20402059  for (; nItem < nLast; nItem++)
    20412060  {
     
    33323351
    33333352/* LISTVIEW_GetColumnW */
    3334 /* LISTVIEW_GetColumnOrderArray */
     3353
     3354static LRESULT LISTVIEW_GetColumnOrderArray(HWND hwnd, INT iCount, LPINT lpiArray)
     3355{
     3356/*  LISTVIEW_INFO *infoPtr = (LISTVIEW_INFO *)GetWindowLongA(hwnd, 0); */
     3357    INT i;
     3358
     3359    if (!lpiArray)
     3360        return FALSE;
     3361
     3362    /* little hack */
     3363    for (i = 0; i < iCount; i++)
     3364        lpiArray[i] = i;
     3365
     3366    return TRUE;
     3367}
    33353368
    33363369/***
     
    35733606              }
    35743607              strncpy(lpLVItem->pszText, dispInfo.item.pszText, lpLVItem->cchTextMax);
     3608              lpLVItem->pszText[lpLVItem->cchTextMax-1]='\0';
    35753609            }
    35763610            else if (lpLVItem->mask & LVIF_TEXT)
    35773611            {
    35783612              strncpy(lpLVItem->pszText, lpItem->pszText, lpLVItem->cchTextMax);
     3613              lpLVItem->pszText[lpLVItem->cchTextMax-1]='\0';
    35793614            }
    35803615
     
    36683703              }
    36693704              strncpy(lpLVItem->pszText, dispInfo.item.pszText, lpLVItem->cchTextMax);
     3705              lpLVItem->pszText[lpLVItem->cchTextMax-1]='\0';
    36703706            }
    36713707            else if (lpLVItem->mask & LVIF_TEXT)
    36723708            {
    36733709              strncpy(lpLVItem->pszText, lpSubItem->pszText, lpLVItem->cchTextMax);
     3710              lpLVItem->pszText[lpLVItem->cchTextMax-1]='\0';
    36743711            }
    36753712          }
     
    51255162
    51265163/* LISTVIEW_SetColumnW */
    5127 /* LISTVIEW_SetColumnOrderArray */
     5164
     5165/***
     5166 * DESCRIPTION:
     5167 * Sets the column order array
     5168 *
     5169 * PARAMETERS:
     5170 * [I] HWND : window handle
     5171 * [I] INT : number of elements in column order array
     5172 * [I] INT : pointer to column order array
     5173 *
     5174 * RETURN:
     5175 *   SUCCESS : TRUE
     5176 *   FAILURE : FALSE
     5177 */
     5178static LRESULT LISTVIEW_SetColumnOrderArray(HWND hwnd, INT iCount, LPINT lpiArray)
     5179{
     5180/*  LISTVIEW_INFO *infoPtr = (LISTVIEW_INFO *)GetWindowLongA(hwnd, 0); */
     5181
     5182//    FIXME("iCount %d lpiArray %p\n", iCount, lpiArray);
     5183
     5184    if (!lpiArray)
     5185        return FALSE;
     5186
     5187    return TRUE;
     5188}
    51285189
    51295190/***
     
    53185379 * PARAMETER(S):
    53195380 * [I] HWND : window handle
    5320  * [I] INT : item count (prjected number of items)
     5381 * [I] INT : item count (projected number of items)
    53215382 * [I] DWORD : update flags
    53225383 *
     
    53285389{
    53295390  LISTVIEW_INFO *infoPtr = (LISTVIEW_INFO*)GetWindowLongA(hwnd, 0);
     5391
    53305392//  FIXME("(%d %08lx)empty stub!\n", nItems, dwFlags);
     5393
    53315394  if (nItems == 0)
    53325395    return LISTVIEW_DeleteAllItems (hwnd);
     5396
     5397  if (GetWindowLongA(hwnd, GWL_STYLE) & LVS_OWNERDATA)
     5398  {
     5399//    FIXME("LVS_OWNERDATA is set!\n");
     5400  }
     5401  else
     5402  {
    53335403  if (nItems > GETITEMCOUNT(infoPtr))
    53345404{
    53355405    /* append items */
    53365406//    FIXME("append items\n");
     5407
    53375408  }
    53385409  else if (nItems < GETITEMCOUNT(infoPtr))
     
    53405411    /* remove items */
    53415412//    FIXME("remove items\n");
    5342   }
     5413
     5414  }
     5415  }
     5416
    53435417  return TRUE;
    53445418}
     
    69507024
    69517025  case LVM_GETCOLUMNORDERARRAY:
    6952     //FIXME("Unimplemented msg LVM_GETCOLUMNORDERARRAY\n");
    6953     return 0;
    6954 
     7026    return LISTVIEW_GetColumnOrderArray(hwnd, (INT)wParam, (LPINT)lParam);
    69557027
    69567028  case LVM_GETCOLUMNWIDTH:
     
    70827154
    70837155  case LVM_SETCOLUMNORDERARRAY:
    7084     //FIXME("Unimplemented msg LVM_SETCOLUMNORDERARRAY\n");
    7085     return 0;
     7156    return LISTVIEW_SetColumnOrderArray(hwnd, (INT)wParam, (LPINT)lParam);
    70867157
    70877158  case LVM_SETCOLUMNWIDTH:
  • trunk/src/comctl32/propsheet.c

    r1861 r2126  
    1 /* $Id: propsheet.c,v 1.16 1999-11-27 18:14:37 achimha Exp $ */
     1/* $Id: propsheet.c,v 1.17 1999-12-18 20:56:59 achimha Exp $ */
    22/*
    33 * Property Sheets
     
    1313 */
    1414
    15 /* WINE 991114 level */
     15/* WINE 991212 level */
    1616
    1717/* CB: Odin problems:
     
    2323#include "commctrl.h"
    2424#include "prsht.h"
     25#include "dialog.h"
     26#include "win.h"
    2527#include "winnls.h"
    2628#include "comctl32.h"
    27 
     29#include "heap.h"
    2830
    2931/******************************************************************************
     
    4143typedef struct tagPropPageInfo
    4244{
    43   int index; /* corresponds to the index in ppshheader->ppsp */
    4445  HPROPSHEETPAGE hpage; /* to keep track of pages not passed to PropertySheet */
    4546  HWND hwndPage;
     
    4849  BOOL hasHelp;
    4950  BOOL useCallback;
     51  BOOL hasIcon;
    5052} PropPageInfo;
    5153
     
    5557  int nPages;
    5658  int active_page;
    57   LPCPROPSHEETHEADERA ppshheader;
     59  LPPROPSHEETHEADERA ppshheader;
    5860  BOOL isModeless;
    5961  BOOL hasHelp;
     
    6264  BOOL restartWindows;
    6365  BOOL rebootSystem;
     66  BOOL activeValid;
    6467  PropPageInfo* proppage;
    6568  int x;
     
    8487#define MAX_CAPTION_LENGTH 255
    8588#define MAX_TABTEXT_LENGTH 255
    86 
     89#define MAX_BUTTONTEXT_LENGTH 64
    8790
    8891/******************************************************************************
     
    102105static int PROPSHEET_CreatePage(HWND hwndParent, int index,
    103106                                const PropSheetInfo * psInfo,
    104                                 LPCPROPSHEETPAGEA ppshpage,
    105                                 BOOL showPage);
     107                                LPPROPSHEETPAGEA ppshpage);
    106108static BOOL PROPSHEET_ShowPage(HWND hwndDlg, int index, PropSheetInfo * psInfo);
    107109static PADDING_INFO PROPSHEET_GetPaddingInfo(HWND hwndDlg);
     
    109111static BOOL PROPSHEET_Next(HWND hwndDlg);
    110112static BOOL PROPSHEET_Finish(HWND hwndDlg);
    111 static BOOL PROPSHEET_Apply(HWND hwndDlg);
    112 static void PROPSHEET_Cancel(HWND hwndDlg);
     113static BOOL PROPSHEET_Apply(HWND hwndDlg, LPARAM lParam);
     114static void PROPSHEET_Cancel(HWND hwndDlg, LPARAM lParam);
    113115static void PROPSHEET_Help(HWND hwndDlg);
    114116static void PROPSHEET_Changed(HWND hwndDlg, HWND hwndDirtyPage);
     
    123125static LRESULT PROPSHEET_QuerySiblings(HWND hwndDlg,
    124126                                       WPARAM wParam, LPARAM lParam);
    125 static LPCPROPSHEETPAGEA PROPSHEET_GetPSPPage(const PropSheetInfo * psInfo,
    126                                               int index);
    127127static BOOL PROPSHEET_AddPage(HWND hwndDlg,
    128128                              HPROPSHEETPAGE hpage);
     
    135135static void PROPSHEET_SetWizButtons(HWND hwndDlg, DWORD dwFlags);
    136136static PADDING_INFO PROPSHEET_GetPaddingInfoWizard(HWND hwndDlg);
     137static BOOL PROPSHEET_IsDialogMessage(HWND hwnd, LPMSG lpMsg);
     138static INT PROPSHEET_DoDialogBox( HWND hwnd, HWND owner);
    137139
    138140BOOL WINAPI
     
    155157  psInfo->isModeless = dwFlags & PSH_MODELESS;
    156158  psInfo->ppshheader = lppsh;
     159  psInfo->ppshheader = COMCTL32_Alloc(sizeof(PROPSHEETHEADERA));
     160  *psInfo->ppshheader = *lppsh;
     161
     162  if (HIWORD(lppsh->pszCaption))
     163     psInfo->ppshheader->pszCaption = HEAP_strdupA( GetProcessHeap(),
     164                                               0, lppsh->pszCaption );
     165
    157166  psInfo->nPages = lppsh->nPages;
    158167
     
    164173  else
    165174    psInfo->active_page = lppsh->u2.nStartPage;
     175
     176  if (psInfo->active_page < 0 || psInfo->active_page >= psInfo->nPages)
     177     psInfo->active_page = 0;
    166178
    167179  psInfo->restartWindows = FALSE;
    168180  psInfo->rebootSystem = FALSE;
    169181  psInfo->hImageList = 0;
     182  psInfo->activeValid = FALSE;
    170183
    171184  return TRUE;
     
    187200  int width, height;
    188201
    189   if (psInfo->ppshheader->dwFlags & PSH_PROPSHEETPAGE)
    190     psInfo->proppage[index].hpage = 0;
     202  psInfo->proppage[index].hpage = (HPROPSHEETPAGE)lppsp;
    191203  psInfo->proppage[index].hwndPage = 0;
    192204  psInfo->proppage[index].isDirty = FALSE;
     
    198210  psInfo->proppage[index].useCallback = dwFlags & PSP_USECALLBACK;
    199211  psInfo->proppage[index].hasHelp = dwFlags & PSP_HASHELP;
     212  psInfo->proppage[index].hasIcon = dwFlags & (PSP_USEHICON | PSP_USEICONID);
    200213
    201214  /* as soon as we have a page with the help flag, set the sheet flag on */
     
    320333      hIcon = lppsp->u2.hIcon;
    321334
    322     if (psInfo->hImageList == 0)
    323       psInfo->hImageList = ImageList_Create(icon_cx, icon_cy, ILC_COLOR, 1, 1);
    324 
    325     ImageList_AddIcon(psInfo->hImageList, hIcon);
     335  if ( hIcon )
     336    {
     337      if (psInfo->hImageList == 0 )
     338        psInfo->hImageList = ImageList_Create(icon_cx, icon_cy, ILC_COLOR, 1, 1);
     339
     340      ImageList_AddIcon(psInfo->hImageList, hIcon);
     341    }
     342
    326343  }
    327344
    328345  return TRUE;
     346}
     347
     348/******************************************************************************
     349 *            PROPSHEET_DoDialogBox
     350 *
     351 * Copied from windows/dialog.c:DIALOG_DoDialogBox
     352 */
     353static INT PROPSHEET_DoDialogBox( HWND hwnd, HWND owner)
     354{
     355   WND * wndPtr;
     356   DIALOGINFO * dlgInfo;
     357   MSG msg;
     358   INT retval;
     359
     360//AH: that WINE internal - design violation!!1
     361#if 0
     362     /* Owner must be a top-level window */
     363   owner = WIN_GetTopParent( owner );
     364   if (!(wndPtr = WIN_FindWndPtr( hwnd ))) return -1;
     365   dlgInfo = (DIALOGINFO *)wndPtr->wExtra;
     366
     367   if (!dlgInfo->flags & DF_END) /* was EndDialog called in WM_INITDIALOG ? */
     368   {
     369       EnableWindow( owner, FALSE );
     370       ShowWindow( hwnd, SW_SHOW );
     371       while (GetMessageA(&msg, 0, 0, 0))
     372       {
     373           if (!PROPSHEET_IsDialogMessage( hwnd, &msg))
     374           {
     375               TranslateMessage( &msg );
     376               DispatchMessageA( &msg );
     377           }
     378           if (dlgInfo->flags & DF_END) break;
     379       }
     380       EnableWindow( owner, TRUE );
     381   }
     382   retval = dlgInfo->idResult;
     383
     384   WIN_ReleaseWndPtr(wndPtr);
     385#endif
     386   DestroyWindow( hwnd );
     387   return retval;
    329388}
    330389
     
    335394 */
    336395
    337 //AH: WINE 990923 not merged due to changes from CB
     396//AH: WINE 9912123 not merged due to design violation (internal WINE structures used)
    338397
    339398BOOL PROPSHEET_CreateDialog(PropSheetInfo* psInfo)
    340399{
     400#if 0
    341401  LRESULT ret;
    342402  LPCVOID template;
     403  LPVOID temp = 0;
    343404  HRSRC hRes;
    344 
    345   if (psInfo->useCallback)
    346     (*(psInfo->ppshheader->pfnCallback))(0, PSCB_PRECREATE, (LPARAM)template);
    347 
    348   if (!(hRes = FindResourceA(COMCTL32_hModule,
    349                             MAKEINTRESOURCEA(IDD_PROPSHEET),
     405  DWORD resSize;
     406  WORD resID = IDD_PROPSHEET;
     407
     408  if (psInfo->ppshheader->dwFlags & PSH_WIZARD)
     409    resID = IDD_WIZARD;
     410
     411  if(!(hRes = FindResourceA(COMCTL32_hModule,
     412                            MAKEINTRESOURCEA(resID),
    350413                            RT_DIALOGA)))
    351414    return FALSE;
    352415
    353   if (!(template = (LPVOID)LoadResource(COMCTL32_hModule, hRes)))
     416  if(!(template = (LPVOID)LoadResource(COMCTL32_hModule, hRes)))
    354417    return FALSE;
    355418
     419  /*
     420   * Make a copy of the dialog template.
     421   */
     422  resSize = SizeofResource(COMCTL32_hModule, hRes);
     423
     424  temp = COMCTL32_Alloc(resSize);
     425
     426  if (!temp)
     427    return FALSE;
     428
     429  memcpy(temp, template, resSize);
     430
    356431  if (psInfo->useCallback)
    357     (*(psInfo->ppshheader->pfnCallback))(0, PSCB_PRECREATE, (LPARAM)template);
     432    (*(psInfo->ppshheader->pfnCallback))(0, PSCB_PRECREATE, (LPARAM)temp);
     433
     434  ret = CreateDialogIndirectParamA(psInfo->ppshheader->hInstance,
     435                                     (LPDLGTEMPLATEA) temp,
     436                                     psInfo->ppshheader->hwndParent,
     437                                     (DLGPROC) PROPSHEET_DialogProc,
     438                                     (LPARAM)psInfo);
     439
     440  if (!(psInfo->ppshheader->dwFlags & PSH_MODELESS))
     441     ret = PROPSHEET_DoDialogBox((HWND)ret, psInfo->ppshheader->hwndParent);
     442 
     443  COMCTL32_Free(temp);
     444
     445  return ret;
     446#endif
     447  LRESULT ret;
     448  LPCVOID template;
     449  LPVOID temp = 0;
     450  HRSRC hRes;
     451  DWORD resSize;
     452  WORD resID = IDD_PROPSHEET;
     453
     454  if (psInfo->ppshheader->dwFlags & PSH_WIZARD)
     455    resID = IDD_WIZARD;
     456
     457  if(!(hRes = FindResourceA(COMCTL32_hModule,
     458                            MAKEINTRESOURCEA(resID),
     459                            RT_DIALOGA)))
     460    return FALSE;
     461
     462  if(!(template = (LPVOID)LoadResource(COMCTL32_hModule, hRes)))
     463    return FALSE;
     464
     465  /*
     466   * Make a copy of the dialog template.
     467   */
     468  resSize = SizeofResource(COMCTL32_hModule, hRes);
     469
     470  temp = COMCTL32_Alloc(resSize);
     471
     472  if (!temp)
     473    return FALSE;
     474
     475  memcpy(temp, template, resSize);
     476
     477  if (psInfo->useCallback)
     478    (*(psInfo->ppshheader->pfnCallback))(0, PSCB_PRECREATE, (LPARAM)temp);
    358479
    359480  if (psInfo->ppshheader->dwFlags & PSH_MODELESS)
    360481    ret = CreateDialogIndirectParamA(psInfo->ppshheader->hInstance,
    361                                      (LPDLGTEMPLATEA) template,
     482                                     (LPDLGTEMPLATEA) temp,
    362483                                     psInfo->ppshheader->hwndParent,
    363484                                     (DLGPROC) PROPSHEET_DialogProc,
     
    365486  else
    366487    ret = DialogBoxIndirectParamA(psInfo->ppshheader->hInstance,
    367                                   (LPDLGTEMPLATEA) template,
     488                                  (LPDLGTEMPLATEA) temp,
    368489                                  psInfo->ppshheader->hwndParent,
    369490                                  (DLGPROC) PROPSHEET_DialogProc,
    370491                                  (LPARAM)psInfo);
     492
     493  COMCTL32_Free(temp);
    371494
    372495  return ret;
     
    840963  TCITEMA item;
    841964  int i, nTabs;
     965  int iImage = 0;
    842966  char tabtext[MAX_TABTEXT_LENGTH] = "Tab text";
    843967
     
    853977  if (psInfo->hImageList)
    854978  {
    855     item.mask |= TCIF_IMAGE;
    856979    SendMessageA(hwndTabCtrl, TCM_SETIMAGELIST, 0, (LPARAM)psInfo->hImageList);
    857980  }
     
    859982  for (i = 0; i < nTabs; i++)
    860983  {
    861     item.iImage = i;
     984    if ( psInfo->proppage[i].hasIcon )
     985    {
     986      item.mask |= TCIF_IMAGE;
     987      item.iImage = iImage++;
     988    }
     989    else
     990    {
     991      item.mask &= ~TCIF_IMAGE;
     992    }
    862993
    863994    WideCharToMultiByte(CP_ACP, 0,
     
    8791010                                int index,
    8801011                                const PropSheetInfo * psInfo,
    881                                 LPCPROPSHEETPAGEA ppshpage,
    882                                 BOOL showPage)
     1012                                LPPROPSHEETPAGEA ppshpage)
    8831013{
    8841014  DLGTEMPLATE* pTemplate;
     
    9151045  }
    9161046
    917   if (((MyDLGTEMPLATEEX*)pTemplate)->signature == 0xFFFF)
    918   {
    919     ((MyDLGTEMPLATEEX*)pTemplate)->style |= WS_CHILD;
     1047 if (((MyDLGTEMPLATEEX*)pTemplate)->signature == 0xFFFF)
     1048  {
     1049    ((MyDLGTEMPLATEEX*)pTemplate)->style |= WS_CHILD | DS_CONTROL;
    9201050    ((MyDLGTEMPLATEEX*)pTemplate)->style &= ~DS_MODALFRAME;
    9211051    ((MyDLGTEMPLATEEX*)pTemplate)->style &= ~WS_CAPTION;
     
    9231053    ((MyDLGTEMPLATEEX*)pTemplate)->style &= ~WS_POPUP;
    9241054    ((MyDLGTEMPLATEEX*)pTemplate)->style &= ~WS_DISABLED;
     1055    ((MyDLGTEMPLATEEX*)pTemplate)->style &= ~WS_VISIBLE;
    9251056  }
    9261057  else
    9271058  {
    928     pTemplate->style |= WS_CHILD;
     1059    pTemplate->style |= WS_CHILD | DS_CONTROL;
    9291060    pTemplate->style &= ~DS_MODALFRAME;
    9301061    pTemplate->style &= ~WS_CAPTION;
     
    9321063    pTemplate->style &= ~WS_POPUP;
    9331064    pTemplate->style &= ~WS_DISABLED;
     1065    pTemplate->style &= ~WS_VISIBLE;
    9341066  }
    9351067
     
    9721104               0, 0, SWP_NOSIZE);
    9731105
    974   if (showPage)
    975   {
    976     NMHDR hdr;
    977 
    978     hdr.hwndFrom = hwndParent;
    979     hdr.idFrom = GetWindowLongA(hwndParent,GWL_ID);
    980     hdr.code = PSN_SETACTIVE;
    981 
    982     /*
    983      * Send the notification before showing the page.
    984      */
    985     SendMessageA(hwndPage, WM_NOTIFY, 0, (LPARAM) &hdr);
    986 
    987     ShowWindow(hwndPage, SW_SHOW);
    988   }
    989   else
    990     ShowWindow(hwndPage, SW_HIDE);
    991 
    9921106  return TRUE;
    9931107}
     
    10011115{
    10021116  if (index == psInfo->active_page)
     1117    {
     1118      if (GetTopWindow(hwndDlg) != psInfo->proppage[index].hwndPage)
     1119          SetWindowPos(psInfo->proppage[index].hwndPage, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
    10031120    return TRUE;
    1004 
    1005   ShowWindow(psInfo->proppage[psInfo->active_page].hwndPage, SW_HIDE);
    1006 
    1007   if (psInfo->proppage[index].hwndPage != 0)
    1008     ShowWindow(psInfo->proppage[index].hwndPage, SW_SHOW);
    1009   else
    1010   {
    1011     LPCPROPSHEETPAGEA ppshpage = PROPSHEET_GetPSPPage(psInfo, index);
    1012     PROPSHEET_CreatePage(hwndDlg, index, psInfo, ppshpage, TRUE);
     1121    }
     1122
     1123  if (psInfo->active_page != -1)
     1124     ShowWindow(psInfo->proppage[psInfo->active_page].hwndPage, SW_HIDE);
     1125
     1126  if (psInfo->proppage[index].hwndPage == 0)
     1127  {
     1128     LPCPROPSHEETPAGEA ppshpage;
     1129     PSHNOTIFY psn;
     1130
     1131     ppshpage = (LPCPROPSHEETPAGEA)psInfo->proppage[index].hpage;
     1132     PROPSHEET_CreatePage(hwndDlg, index, psInfo, ppshpage);
     1133
     1134     psn.hdr.hwndFrom = hwndDlg;
     1135     psn.hdr.code     = PSN_SETACTIVE;
     1136     psn.hdr.idFrom   = 0;
     1137     psn.lParam       = 0;
     1138
     1139     /* Send the notification before showing the page. */
     1140     SendMessageA(psInfo->proppage[index].hwndPage,
     1141                  WM_NOTIFY, 0, (LPARAM) &psn);
     1142
     1143     /*
     1144      * TODO: check return value.
     1145      */
     1146  }
     1147
     1148  ShowWindow(psInfo->proppage[index].hwndPage, SW_SHOW);
     1149
     1150  if (!(psInfo->ppshheader->dwFlags & PSH_WIZARD))
     1151  {
     1152     HWND hwndTabCtrl;
     1153
     1154     /* Synchronize current selection with tab control */
     1155     hwndTabCtrl = GetDlgItem(hwndDlg, IDC_TABCONTROL);
     1156     SendMessageA(hwndTabCtrl, TCM_SETCURSEL, index, 0);
    10131157  }
    10141158
    10151159  psInfo->active_page = index;
     1160  psInfo->activeValid = TRUE;
    10161161
    10171162  return TRUE;
     
    10241169{
    10251170  BOOL res;
    1026   NMHDR hdr;
     1171  PSHNOTIFY psn;
    10271172  HWND hwndPage;
    1028   HWND hwndBack = GetDlgItem(hwndDlg, IDC_BACK_BUTTON);
    10291173  PropSheetInfo* psInfo = (PropSheetInfo*) GetPropA(hwndDlg,
    10301174                                                    PropSheetInfoStr);
    10311175
    1032   if (psInfo->active_page <= 0)
     1176  if (psInfo->active_page < 0)
    10331177     return FALSE;
    10341178
    1035   hdr.hwndFrom = hwndDlg;
    1036   hdr.idFrom = GetWindowLongA(hwndDlg,GWL_ID);
    1037   hdr.code = PSN_WIZBACK;
    1038 
     1179  psn.hdr.code     = PSN_WIZBACK;
     1180  psn.hdr.hwndFrom = hwndDlg;
     1181  psn.hdr.idFrom   = 0;
     1182  psn.lParam       = 0;
     1183 
    10391184  hwndPage = psInfo->proppage[psInfo->active_page].hwndPage;
    10401185
    1041   if (SendMessageA(hwndPage, WM_NOTIFY, 0, (LPARAM) &hdr) == -1)
     1186  if (SendMessageA(hwndPage, WM_NOTIFY, 0, (LPARAM) &psn) == -1)
    10421187    return FALSE;
    10431188
    1044   res = PROPSHEET_CanSetCurSel(hwndDlg);
    1045   if(res != FALSE)
    1046   {
    1047     res = PROPSHEET_SetCurSel(hwndDlg, psInfo->active_page - 1, 0);
    1048   }
    1049 
    1050   /* if we went to page 0, disable Back button */
    1051   if (res && (psInfo->active_page == 0))
    1052     EnableWindow(hwndBack, FALSE);
     1189  if (psInfo->active_page > 0)
     1190  {
     1191     res = PROPSHEET_CanSetCurSel(hwndDlg);
     1192     if(res != FALSE)
     1193     {
     1194       res = PROPSHEET_SetCurSel(hwndDlg, psInfo->active_page - 1, 0);
     1195     }
     1196  }
    10531197
    10541198  return TRUE;
     
    10601204static BOOL PROPSHEET_Next(HWND hwndDlg)
    10611205{
    1062   NMHDR hdr;
     1206  PSHNOTIFY psn;
    10631207  HWND hwndPage;
    10641208  LRESULT msgResult = 0;
     
    10661210                                                    PropSheetInfoStr);
    10671211
    1068   if (psInfo->active_page < 0 || psInfo->active_page == psInfo->nPages - 1)
     1212  if (psInfo->active_page < 0)
    10691213     return FALSE;
    10701214
    1071   hdr.hwndFrom = hwndDlg;
    1072   hdr.idFrom = GetWindowLongA(hwndDlg,GWL_ID);
    1073   hdr.code = PSN_WIZNEXT;
    1074 
     1215  psn.hdr.code     = PSN_WIZNEXT;
     1216  psn.hdr.hwndFrom = hwndDlg;
     1217  psn.hdr.idFrom   = 0;
     1218  psn.lParam       = 0;
     1219 
    10751220  hwndPage = psInfo->proppage[psInfo->active_page].hwndPage;
    10761221
    1077   msgResult = SendMessageA(hwndPage, WM_NOTIFY, 0, (LPARAM) &hdr);
    1078 
    1079 //  TRACE("msg result %ld\n", msgResult);
     1222  msgResult = SendMessageA(hwndPage, WM_NOTIFY, 0, (LPARAM) &psn);
     1223
     1224  TRACE("msg result %ld\n", msgResult);
    10801225
    10811226  if (msgResult == -1)
     
    10951240static BOOL PROPSHEET_Finish(HWND hwndDlg)
    10961241{
    1097   NMHDR hdr;
     1242  PSHNOTIFY psn;
    10981243  HWND hwndPage;
    10991244  LRESULT msgResult = 0;
     
    11041249     return FALSE;
    11051250
    1106   hdr.hwndFrom = hwndDlg;
    1107   hdr.idFrom = GetWindowLongA(hwndDlg,GWL_ID);
    1108   hdr.code = PSN_WIZFINISH;
    1109 
     1251  psn.hdr.code     = PSN_WIZFINISH;
     1252  psn.hdr.hwndFrom = hwndDlg;
     1253  psn.hdr.idFrom   = 0;
     1254  psn.lParam       = 0;
     1255 
    11101256  hwndPage = psInfo->proppage[psInfo->active_page].hwndPage;
    11111257
    1112   msgResult = SendMessageA(hwndPage, WM_NOTIFY, 0, (LPARAM) &hdr);
    1113 
    1114 //  TRACE("msg result %ld\n", msgResult);
     1258  msgResult = SendMessageA(hwndPage, WM_NOTIFY, 0, (LPARAM) &psn);
     1259
     1260  TRACE("msg result %ld\n", msgResult);
    11151261
    11161262  if (msgResult != 0)
     
    11181264
    11191265  if (psInfo->isModeless)
    1120     psInfo->active_page = -1;
     1266    psInfo->activeValid = FALSE;
    11211267  else
    11221268    EndDialog(hwndDlg, TRUE);
     
    11281274 *            PROPSHEET_Apply
    11291275 */
    1130 static BOOL PROPSHEET_Apply(HWND hwndDlg)
     1276static BOOL PROPSHEET_Apply(HWND hwndDlg, LPARAM lParam)
    11311277{
    11321278  int i;
    1133   NMHDR hdr;
    11341279  HWND hwndPage;
     1280  PSHNOTIFY psn;
    11351281  LRESULT msgResult;
    11361282  PropSheetInfo* psInfo = (PropSheetInfo*) GetPropA(hwndDlg,
     
    11401286     return FALSE;
    11411287
    1142   hdr.hwndFrom = hwndDlg;
    1143   hdr.idFrom = GetWindowLongA(hwndDlg,GWL_ID);
     1288  psn.hdr.hwndFrom = hwndDlg;
     1289  psn.hdr.idFrom   = 0;
     1290  psn.lParam       = 0;
     1291 
    11441292
    11451293  /*
    11461294   * Send PSN_KILLACTIVE to the current page.
    11471295   */
    1148   hdr.code = PSN_KILLACTIVE;
     1296  psn.hdr.code = PSN_KILLACTIVE;
    11491297
    11501298  hwndPage = psInfo->proppage[psInfo->active_page].hwndPage;
    11511299
    1152   if (SendMessageA(hwndPage, WM_NOTIFY, 0, (LPARAM) &hdr) != FALSE)
     1300  if (SendMessageA(hwndPage, WM_NOTIFY, 0, (LPARAM) &psn) != FALSE)
    11531301    return FALSE;
    11541302
     
    11561304   * Send PSN_APPLY to all pages.
    11571305   */
    1158   hdr.code = PSN_APPLY;
    1159 
     1306  psn.hdr.code = PSN_APPLY;
     1307  psn.lParam   = lParam;
     1308 
    11601309  for (i = 0; i < psInfo->nPages; i++)
    11611310  {
    11621311    hwndPage = psInfo->proppage[i].hwndPage;
    1163     msgResult = SendMessageA(hwndPage, WM_NOTIFY, 0, (LPARAM) &hdr);
    1164 
    1165     if (msgResult == PSNRET_INVALID_NOCHANGEPAGE)
    1166       return FALSE;
     1312    if (hwndPage)
     1313    {
     1314       msgResult = SendMessageA(hwndPage, WM_NOTIFY, 0, (LPARAM) &psn);
     1315       if (msgResult == PSNRET_INVALID_NOCHANGEPAGE)
     1316          return FALSE;
     1317    }
     1318  }
     1319
     1320  if(lParam)
     1321  {
     1322     psInfo->activeValid = FALSE;
     1323  }
     1324  else if(psInfo->active_page >= 0)
     1325  {
     1326     psn.hdr.code = PSN_SETACTIVE;
     1327     psn.lParam   = 0;
     1328     hwndPage = psInfo->proppage[psInfo->active_page].hwndPage;
     1329     SendMessageA(hwndPage, WM_NOTIFY, 0, (LPARAM) &psn);
    11671330  }
    11681331
     
    11731336 *            PROPSHEET_Cancel
    11741337 */
    1175 static void PROPSHEET_Cancel(HWND hwndDlg)
     1338static void PROPSHEET_Cancel(HWND hwndDlg, LPARAM lParam)
    11761339{
    11771340  PropSheetInfo* psInfo = (PropSheetInfo*) GetPropA(hwndDlg,
    11781341                                                    PropSheetInfoStr);
    11791342  HWND hwndPage;
    1180   NMHDR hdr;
     1343  PSHNOTIFY psn;
     1344  int i;
    11811345
    11821346  if (psInfo->active_page < 0)
     
    11841348
    11851349  hwndPage = psInfo->proppage[psInfo->active_page].hwndPage;
    1186   hdr.hwndFrom = hwndDlg;
    1187   hdr.idFrom = GetWindowLongA(hwndDlg,GWL_ID);
    1188   hdr.code = PSN_QUERYCANCEL;
    1189 
    1190   if (SendMessageA(hwndPage, WM_NOTIFY, 0, (LPARAM) &hdr))
     1350  psn.hdr.code     = PSN_QUERYCANCEL;
     1351  psn.hdr.hwndFrom = hwndDlg;
     1352  psn.hdr.idFrom   = 0;
     1353  psn.lParam       = 0;
     1354 
     1355  if (SendMessageA(hwndPage, WM_NOTIFY, 0, (LPARAM) &psn))
    11911356    return;
    11921357
    1193   hdr.code = PSN_RESET;
    1194 
    1195   SendMessageA(hwndPage, WM_NOTIFY, 0, (LPARAM) &hdr);
     1358  psn.hdr.code = PSN_RESET;
     1359  psn.lParam   = lParam;
     1360 
     1361  for (i = 0; i < psInfo->nPages; i++)
     1362  {
     1363    hwndPage = psInfo->proppage[i].hwndPage;
     1364
     1365    if (hwndPage)
     1366       SendMessageA(hwndPage, WM_NOTIFY, 0, (LPARAM) &psn);
     1367  }
    11961368
    11971369  if (psInfo->isModeless)
    1198     psInfo->active_page = -1; /* makes PSM_GETCURRENTPAGEHWND return NULL */
     1370  {
     1371     /* makes PSM_GETCURRENTPAGEHWND return NULL */
     1372     psInfo->activeValid = FALSE;
     1373  }
    11991374  else
    12001375    EndDialog(hwndDlg, FALSE);
     
    12091384                                                    PropSheetInfoStr);
    12101385  HWND hwndPage;
    1211   NMHDR hdr;
     1386  PSHNOTIFY psn;
    12121387
    12131388  if (psInfo->active_page < 0)
     
    12151390
    12161391  hwndPage = psInfo->proppage[psInfo->active_page].hwndPage;
    1217   hdr.hwndFrom = hwndDlg;
    1218   hdr.idFrom = GetWindowLongA(hwndDlg,GWL_ID);
    1219   hdr.code = PSN_HELP;
    1220 
    1221   SendMessageA(hwndPage, WM_NOTIFY, 0, (LPARAM) &hdr);
     1392  psn.hdr.code     = PSN_HELP;
     1393  psn.hdr.hwndFrom = hwndDlg;
     1394  psn.hdr.idFrom   = 0;
     1395  psn.lParam       = 0;
     1396 
     1397  SendMessageA(hwndPage, WM_NOTIFY, 0, (LPARAM) &psn);
    12221398}
    12231399
     
    13321508                                                    PropSheetInfoStr);
    13331509  HWND hwndPage;
    1334   NMHDR hdr;
    1335 
    1336   if (!psInfo || psInfo->active_page < 0)
     1510  PSHNOTIFY psn;
     1511
     1512  if (!psInfo)
    13371513     return FALSE;
     1514
     1515  if (psInfo->active_page < 0)
     1516     return TRUE;
     1517
    13381518  /*
    13391519   * Notify the current page.
    13401520   */
    13411521  hwndPage = psInfo->proppage[psInfo->active_page].hwndPage;
    1342 
    1343   hdr.hwndFrom = hwndDlg;
    1344   hdr.idFrom = GetWindowLongA(hwndDlg,GWL_ID);
    1345   hdr.code = PSN_KILLACTIVE;
    1346 
    1347   return !SendMessageA(hwndPage, WM_NOTIFY, 0, (LPARAM) &hdr);
     1522  psn.hdr.code     = PSN_KILLACTIVE;
     1523  psn.hdr.hwndFrom = hwndDlg;
     1524  psn.hdr.idFrom   = 0;
     1525  psn.lParam       = 0;
     1526
     1527  return !SendMessageA(hwndPage, WM_NOTIFY, 0, (LPARAM) &psn);
    13481528}
    13491529
     
    13591539  HWND hwndPage;
    13601540  HWND hwndHelp  = GetDlgItem(hwndDlg, IDHELP);
    1361   NMHDR hdr;
    1362 
    1363   if (psInfo->active_page < 0)
    1364      return FALSE;
    1365 
    1366   hwndPage = psInfo->proppage[psInfo->active_page].hwndPage;
    1367 
    1368   hdr.hwndFrom = hwndDlg;
    1369   hdr.idFrom = GetWindowLongA(hwndDlg,GWL_ID);
    1370   /*
    1371    * hpage takes precedence over index.
    1372    */
     1541
     1542  /* hpage takes precedence over index */
    13731543  if (hpage != NULL)
    13741544    index = PROPSHEET_GetPageIndex(hpage, psInfo);
     
    13891559  {
    13901560    int result;
    1391     hdr.code = PSN_SETACTIVE;
    1392 
    1393     result = SendMessageA(hwndPage, WM_NOTIFY, 0, (LPARAM) &hdr);
     1561    PSHNOTIFY psn;
     1562
     1563    psn.hdr.code     = PSN_SETACTIVE;
     1564    psn.hdr.hwndFrom = hwndDlg;
     1565    psn.hdr.idFrom   = 0;
     1566    psn.lParam       = 0;
     1567
     1568    result = SendMessageA(hwndPage, WM_NOTIFY, 0, (LPARAM) &psn);
     1569
    13941570    /*
    1395      * TODO: check return value.
     1571     * TODO: check return value. 
    13961572     */
    13971573  }
     
    14871663}
    14881664
    1489 /******************************************************************************
    1490  *            PROPSHEET_GetPSPPage
    1491  */
    1492 static LPCPROPSHEETPAGEA PROPSHEET_GetPSPPage(const PropSheetInfo * psInfo,
    1493                                               int index)
    1494 {
    1495   BOOL usePSP = psInfo->ppshheader->dwFlags & PSH_PROPSHEETPAGE;
    1496   LPCPROPSHEETPAGEA lppsp;
    1497   int realIndex = psInfo->proppage[index].index;
    1498 
    1499   if (usePSP)
    1500   {
    1501     BYTE* pByte;
    1502 
    1503     lppsp = psInfo->ppshheader->u3.ppsp;
    1504 
    1505     pByte = (BYTE*) lppsp;
    1506 
    1507     pByte += (lppsp->dwSize * realIndex);
    1508     lppsp = (LPCPROPSHEETPAGEA)pByte;
    1509   }
    1510   else
    1511     lppsp = (LPCPROPSHEETPAGEA) psInfo->ppshheader->u3.phpage[realIndex];
    1512 
    1513   return lppsp;
    1514 }
    15151665
    15161666/******************************************************************************
     
    15351685
    15361686  PROPSHEET_CollectPageInfo(ppsp, psInfo, psInfo->nPages);
    1537   psInfo->proppage[psInfo->nPages].index = -1;
    15381687  psInfo->proppage[psInfo->nPages].hpage = hpage;
    15391688
    1540   /*
    1541    * Create the page but don't show it.
    1542    */
    1543   PROPSHEET_CreatePage(hwndDlg, psInfo->nPages, psInfo, ppsp, FALSE);
     1689  if (ppsp->dwFlags & PSP_PREMATURE)
     1690  {
     1691     /* Create the page but don't show it */
     1692     PROPSHEET_CreatePage(hwndDlg, psInfo->nPages, psInfo, ppsp);
     1693  }
    15441694
    15451695  /*
     
    15581708
    15591709  psInfo->nPages++;
     1710
     1711  /* If it is the only page - show it */
     1712  if(psInfo->nPages == 1)
     1713     PROPSHEET_ShowPage(hwndDlg, 0, psInfo);
    15601714
    15611715  return TRUE;
     
    15751729
    15761730  if (!psInfo) {
    1577 //    FIXME("No psInfo for propertysheet at windows 0x%04x, returning FALSE...\n", hwndDlg);
    15781731    return FALSE;
    15791732  }
     
    15891742  /* Make shure that index is within range */
    15901743  if (index < 0 || index >= psInfo->nPages)
    1591     {
    1592 //      TRACE("Could not find page to remove!\n");
     1744  {
     1745      TRACE("Could not find page to remove!\n");
    15931746      return FALSE;
    1594     }
    1595 
    1596 //  TRACE("total pages %d removing page %d active page %d\n",
    1597 //        psInfo->nPages, index, psInfo->active_page);
     1747  }
     1748
     1749  TRACE("total pages %d removing page %d active page %d\n",
     1750        psInfo->nPages, index, psInfo->active_page);
    15981751  /*
    15991752   * Check if we're removing the active page.
     
    16161769    else
    16171770    {
    1618 //      TRACE("Removing the only page, close the dialog!\n");
    1619 
    1620       if (psInfo->isModeless)
    1621         psInfo->active_page = -1;
    1622       else
    1623         EndDialog(hwndDlg, FALSE);
    1624 
    1625       return TRUE;
     1771      psInfo->active_page = -1;
     1772      if (!psInfo->isModeless)
     1773      {
     1774         EndDialog(hwndDlg, FALSE);
     1775         return TRUE;
     1776      }
    16261777    }
    16271778  }
    1628 
    1629   if (index < psInfo->active_page)
     1779  else if (index < psInfo->active_page)
    16301780    psInfo->active_page--;
    16311781
    1632   /* Destroy page dialog window.
    1633    * If it's last page in modal dialog, it has been destroyed by EndDialog
    1634    */
    1635   if (psInfo->isModeless || psInfo->nPages > 1)
    1636      DestroyWindow(psInfo->proppage[index].hwndPage);
    1637 
     1782  /* Destroy page dialog window */
     1783  DestroyWindow(psInfo->proppage[index].hwndPage);
     1784
     1785  /* Free page resources */
     1786  if(psInfo->proppage[index].hpage)
     1787  {
     1788     PROPSHEETPAGEA* psp = (PROPSHEETPAGEA*)psInfo->proppage[index].hpage;
     1789
     1790     if ((psp->dwFlags & PSP_USETITLE) && psInfo->proppage[index].pszText)
     1791        HeapFree(GetProcessHeap(), 0, (LPVOID)psInfo->proppage[index].pszText);
     1792
     1793     DestroyPropertySheetPage(psInfo->proppage[index].hpage);
     1794  }
     1795 
    16381796  /* Remove the tab */
    16391797  SendMessageA(hwndTabControl, TCM_DELETEITEM, index, 0);
     
    16421800  psInfo->proppage = COMCTL32_Alloc(sizeof(PropPageInfo) * psInfo->nPages);
    16431801
    1644   if (index > 0)
     1802  if (index > 0) 
    16451803    memcpy(&psInfo->proppage[0], &oldPages[0], index * sizeof(PropPageInfo));
    16461804
     
    16641822static void PROPSHEET_SetWizButtons(HWND hwndDlg, DWORD dwFlags)
    16651823{
    1666   HWND hwndButton;
    1667 
    1668 //  TRACE("%ld\n", dwFlags);
     1824  HWND hwndBack   = GetDlgItem(hwndDlg, IDC_BACK_BUTTON);
     1825  HWND hwndNext   = GetDlgItem(hwndDlg, IDC_NEXT_BUTTON);
     1826  HWND hwndFinish = GetDlgItem(hwndDlg, IDC_FINISH_BUTTON);
     1827
     1828  TRACE("%ld\n", dwFlags);
     1829
     1830  EnableWindow(hwndBack, FALSE);
     1831  EnableWindow(hwndNext, FALSE);
     1832  EnableWindow(hwndFinish, FALSE);
    16691833
    16701834  if (dwFlags & PSWIZB_BACK)
    1671   {
    1672     hwndButton = GetDlgItem(hwndDlg, IDC_BACK_BUTTON);
    1673     EnableWindow(hwndButton, TRUE);
    1674   }
     1835    EnableWindow(hwndBack, TRUE);
    16751836
    16761837  if (dwFlags & PSWIZB_NEXT)
    16771838  {
    16781839    /* Hide the Finish button */
    1679     hwndButton = GetDlgItem(hwndDlg, IDC_FINISH_BUTTON);
    1680     ShowWindow(hwndButton, SW_HIDE);
     1840    ShowWindow(hwndFinish, SW_HIDE);
    16811841
    16821842    /* Show and enable the Next button */
    1683     hwndButton = GetDlgItem(hwndDlg, IDC_NEXT_BUTTON);
    1684 
    1685     ShowWindow(hwndButton, SW_SHOW);
    1686     EnableWindow(hwndButton, TRUE);
     1843    ShowWindow(hwndNext, SW_SHOW);
     1844    EnableWindow(hwndNext, TRUE);
    16871845
    16881846    /* Set the Next button as the default pushbutton  */
     
    16931851  {
    16941852    /* Hide the Next button */
    1695     hwndButton = GetDlgItem(hwndDlg, IDC_NEXT_BUTTON);
    1696     ShowWindow(hwndButton, SW_HIDE);
     1853    ShowWindow(hwndNext, SW_HIDE);
    16971854
    16981855    /* Show the Finish button */
    1699     hwndButton = GetDlgItem(hwndDlg, IDC_FINISH_BUTTON);
    1700     ShowWindow(hwndButton, SW_SHOW);
     1856    ShowWindow(hwndFinish, SW_SHOW);
    17011857
    17021858    if (dwFlags & PSWIZB_FINISH)
    1703       EnableWindow(hwndButton, TRUE);
    1704     else
    1705       EnableWindow(hwndButton, FALSE);
     1859      EnableWindow(hwndFinish, TRUE);
    17061860
    17071861    /* Set the Finish button as the default pushbutton  */
     
    17401894static void PROPSHEET_CleanUp(HWND hwndDlg)
    17411895{
     1896  int i;
    17421897  PropSheetInfo* psInfo = (PropSheetInfo*) RemovePropA(hwndDlg,
    17431898                                                       PropSheetInfoStr);
     1899
     1900  TRACE("\n");
     1901  if (HIWORD(psInfo->ppshheader->pszCaption))
     1902      HeapFree(GetProcessHeap(), 0, (LPVOID)psInfo->ppshheader->pszCaption);
     1903
     1904  COMCTL32_Free((LPVOID)psInfo->ppshheader);
     1905
     1906  for (i = 0; i < psInfo->nPages; i++)
     1907  {
     1908     PROPSHEETPAGEA* psp = (PROPSHEETPAGEA*)psInfo->proppage[i].hpage;
     1909
     1910     if(psInfo->proppage[i].hwndPage)
     1911        DestroyWindow(psInfo->proppage[i].hwndPage);
     1912
     1913     if(psp)
     1914     {
     1915        if ((psp->dwFlags & PSP_USETITLE) && psInfo->proppage[i].pszText)
     1916           HeapFree(GetProcessHeap(), 0, (LPVOID)psInfo->proppage[i].pszText);
     1917
     1918        DestroyPropertySheetPage(psInfo->proppage[i].hpage);
     1919     }
     1920  }
     1921
    17441922  COMCTL32_Free(psInfo->proppage);
    17451923  COMCTL32_Free(psInfo->strPropertiesFor);
     
    17571935  PropSheetInfo* psInfo = (PropSheetInfo*) GlobalAlloc(GPTR,
    17581936                                                       sizeof(PropSheetInfo));
    1759   LPCPROPSHEETPAGEA lppsp;
    17601937  int i;
     1938  BYTE* pByte;
    17611939
    17621940  PROPSHEET_CollectSheetInfo(lppsh, psInfo);
     
    17641942  psInfo->proppage = (PropPageInfo*) COMCTL32_Alloc(sizeof(PropPageInfo) *
    17651943                                                    lppsh->nPages);
     1944  pByte = (BYTE*) psInfo->ppshheader->u3.ppsp;
    17661945
    17671946  for (i = 0; i < lppsh->nPages; i++)
    17681947  {
    1769     psInfo->proppage[i].index = i;
    17701948    if (!(lppsh->dwFlags & PSH_PROPSHEETPAGE))
    17711949      psInfo->proppage[i].hpage = psInfo->ppshheader->u3.phpage[i];
    1772     lppsp = PROPSHEET_GetPSPPage(psInfo, i);
    1773     PROPSHEET_CollectPageInfo(lppsp, psInfo, i);
     1950    else
     1951    {
     1952       psInfo->proppage[i].hpage = CreatePropertySheetPageA((LPCPROPSHEETPAGEA)pByte);
     1953       pByte += ((LPPROPSHEETPAGEA)pByte)->dwSize;
     1954    }
     1955
     1956    PROPSHEET_CollectPageInfo((LPCPROPSHEETPAGEA)psInfo->proppage[i].hpage,
     1957                               psInfo, i);
    17741958  }
    17751959
     
    17991983  *ppsp = *lpPropSheetPage;
    18001984
     1985  if ( !(ppsp->dwFlags & PSP_DLGINDIRECT) && HIWORD( ppsp->u1.pszTemplate ) )
     1986    ppsp->u1.pszTemplate = HEAP_strdupA( GetProcessHeap(), 0, lpPropSheetPage->u1.pszTemplate );
     1987
     1988  if ( (ppsp->dwFlags & PSP_USEICONID) && HIWORD( ppsp->u2.pszIcon ) )
     1989      ppsp->u2.pszIcon = HEAP_strdupA( GetProcessHeap(), 0, lpPropSheetPage->u2.pszIcon );
     1990       
     1991
     1992  if ((ppsp->dwFlags & PSP_USETITLE) && HIWORD( ppsp->pszTitle ))
     1993      ppsp->pszTitle = HEAP_strdupA( GetProcessHeap(), 0, lpPropSheetPage->pszTitle );
     1994  else if ( !(ppsp->dwFlags & PSP_USETITLE) )
     1995      ppsp->pszTitle = NULL;
     1996
    18011997  return (HPROPSHEETPAGE)ppsp;
    18021998}
     
    18172013BOOL WINAPI DestroyPropertySheetPage(HPROPSHEETPAGE hPropPage)
    18182014{
     2015  PROPSHEETPAGEA *psp = (PROPSHEETPAGEA *)hPropPage;
     2016
     2017  if (!psp)
     2018     return FALSE;
     2019
     2020  if ( !(psp->dwFlags & PSP_DLGINDIRECT) && HIWORD( psp->u1.pszTemplate ) )
     2021     HeapFree(GetProcessHeap(), 0, (LPVOID)psp->u1.pszTemplate);
     2022
     2023  if ( (psp->dwFlags & PSP_USEICONID) && HIWORD( psp->u2.pszIcon ) )
     2024     HeapFree(GetProcessHeap(), 0, (LPVOID)psp->u2.pszIcon);
     2025
     2026  if ((psp->dwFlags & PSP_USETITLE) && HIWORD( psp->pszTitle ))
     2027      HeapFree(GetProcessHeap(), 0, (LPVOID)psp->pszTitle);
     2028
    18192029  COMCTL32_Free(hPropPage);
    18202030
    18212031  return TRUE;
     2032}
     2033
     2034/******************************************************************************
     2035 *            PROPSHEET_IsDialogMessage
     2036 */
     2037static BOOL PROPSHEET_IsDialogMessage(HWND hwnd, LPMSG lpMsg)
     2038{
     2039   PropSheetInfo* psInfo = (PropSheetInfo*) GetPropA(hwnd, PropSheetInfoStr);
     2040
     2041   if (!psInfo || (hwnd != lpMsg->hwnd && !IsChild(hwnd, lpMsg->hwnd)))
     2042      return FALSE;
     2043
     2044   if (lpMsg->message == WM_KEYDOWN && (GetKeyState(VK_CONTROL) & 0x8000))
     2045   {
     2046      int new_page = 0;
     2047      INT dlgCode = SendMessageA(lpMsg->hwnd, WM_GETDLGCODE, 0, (LPARAM)lpMsg);
     2048
     2049      if (!(dlgCode & DLGC_WANTMESSAGE))
     2050      {
     2051         switch (lpMsg->wParam)
     2052         {
     2053            case VK_TAB:
     2054               if (GetKeyState(VK_SHIFT) & 0x8000)
     2055                   new_page = -1;
     2056                else
     2057                   new_page = 1;
     2058               break;
     2059
     2060            case VK_NEXT:   new_page = 1;  break;
     2061            case VK_PRIOR:  new_page = -1; break;
     2062         }
     2063      }
     2064
     2065      if (new_page)
     2066      {
     2067         if (PROPSHEET_CanSetCurSel(hwnd) != FALSE)
     2068         {
     2069            new_page += psInfo->active_page;
     2070
     2071            if (new_page < 0)
     2072               new_page = psInfo->nPages - 1;
     2073            else if (new_page >= psInfo->nPages)
     2074               new_page = 0;
     2075
     2076            PROPSHEET_SetCurSel(hwnd, new_page, 0);
     2077         }
     2078
     2079         return TRUE;
     2080      }
     2081   }
     2082
     2083   return IsDialogMessageA(hwnd, lpMsg);
    18222084}
    18232085
     
    18362098      HWND hwndTabCtrl = GetDlgItem(hwnd, IDC_TABCONTROL);
    18372099      LPCPROPSHEETPAGEA ppshpage;
     2100      int idx;
    18382101
    18392102      SetPropA(hwnd, PropSheetInfoStr, (HANDLE)psInfo);
     
    18722135      if (psInfo->ppshheader->dwFlags & PSH_WIZARD)
    18732136      {
    1874         HWND hwndBack = GetDlgItem(hwnd, IDC_BACK_BUTTON);
    1875 
    18762137        if (PROPSHEET_IsTooSmallWizard(hwnd, psInfo))
    18772138        {
     
    18792140          PROPSHEET_AdjustButtonsWizard(hwnd, psInfo);
    18802141        }
    1881 
    1882         /* Disable Back button if we start at page 0 */
    1883         if (psInfo->active_page == 0)
    1884           EnableWindow(hwndBack, FALSE);
    18852142      }
    18862143      else
     
    18972154                                              PSCB_INITIALIZED, (LPARAM)0);
    18982155
    1899       ppshpage = PROPSHEET_GetPSPPage(psInfo, psInfo->active_page);
    1900       PROPSHEET_CreatePage(hwnd, psInfo->active_page, psInfo, ppshpage, TRUE);
     2156      idx = psInfo->active_page;
     2157      ppshpage = (LPCPROPSHEETPAGEA)psInfo->proppage[idx].hpage;
     2158      psInfo->active_page = -1;
     2159 
     2160      PROPSHEET_SetCurSel(hwnd, idx, psInfo->proppage[idx].hpage);
    19012161
    19022162      if (!(psInfo->ppshheader->dwFlags & PSH_WIZARD))
     
    19262186
    19272187    case WM_CLOSE:
    1928       PROPSHEET_Cancel(hwnd);
     2188      PROPSHEET_Cancel(hwnd, 1);
    19292189      return TRUE;
    19302190
     
    19402200          HWND hwndApplyBtn = GetDlgItem(hwnd, IDC_APPLY_BUTTON);
    19412201
    1942           if (PROPSHEET_Apply(hwnd) == FALSE)
     2202          if (PROPSHEET_Apply(hwnd, wID == IDOK ? 1: 0) == FALSE)
    19432203            break;
    1944 
    1945           EnableWindow(hwndApplyBtn, FALSE);
    19462204
    19472205          if (wID == IDOK)
     
    19592217
    19602218            if (psInfo->isModeless)
    1961               psInfo->active_page = -1;
     2219              psInfo->activeValid = FALSE;
    19622220            else
    19632221              EndDialog(hwnd, result);
    19642222          }
     2223          else
     2224             EnableWindow(hwndApplyBtn, FALSE);
    19652225
    19662226          break;
     
    19802240
    19812241        case IDCANCEL:
    1982           PROPSHEET_Cancel(hwnd);
     2242          PROPSHEET_Cancel(hwnd, 0);
    19832243          break;
    19842244
     
    20182278      HWND hwndPage = 0;
    20192279
    2020       if (psInfo->active_page != -1)
     2280      if (psInfo->activeValid && psInfo->active_page != -1)
    20212281        hwndPage = psInfo->proppage[psInfo->active_page].hwndPage;
    20222282
     
    20622322    case PSM_CANCELTOCLOSE:
    20632323    {
     2324      char buf[MAX_BUTTONTEXT_LENGTH];
    20642325      HWND hwndOK = GetDlgItem(hwnd, IDOK);
    20652326      HWND hwndCancel = GetDlgItem(hwnd, IDCANCEL);
    20662327
    20672328      EnableWindow(hwndCancel, FALSE);
    2068       SetWindowTextA(hwndOK, "Close"); /* FIXME: hardcoded string */
    2069 
    2070       return TRUE;
     2329      if (LoadStringA(COMCTL32_hModule, IDS_CLOSE, buf, sizeof(buf)))
     2330         SetWindowTextA(hwndOK, buf);
     2331 
     2332      return FALSE;
    20712333    }
    20722334
     
    20952357    case PSM_APPLY:
    20962358    {
    2097       BOOL msgResult = PROPSHEET_Apply(hwnd);
     2359      BOOL msgResult = PROPSHEET_Apply(hwnd, 0);
    20982360
    20992361      SetWindowLongA(hwnd, DWL_MSGRESULT, msgResult);
     
    21342396    case PSM_ISDIALOGMESSAGE:
    21352397    {
    2136       FIXME("Unimplemented msg PSM_ISDIALOGMESSAGE\n");
    2137       return 0;
     2398       BOOL msgResult = PROPSHEET_IsDialogMessage(hwnd, (LPMSG)lParam);
     2399       SetWindowLongA(hwnd, DWL_MSGRESULT, msgResult);
     2400       return TRUE;
    21382401    }
    21392402
  • trunk/src/comctl32/rebar.c

    r1762 r2126  
    1 /* $Id: rebar.c,v 1.10 1999-11-17 17:06:23 cbratschi Exp $ */
     1/* $Id: rebar.c,v 1.11 1999-12-18 20:57:00 achimha Exp $ */
    22/*
    33 * Rebar control
     
    2121 *   - All notifications.
    2222 */
     23
     24/* WINE 991212 */
    2325
    2426#include <string.h>
     
    911913}
    912914
     915static LRESULT
     916REBAR_GetVersion (HWND hwnd)
     917{
     918    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     919    return infoPtr->iVersion;
     920}
    913921
    914922static LRESULT
     
    15231531}
    15241532
     1533static LRESULT
     1534REBAR_SetVersion (HWND hwnd, INT iVersion)
     1535{
     1536    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     1537    INT iOldVersion = infoPtr->iVersion;
     1538
     1539    if (iVersion > COMCTL32_VERSION)
     1540        return -1;
     1541
     1542    infoPtr->iVersion = iVersion;
     1543
     1544    return iOldVersion;
     1545}
    15251546
    15261547static LRESULT
     
    15941615
    15951616    /* initialize info structure */
     1617    infoPtr->iVersion = 0;
    15961618    infoPtr->clrBk = CLR_NONE;
    15971619    infoPtr->clrText = RGB(0, 0, 0);
     
    19221944            return REBAR_GetUnicodeFormat (hwnd);
    19231945
     1946        case CCM_GETVERSION:
     1947            return REBAR_GetVersion (hwnd);
     1948
    19241949        case RB_HITTEST:
    19251950            return REBAR_HitTest (hwnd, wParam, lParam);
     
    19691994        case RB_SETUNICODEFORMAT:
    19701995            return REBAR_SetUnicodeFormat (hwnd, wParam);
     1996
     1997        case CCM_SETVERSION:
     1998            return REBAR_SetVersion (hwnd, (INT)wParam);
    19711999
    19722000        case RB_SHOWBAND:
  • trunk/src/comctl32/resource.asm

    r1803 r2126  
    11;/* This file is generated with wrc version 1.0.14 (08-Aug-1999). Do not edit! */
    22;/* Source : rsrc.rc */
    3 ;/* Cmdline: wrc -s -I. -IE:\IBMCPP\include -I..\..\include -I..\..\include\win -o resource.asm rsrc.rc */
    4 ;/* Date   : Sun Nov 21 15:11:29 1999 */
     3;/* Cmdline: wrc -s -I. -IH:\IBMCPP3\include -I..\..\include -I..\..\include\win -o resource.asm rsrc.rc */
     4;/* Date   : Sat Dec 18 21:17:00 1999 */
    55
    66        .386p
     
    1212        public  _Resource_PEResTab
    1313        dd      0
    14         dd      03837fd91h
    15         dd      0
    16         dw      0, 4
     14        dd      0385bebbch
     15        dd      0
     16        dw      0, 5
    1717        dd      2
    1818        dd      (L2 - _Resource_PEResTab) or 80000000h
     
    2121        dd      5
    2222        dd      (L5 - _Resource_PEResTab) or 80000000h
     23        dd      6
     24        dd      (L6 - _Resource_PEResTab) or 80000000h
    2325        dd      16
    2426        dd      (L16 - _Resource_PEResTab) or 80000000h
    2527L2:
    2628        dd      0
    27         dd      03837fd91h
    28         dd      0
    29         dw      0, 6
     29        dd      0385bebbch
     30        dd      0
     31        dw      0, 7
    3032        dd      120
    3133        dd      (L2_120 - _Resource_PEResTab) or 80000000h
     
    4042        dd      131
    4143        dd      (L2_131 - _Resource_PEResTab) or 80000000h
     44        dd      401
     45        dd      (L2_401 - _Resource_PEResTab) or 80000000h
    4246L4:
    4347        dd      0
    44         dd      03837fd91h
     48        dd      0385bebbch
    4549        dd      0
    4650        dw      0, 1
     
    4953L5:
    5054        dd      0
    51         dd      03837fd91h
     55        dd      0385bebbch
    5256        dd      0
    5357        dw      0, 3
     
    5862        dd      1020
    5963        dd      (L5_1020 - _Resource_PEResTab) or 80000000h
     64L6:
     65        dd      0
     66        dd      0385bebbch
     67        dd      0
     68        dw      0, 1
     69        dd      261
     70        dd      (L6_261 - _Resource_PEResTab) or 80000000h
    6071L16:
    6172        dd      0
    62         dd      03837fd91h
     73        dd      0385bebbch
    6374        dd      0
    6475        dw      0, 1
     
    6778L2_120:
    6879        dd      0
    69         dd      03837fd91h
     80        dd      0385bebbch
    7081        dd      0
    7182        dw      0, 1
     
    7485L2_121:
    7586        dd      0
    76         dd      03837fd91h
     87        dd      0385bebbch
    7788        dd      0
    7889        dw      0, 1
     
    8192L2_124:
    8293        dd      0
    83         dd      03837fd91h
     94        dd      0385bebbch
    8495        dd      0
    8596        dw      0, 1
     
    8899L2_125:
    89100        dd      0
    90         dd      03837fd91h
     101        dd      0385bebbch
    91102        dd      0
    92103        dw      0, 1
     
    95106L2_130:
    96107        dd      0
    97         dd      03837fd91h
     108        dd      0385bebbch
    98109        dd      0
    99110        dw      0, 1
     
    102113L2_131:
    103114        dd      0
    104         dd      03837fd91h
     115        dd      0385bebbch
    105116        dd      0
    106117        dw      0, 1
    107118        dd      000000000h
    108119        dd      L2_131_0 - _Resource_PEResTab
     120L2_401:
     121        dd      0
     122        dd      0385bebbch
     123        dd      0
     124        dw      0, 1
     125        dd      000000000h
     126        dd      L2_401_0 - _Resource_PEResTab
    109127L4_300:
    110128        dd      0
    111         dd      03837fd91h
     129        dd      0385bebbch
    112130        dd      0
    113131        dw      0, 1
     
    116134L5_200:
    117135        dd      0
    118         dd      03837fd91h
     136        dd      0385bebbch
    119137        dd      0
    120138        dw      0, 1
     
    123141L5_1006:
    124142        dd      0
    125         dd      03837fd91h
     143        dd      0385bebbch
    126144        dd      0
    127145        dw      0, 1
     
    130148L5_1020:
    131149        dd      0
    132         dd      03837fd91h
     150        dd      0385bebbch
    133151        dd      0
    134152        dw      0, 1
    135153        dd      000000000h
    136154        dd      L5_1020_0 - _Resource_PEResTab
     155L6_261:
     156        dd      0
     157        dd      0385bebbch
     158        dd      0
     159        dw      0, 1
     160        dd      000000000h
     161        dd      L6_261_0 - _Resource_PEResTab
    137162L16_1:
    138163        dd      0
    139         dd      03837fd91h
     164        dd      0385bebbch
    140165        dd      0
    141166        dw      0, 1
     
    156181L2_124_0:
    157182        dd      _Resource_Bmp_124_0_data - _Resource_PEResTab
    158         dd      1308
     183        dd      4136
    159184        dd      0
    160185        dd      0
     
    174199        dd      0
    175200        dd      0
     201L2_401_0:
     202        dd      _Resource_Bmp_401_0_data - _Resource_PEResTab
     203        dd      384
     204        dd      0
     205        dd      0
    176206L4_300_0:
    177207        dd      _Resource_Men_300_0_data - _Resource_PEResTab
     
    192222        dd      _Resource_Dlg_1020_0_data - _Resource_PEResTab
    193223        dd      352
     224        dd      0
     225        dd      0
     226L6_261_0:
     227        dd      _Resource_StrTab_261_0_data - _Resource_PEResTab
     228        dd      44
    194229        dd      0
    195230        dd      0
     
    230265        db      080h, 000h, 026h, 000h, 041h, 000h, 070h, 000h
    231266        db      070h, 000h, 06ch, 000h, 079h, 000h, 000h, 000h
    232         db      000h, 000h, 000h, 000h, 000h, 000h, 001h, 050h
     267        db      000h, 000h, 000h, 000h, 000h, 000h, 003h, 050h
    233268        db      000h, 000h, 000h, 000h, 0ebh, 000h, 08ah, 000h
    234269        db      032h, 000h, 00eh, 000h, 009h, 000h, 0ffh, 0ffh
    235270        db      080h, 000h, 048h, 000h, 065h, 000h, 06ch, 000h
    236271        db      070h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    237         db      000h, 000h, 000h, 054h, 000h, 000h, 000h, 000h
     272        db      000h, 000h, 001h, 054h, 000h, 000h, 000h, 000h
    238273        db      007h, 000h, 007h, 000h, 016h, 001h, 07dh, 000h
    239274        db      020h, 030h, 053h, 000h, 059h, 000h, 053h, 000h
     
    274309        db      080h, 000h, 043h, 000h, 061h, 000h, 06eh, 000h
    275310        db      063h, 000h, 065h, 000h, 06ch, 000h, 000h, 000h
    276         db      000h, 000h, 000h, 000h, 000h, 000h, 001h, 050h
     311        db      000h, 000h, 000h, 000h, 000h, 000h, 003h, 050h
    277312        db      000h, 000h, 000h, 000h, 0ebh, 000h, 08ah, 000h
    278313        db      032h, 000h, 00eh, 000h, 009h, 000h, 0ffh, 0ffh
     
    399434        db      065h, 000h, 06dh, 000h, 062h, 000h, 065h, 000h
    400435        db      072h, 000h, 000h, 000h
     436
     437        align   4
     438_Resource_Bmp_401_0_data:
     439        db      028h, 000h, 000h, 000h, 01fh, 000h, 000h, 000h
     440        db      010h, 000h, 000h, 000h, 001h, 000h, 004h, 000h
     441        db      002h, 000h, 000h, 000h, 030h, 001h, 000h, 000h
     442        db      001h, 000h, 000h, 000h, 001h, 000h, 000h, 000h
     443        db      00ah, 000h, 000h, 000h, 00ah, 000h, 000h, 000h
     444        db      000h, 000h, 000h, 000h, 000h, 000h, 080h, 000h
     445        db      000h, 080h, 000h, 000h, 080h, 000h, 000h, 000h
     446        db      0c0h, 0c0h, 0c0h, 000h, 080h, 080h, 080h, 000h
     447        db      000h, 0ffh, 000h, 000h, 000h, 0ffh, 0ffh, 000h
     448        db      0ffh, 000h, 000h, 000h, 0ffh, 0ffh, 0ffh, 000h
     449        db      01fh, 099h, 000h, 000h, 001h, 099h, 00dh, 011h
     450        db      002h, 099h, 00eh, 011h, 001h, 099h, 000h, 000h
     451        db      001h, 099h, 00dh, 011h, 002h, 099h, 00eh, 011h
     452        db      001h, 099h, 000h, 000h, 001h, 099h, 002h, 011h
     453        db      009h, 099h, 002h, 011h, 002h, 099h, 002h, 011h
     454        db      00ah, 099h, 002h, 011h, 001h, 099h, 000h, 000h
     455        db      001h, 099h, 002h, 011h, 009h, 099h, 002h, 011h
     456        db      002h, 099h, 002h, 011h, 00ah, 099h, 002h, 011h
     457        db      001h, 099h, 000h, 000h, 001h, 099h, 002h, 011h
     458        db      009h, 099h, 002h, 011h, 002h, 099h, 002h, 011h
     459        db      003h, 099h, 002h, 000h, 005h, 099h, 002h, 011h
     460        db      001h, 099h, 000h, 000h, 001h, 099h, 002h, 011h
     461        db      009h, 099h, 002h, 011h, 002h, 099h, 002h, 011h
     462        db      003h, 099h, 003h, 000h, 004h, 099h, 002h, 011h
     463        db      001h, 099h, 000h, 000h, 001h, 099h, 002h, 011h
     464        db      009h, 099h, 002h, 011h, 002h, 099h, 002h, 011h
     465        db      002h, 099h, 004h, 000h, 004h, 099h, 002h, 011h
     466        db      001h, 099h, 000h, 000h, 001h, 099h, 002h, 011h
     467        db      009h, 099h, 002h, 011h, 002h, 099h, 002h, 011h
     468        db      001h, 099h, 002h, 000h, 002h, 099h, 002h, 000h
     469        db      003h, 099h, 002h, 011h, 001h, 099h, 000h, 000h
     470        db      001h, 099h, 002h, 011h, 009h, 099h, 002h, 011h
     471        db      002h, 099h, 002h, 011h, 002h, 000h, 004h, 099h
     472        db      002h, 000h, 002h, 099h, 002h, 011h, 001h, 099h
     473        db      000h, 000h, 001h, 099h, 002h, 011h, 009h, 099h
     474        db      002h, 011h, 002h, 099h, 002h, 011h, 001h, 000h
     475        db      006h, 099h, 002h, 000h, 001h, 099h, 002h, 011h
     476        db      001h, 099h, 000h, 000h, 001h, 099h, 002h, 011h
     477        db      009h, 099h, 002h, 011h, 002h, 099h, 002h, 011h
     478        db      007h, 099h, 002h, 000h, 001h, 099h, 001h, 000h
     479        db      001h, 011h, 001h, 099h, 000h, 000h, 001h, 099h
     480        db      002h, 011h, 009h, 099h, 002h, 011h, 002h, 099h
     481        db      002h, 011h, 008h, 099h, 001h, 000h, 001h, 099h
     482        db      001h, 000h, 001h, 011h, 001h, 099h, 000h, 000h
     483        db      001h, 099h, 00dh, 011h, 002h, 099h, 00ah, 011h
     484        db      002h, 000h, 002h, 011h, 001h, 099h, 000h, 000h
     485        db      001h, 099h, 00dh, 011h, 002h, 099h, 00eh, 011h
     486        db      001h, 099h, 000h, 000h, 01fh, 099h, 000h, 001h
    401487
    402488        align   4
     
    9811067_Resource_Bmp_124_0_data:
    9821068        db      028h, 000h, 000h, 000h, 0c0h, 000h, 000h, 000h
    983         db      010h, 000h, 000h, 000h, 001h, 000h, 004h, 000h
    984         db      002h, 000h, 000h, 000h, 0b4h, 004h, 000h, 000h
     1069        db      010h, 000h, 000h, 000h, 001h, 000h, 008h, 000h
     1070        db      000h, 000h, 000h, 000h, 000h, 00ch, 000h, 000h
    9851071        db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    9861072        db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     
    9891075        db      080h, 000h, 000h, 000h, 080h, 000h, 080h, 000h
    9901076        db      080h, 080h, 000h, 000h, 0c0h, 0c0h, 0c0h, 000h
     1077        db      0c0h, 0dch, 0c0h, 000h, 0f0h, 0cah, 0a6h, 000h
     1078        db      004h, 004h, 004h, 000h, 008h, 008h, 008h, 000h
     1079        db      00ch, 00ch, 00ch, 000h, 011h, 011h, 011h, 000h
     1080        db      016h, 016h, 016h, 000h, 01ch, 01ch, 01ch, 000h
     1081        db      022h, 022h, 022h, 000h, 029h, 029h, 029h, 000h
     1082        db      055h, 055h, 055h, 000h, 04dh, 04dh, 04dh, 000h
     1083        db      042h, 042h, 042h, 000h, 039h, 039h, 039h, 000h
     1084        db      080h, 07ch, 0ffh, 000h, 050h, 050h, 0ffh, 000h
     1085        db      093h, 000h, 0d6h, 000h, 0ffh, 0ech, 0cch, 000h
     1086        db      0c6h, 0d6h, 0efh, 000h, 0d6h, 0e7h, 0e7h, 000h
     1087        db      090h, 0a9h, 0adh, 000h, 000h, 000h, 033h, 000h
     1088        db      000h, 000h, 066h, 000h, 000h, 000h, 099h, 000h
     1089        db      000h, 000h, 0cch, 000h, 000h, 033h, 000h, 000h
     1090        db      000h, 033h, 033h, 000h, 000h, 033h, 066h, 000h
     1091        db      000h, 033h, 099h, 000h, 000h, 033h, 0cch, 000h
     1092        db      000h, 033h, 0ffh, 000h, 000h, 066h, 000h, 000h
     1093        db      000h, 066h, 033h, 000h, 000h, 066h, 066h, 000h
     1094        db      000h, 066h, 099h, 000h, 000h, 066h, 0cch, 000h
     1095        db      000h, 066h, 0ffh, 000h, 000h, 099h, 000h, 000h
     1096        db      000h, 099h, 033h, 000h, 000h, 099h, 066h, 000h
     1097        db      000h, 099h, 099h, 000h, 000h, 099h, 0cch, 000h
     1098        db      000h, 099h, 0ffh, 000h, 000h, 0cch, 000h, 000h
     1099        db      000h, 0cch, 033h, 000h, 000h, 0cch, 066h, 000h
     1100        db      000h, 0cch, 099h, 000h, 000h, 0cch, 0cch, 000h
     1101        db      000h, 0cch, 0ffh, 000h, 000h, 0ffh, 066h, 000h
     1102        db      000h, 0ffh, 099h, 000h, 000h, 0ffh, 0cch, 000h
     1103        db      033h, 000h, 000h, 000h, 033h, 000h, 033h, 000h
     1104        db      033h, 000h, 066h, 000h, 033h, 000h, 099h, 000h
     1105        db      033h, 000h, 0cch, 000h, 033h, 000h, 0ffh, 000h
     1106        db      033h, 033h, 000h, 000h, 033h, 033h, 033h, 000h
     1107        db      033h, 033h, 066h, 000h, 033h, 033h, 099h, 000h
     1108        db      033h, 033h, 0cch, 000h, 033h, 033h, 0ffh, 000h
     1109        db      033h, 066h, 000h, 000h, 033h, 066h, 033h, 000h
     1110        db      033h, 066h, 066h, 000h, 033h, 066h, 099h, 000h
     1111        db      033h, 066h, 0cch, 000h, 033h, 066h, 0ffh, 000h
     1112        db      033h, 099h, 000h, 000h, 033h, 099h, 033h, 000h
     1113        db      033h, 099h, 066h, 000h, 033h, 099h, 099h, 000h
     1114        db      033h, 099h, 0cch, 000h, 033h, 099h, 0ffh, 000h
     1115        db      033h, 0cch, 000h, 000h, 033h, 0cch, 033h, 000h
     1116        db      033h, 0cch, 066h, 000h, 033h, 0cch, 099h, 000h
     1117        db      033h, 0cch, 0cch, 000h, 033h, 0cch, 0ffh, 000h
     1118        db      033h, 0ffh, 033h, 000h, 033h, 0ffh, 066h, 000h
     1119        db      033h, 0ffh, 099h, 000h, 033h, 0ffh, 0cch, 000h
     1120        db      033h, 0ffh, 0ffh, 000h, 066h, 000h, 000h, 000h
     1121        db      066h, 000h, 033h, 000h, 066h, 000h, 066h, 000h
     1122        db      066h, 000h, 099h, 000h, 066h, 000h, 0cch, 000h
     1123        db      066h, 000h, 0ffh, 000h, 066h, 033h, 000h, 000h
     1124        db      066h, 033h, 033h, 000h, 066h, 033h, 066h, 000h
     1125        db      066h, 033h, 099h, 000h, 066h, 033h, 0cch, 000h
     1126        db      066h, 033h, 0ffh, 000h, 066h, 066h, 000h, 000h
     1127        db      066h, 066h, 033h, 000h, 066h, 066h, 066h, 000h
     1128        db      066h, 066h, 099h, 000h, 066h, 066h, 0cch, 000h
     1129        db      066h, 099h, 000h, 000h, 066h, 099h, 033h, 000h
     1130        db      066h, 099h, 066h, 000h, 066h, 099h, 099h, 000h
     1131        db      066h, 099h, 0cch, 000h, 066h, 099h, 0ffh, 000h
     1132        db      066h, 0cch, 000h, 000h, 066h, 0cch, 033h, 000h
     1133        db      066h, 0cch, 099h, 000h, 066h, 0cch, 0cch, 000h
     1134        db      066h, 0cch, 0ffh, 000h, 066h, 0ffh, 000h, 000h
     1135        db      066h, 0ffh, 033h, 000h, 066h, 0ffh, 099h, 000h
     1136        db      066h, 0ffh, 0cch, 000h, 0cch, 000h, 0ffh, 000h
     1137        db      0ffh, 000h, 0cch, 000h, 099h, 099h, 000h, 000h
     1138        db      099h, 033h, 099h, 000h, 099h, 000h, 099h, 000h
     1139        db      099h, 000h, 0cch, 000h, 099h, 000h, 000h, 000h
     1140        db      099h, 033h, 033h, 000h, 099h, 000h, 066h, 000h
     1141        db      099h, 033h, 0cch, 000h, 099h, 000h, 0ffh, 000h
     1142        db      099h, 066h, 000h, 000h, 099h, 066h, 033h, 000h
     1143        db      099h, 033h, 066h, 000h, 099h, 066h, 099h, 000h
     1144        db      099h, 066h, 0cch, 000h, 099h, 033h, 0ffh, 000h
     1145        db      099h, 099h, 033h, 000h, 099h, 099h, 066h, 000h
     1146        db      099h, 099h, 099h, 000h, 099h, 099h, 0cch, 000h
     1147        db      099h, 099h, 0ffh, 000h, 099h, 0cch, 000h, 000h
     1148        db      099h, 0cch, 033h, 000h, 066h, 0cch, 066h, 000h
     1149        db      099h, 0cch, 099h, 000h, 099h, 0cch, 0cch, 000h
     1150        db      099h, 0cch, 0ffh, 000h, 099h, 0ffh, 000h, 000h
     1151        db      099h, 0ffh, 033h, 000h, 099h, 0cch, 066h, 000h
     1152        db      099h, 0ffh, 099h, 000h, 099h, 0ffh, 0cch, 000h
     1153        db      099h, 0ffh, 0ffh, 000h, 0cch, 000h, 000h, 000h
     1154        db      099h, 000h, 033h, 000h, 0cch, 000h, 066h, 000h
     1155        db      0cch, 000h, 099h, 000h, 0cch, 000h, 0cch, 000h
     1156        db      099h, 033h, 000h, 000h, 0cch, 033h, 033h, 000h
     1157        db      0cch, 033h, 066h, 000h, 0cch, 033h, 099h, 000h
     1158        db      0cch, 033h, 0cch, 000h, 0cch, 033h, 0ffh, 000h
     1159        db      0cch, 066h, 000h, 000h, 0cch, 066h, 033h, 000h
     1160        db      099h, 066h, 066h, 000h, 0cch, 066h, 099h, 000h
     1161        db      0cch, 066h, 0cch, 000h, 099h, 066h, 0ffh, 000h
     1162        db      0cch, 099h, 000h, 000h, 0cch, 099h, 033h, 000h
     1163        db      0cch, 099h, 066h, 000h, 0cch, 099h, 099h, 000h
     1164        db      0cch, 099h, 0cch, 000h, 0cch, 099h, 0ffh, 000h
     1165        db      0cch, 0cch, 000h, 000h, 0cch, 0cch, 033h, 000h
     1166        db      0cch, 0cch, 066h, 000h, 0cch, 0cch, 099h, 000h
     1167        db      0cch, 0cch, 0cch, 000h, 0cch, 0cch, 0ffh, 000h
     1168        db      0cch, 0ffh, 000h, 000h, 0cch, 0ffh, 033h, 000h
     1169        db      099h, 0ffh, 066h, 000h, 0cch, 0ffh, 099h, 000h
     1170        db      0cch, 0ffh, 0cch, 000h, 0cch, 0ffh, 0ffh, 000h
     1171        db      0cch, 000h, 033h, 000h, 0ffh, 000h, 066h, 000h
     1172        db      0ffh, 000h, 099h, 000h, 0cch, 033h, 000h, 000h
     1173        db      0ffh, 033h, 033h, 000h, 0ffh, 033h, 066h, 000h
     1174        db      0ffh, 033h, 099h, 000h, 0ffh, 033h, 0cch, 000h
     1175        db      0ffh, 033h, 0ffh, 000h, 0ffh, 066h, 000h, 000h
     1176        db      0ffh, 066h, 033h, 000h, 0cch, 066h, 066h, 000h
     1177        db      0ffh, 066h, 099h, 000h, 0ffh, 066h, 0cch, 000h
     1178        db      0cch, 066h, 0ffh, 000h, 0ffh, 099h, 000h, 000h
     1179        db      0ffh, 099h, 033h, 000h, 0ffh, 099h, 066h, 000h
     1180        db      0ffh, 099h, 099h, 000h, 0ffh, 099h, 0cch, 000h
     1181        db      0ffh, 099h, 0ffh, 000h, 0ffh, 0cch, 000h, 000h
     1182        db      0ffh, 0cch, 033h, 000h, 0ffh, 0cch, 066h, 000h
     1183        db      0ffh, 0cch, 099h, 000h, 0ffh, 0cch, 0cch, 000h
     1184        db      0ffh, 0cch, 0ffh, 000h, 0ffh, 0ffh, 033h, 000h
     1185        db      0cch, 0ffh, 066h, 000h, 0ffh, 0ffh, 099h, 000h
     1186        db      0ffh, 0ffh, 0cch, 000h, 066h, 066h, 0ffh, 000h
     1187        db      066h, 0ffh, 066h, 000h, 066h, 0ffh, 0ffh, 000h
     1188        db      0ffh, 066h, 066h, 000h, 0ffh, 066h, 0ffh, 000h
     1189        db      0ffh, 0ffh, 066h, 000h, 021h, 000h, 0a5h, 000h
     1190        db      05fh, 05fh, 05fh, 000h, 077h, 077h, 077h, 000h
     1191        db      086h, 086h, 086h, 000h, 096h, 096h, 096h, 000h
     1192        db      0cbh, 0cbh, 0cbh, 000h, 0b2h, 0b2h, 0b2h, 000h
     1193        db      0d7h, 0d7h, 0d7h, 000h, 0ddh, 0ddh, 0ddh, 000h
     1194        db      0e3h, 0e3h, 0e3h, 000h, 0eah, 0eah, 0eah, 000h
     1195        db      0f1h, 0f1h, 0f1h, 000h, 0f8h, 0f8h, 0f8h, 000h
     1196        db      0f0h, 0fbh, 0ffh, 000h, 0a4h, 0a0h, 0a0h, 000h
    9911197        db      080h, 080h, 080h, 000h, 000h, 000h, 0ffh, 000h
    9921198        db      000h, 0ffh, 000h, 000h, 000h, 0ffh, 0ffh, 000h
    9931199        db      0ffh, 000h, 000h, 000h, 0ffh, 000h, 0ffh, 000h
    9941200        db      0ffh, 0ffh, 000h, 000h, 0ffh, 0ffh, 0ffh, 000h
    995         db      0c0h, 077h, 000h, 000h, 008h, 077h, 002h, 070h
    996         db      004h, 000h, 000h, 008h, 007h, 077h, 074h, 044h
    997         db      00ah, 077h, 000h, 004h, 044h, 047h, 004h, 077h
    998         db      000h, 004h, 044h, 047h, 004h, 077h, 000h, 018h
    999         db      047h, 070h, 000h, 007h, 000h, 007h, 000h, 007h
    1000         db      077h, 074h, 044h, 047h, 004h, 077h, 000h, 004h
    1001         db      071h, 077h, 008h, 044h, 000h, 006h, 047h, 077h
    1002         db      071h, 000h, 00eh, 077h, 002h, 071h, 00eh, 077h
    1003         db      002h, 071h, 014h, 077h, 002h, 070h, 00ch, 000h
    1004         db      002h, 077h, 00eh, 070h, 00ah, 000h, 002h, 007h
    1005         db      004h, 077h, 000h, 000h, 012h, 077h, 000h, 008h
    1006         db      074h, 0f4h, 070h, 000h, 006h, 077h, 000h, 010h
    1007         db      04fh, 047h, 000h, 007h, 04fh, 047h, 000h, 007h
    1008         db      012h, 077h, 000h, 006h, 044h, 077h, 044h, 000h
    1009         db      004h, 077h, 000h, 006h, 011h, 017h, 04fh, 000h
    1010         db      006h, 0ffh, 000h, 008h, 047h, 077h, 011h, 017h
    1011         db      00ch, 077h, 000h, 004h, 011h, 017h, 008h, 000h
    1012         db      004h, 077h, 000h, 004h, 011h, 017h, 00eh, 000h
    1013         db      000h, 008h, 007h, 077h, 070h, 078h, 008h, 088h
    1014         db      002h, 080h, 010h, 077h, 002h, 00bh, 008h, 0fbh
    1015         db      002h, 007h, 004h, 077h, 000h, 000h, 00ah, 077h
    1016         db      004h, 044h, 004h, 077h, 000h, 004h, 074h, 047h
    1017         db      00ah, 077h, 002h, 044h, 006h, 077h, 002h, 044h
    1018         db      006h, 077h, 000h, 014h, 047h, 070h, 000h, 007h
    1019         db      000h, 007h, 000h, 007h, 077h, 044h, 006h, 077h
    1020         db      002h, 071h, 004h, 011h, 002h, 04fh, 006h, 0ffh
    1021         db      000h, 004h, 047h, 071h, 004h, 011h, 00ah, 077h
    1022         db      002h, 071h, 004h, 011h, 002h, 00fh, 004h, 0ffh
    1023         db      000h, 006h, 0f0h, 077h, 071h, 000h, 004h, 011h
    1024         db      002h, 00fh, 00ch, 0bfh, 000h, 006h, 007h, 077h
    1025         db      070h, 000h, 00ah, 077h, 000h, 008h, 080h, 077h
    1026         db      070h, 077h, 008h, 007h, 000h, 004h, 070h, 00fh
    1027         db      008h, 0bfh, 002h, 007h, 004h, 077h, 000h, 000h
    1028         db      00ah, 077h, 000h, 004h, 04fh, 0f4h, 034h, 077h
    1029         db      006h, 044h, 004h, 077h, 000h, 006h, 071h, 077h
    1030         db      04fh, 000h, 006h, 0ffh, 000h, 00ah, 047h, 077h
    1031         db      071h, 077h, 070h, 000h, 008h, 000h, 000h, 008h
    1032         db      077h, 071h, 077h, 00fh, 004h, 0ffh, 002h, 0f0h
    1033         db      004h, 077h, 000h, 006h, 071h, 077h, 00bh, 000h
    1034         db      00ch, 0fbh, 000h, 008h, 007h, 077h, 070h, 078h
    1035         db      008h, 088h, 002h, 080h, 010h, 077h, 002h, 00bh
    1036         db      008h, 0fbh, 002h, 007h, 004h, 077h, 000h, 000h
    1037         db      00ah, 077h, 000h, 004h, 04fh, 0f4h, 022h, 077h
    1038         db      000h, 018h, 047h, 070h, 000h, 007h, 000h, 007h
    1039         db      000h, 007h, 077h, 044h, 077h, 044h, 004h, 077h
    1040         db      000h, 006h, 071h, 077h, 04fh, 000h, 006h, 0ffh
    1041         db      000h, 008h, 047h, 077h, 071h, 077h, 008h, 044h
    1042         db      000h, 00ah, 040h, 077h, 071h, 077h, 00fh, 000h
    1043         db      004h, 0ffh, 000h, 010h, 0f0h, 044h, 047h, 071h
    1044         db      077h, 00fh, 0bfh, 0b0h, 004h, 000h, 000h, 00ah
    1045         db      00fh, 0bfh, 007h, 077h, 070h, 000h, 00ah, 077h
    1046         db      000h, 008h, 080h, 077h, 070h, 077h, 008h, 007h
    1047         db      000h, 004h, 070h, 00fh, 008h, 0bfh, 000h, 006h
    1048         db      007h, 070h, 077h, 000h, 000h, 000h, 00ah, 077h
    1049         db      000h, 004h, 04fh, 044h, 00ah, 077h, 000h, 004h
    1050         db      044h, 047h, 004h, 077h, 000h, 004h, 044h, 047h
    1051         db      004h, 077h, 000h, 004h, 044h, 047h, 016h, 077h
    1052         db      000h, 006h, 074h, 044h, 047h, 000h, 004h, 077h
    1053         db      000h, 006h, 071h, 077h, 04fh, 000h, 006h, 0ffh
    1054         db      000h, 00ah, 047h, 077h, 071h, 077h, 04fh, 000h
    1055         db      004h, 07fh, 000h, 00ch, 077h, 040h, 077h, 071h
    1056         db      077h, 00fh, 004h, 0ffh, 000h, 010h, 0f0h, 0bfh
    1057         db      047h, 071h, 077h, 00bh, 0fbh, 0f0h, 008h, 0fbh
    1058         db      004h, 007h, 000h, 004h, 070h, 078h, 006h, 088h
    1059         db      000h, 004h, 022h, 080h, 010h, 077h, 002h, 00bh
    1060         db      008h, 0fbh, 004h, 007h, 002h, 077h, 000h, 000h
    1061         db      002h, 070h, 004h, 000h, 000h, 008h, 007h, 077h
    1062         db      044h, 047h, 00ah, 077h, 000h, 028h, 04fh, 047h
    1063         db      000h, 007h, 04fh, 047h, 000h, 007h, 04fh, 047h
    1064         db      000h, 007h, 047h, 070h, 000h, 007h, 000h, 007h
    1065         db      000h, 007h, 00ch, 077h, 000h, 006h, 071h, 077h
    1066         db      04fh, 000h, 006h, 0ffh, 000h, 00ah, 047h, 077h
    1067         db      071h, 077h, 047h, 000h, 004h, 0f1h, 000h, 00ch
    1068         db      017h, 040h, 077h, 071h, 077h, 00fh, 004h, 0ffh
    1069         db      000h, 010h, 0f0h, 0fbh, 047h, 071h, 077h, 00fh
    1070         db      0bfh, 0b0h, 008h, 0bfh, 002h, 007h, 006h, 070h
    1071         db      006h, 088h, 000h, 008h, 0aah, 080h, 077h, 070h
    1072         db      006h, 077h, 004h, 007h, 000h, 004h, 070h, 00fh
    1073         db      008h, 0bfh, 002h, 000h, 004h, 077h, 000h, 000h
    1074         db      018h, 077h, 002h, 044h, 006h, 077h, 002h, 044h
    1075         db      006h, 077h, 002h, 044h, 022h, 077h, 000h, 006h
    1076         db      071h, 077h, 04fh, 000h, 006h, 0ffh, 000h, 00ah
    1077         db      047h, 077h, 071h, 077h, 04fh, 000h, 004h, 071h
    1078         db      000h, 00eh, 07fh, 040h, 077h, 071h, 077h, 00fh
    1079         db      0ffh, 000h, 004h, 000h, 000h, 00ch, 0bfh, 047h
    1080         db      071h, 077h, 00bh, 0f0h, 004h, 000h, 006h, 0fbh
    1081         db      000h, 008h, 007h, 077h, 000h, 007h, 008h, 077h
    1082         db      000h, 008h, 070h, 011h, 077h, 011h, 00ah, 077h
    1083         db      00ah, 000h, 002h, 077h, 004h, 007h, 000h, 000h
    1084         db      002h, 077h, 004h, 044h, 02ah, 077h, 000h, 014h
    1085         db      047h, 070h, 000h, 007h, 000h, 007h, 000h, 007h
    1086         db      077h, 074h, 004h, 044h, 004h, 077h, 000h, 004h
    1087         db      071h, 077h, 008h, 044h, 000h, 030h, 047h, 077h
    1088         db      071h, 077h, 047h, 011h, 0f7h, 017h, 040h, 077h
    1089         db      071h, 077h, 00fh, 0ffh, 00fh, 00bh, 0fbh, 047h
    1090         db      071h, 077h, 00fh, 0bfh, 000h, 00fh, 006h, 0bfh
    1091         db      000h, 006h, 007h, 000h, 077h, 000h, 00ch, 000h
    1092         db      000h, 006h, 071h, 011h, 017h, 000h, 00ch, 070h
    1093         db      004h, 0bfh, 002h, 007h, 004h, 070h, 004h, 077h
    1094         db      000h, 000h, 000h, 006h, 077h, 04fh, 0f4h, 000h
    1095         db      03ch, 077h, 000h, 006h, 044h, 077h, 044h, 000h
    1096         db      004h, 077h, 002h, 071h, 00eh, 077h, 000h, 006h
    1097         db      071h, 077h, 04fh, 000h, 004h, 071h, 000h, 010h
    1098         db      01fh, 040h, 077h, 071h, 077h, 00fh, 0ffh, 000h
    1099         db      004h, 0bfh, 000h, 00ch, 047h, 071h, 077h, 00bh
    1100         db      0fbh, 0f0h, 008h, 0fbh, 000h, 004h, 007h, 077h
    1101         db      004h, 007h, 00ch, 077h, 002h, 011h, 00eh, 077h
    1102         db      004h, 000h, 002h, 077h, 006h, 007h, 002h, 077h
    1103         db      000h, 000h, 000h, 006h, 077h, 04fh, 0f4h, 000h
    1104         db      00ah, 077h, 000h, 004h, 074h, 044h, 00ch, 077h
    1105         db      000h, 004h, 044h, 047h, 004h, 077h, 000h, 004h
    1106         db      044h, 047h, 004h, 077h, 010h, 044h, 000h, 008h
    1107         db      077h, 044h, 077h, 044h, 004h, 077h, 002h, 071h
    1108         db      006h, 077h, 000h, 00eh, 074h, 044h, 047h, 077h
    1109         db      071h, 077h, 047h, 000h, 006h, 0f7h, 000h, 008h
    1110         db      040h, 077h, 071h, 077h, 004h, 000h, 000h, 00eh
    1111         db      00bh, 0f4h, 044h, 047h, 071h, 077h, 00fh, 000h
    1112         db      00ch, 0bfh, 002h, 007h, 006h, 070h, 00ah, 077h
    1113         db      000h, 006h, 071h, 011h, 017h, 000h, 010h, 077h
    1114         db      002h, 070h, 004h, 077h, 000h, 004h, 070h, 077h
    1115         db      000h, 000h, 000h, 006h, 077h, 04fh, 044h, 000h
    1116         db      00ah, 077h, 000h, 008h, 074h, 0f4h, 070h, 000h
    1117         db      008h, 077h, 000h, 010h, 04fh, 047h, 000h, 007h
    1118         db      04fh, 047h, 000h, 007h, 012h, 077h, 002h, 074h
    1119         db      004h, 044h, 004h, 077h, 002h, 071h, 006h, 077h
    1120         db      000h, 00ch, 074h, 0ffh, 047h, 077h, 071h, 077h
    1121         db      008h, 044h, 000h, 006h, 040h, 077h, 071h, 000h
    1122         db      004h, 077h, 000h, 004h, 074h, 0bfh, 004h, 0b4h
    1123         db      000h, 006h, 077h, 071h, 077h, 000h, 00eh, 000h
    1124         db      000h, 004h, 077h, 007h, 004h, 077h, 002h, 007h
    1125         db      008h, 077h, 000h, 006h, 011h, 077h, 011h, 000h
    1126         db      014h, 077h, 002h, 007h, 004h, 077h, 000h, 000h
    1127         db      000h, 006h, 077h, 044h, 047h, 000h, 00ah, 077h
    1128         db      000h, 004h, 074h, 047h, 00ch, 077h, 002h, 044h
    1129         db      006h, 077h, 002h, 044h, 008h, 077h, 000h, 00eh
    1130         db      070h, 000h, 007h, 000h, 007h, 000h, 007h, 000h
    1131         db      006h, 077h, 002h, 044h, 004h, 077h, 002h, 071h
    1132         db      006h, 077h, 000h, 00ch, 074h, 0ffh, 047h, 077h
    1133         db      071h, 077h, 004h, 04ch, 000h, 00ah, 0cch, 04ch
    1134         db      040h, 077h, 071h, 000h, 004h, 077h, 000h, 010h
    1135         db      074h, 0fbh, 0f4h, 047h, 077h, 071h, 077h, 070h
    1136         db      004h, 0bfh, 002h, 0b0h, 00ah, 077h, 002h, 070h
    1137         db      02ch, 077h, 000h, 000h, 042h, 077h, 000h, 006h
    1138         db      074h, 044h, 047h, 000h, 004h, 077h, 002h, 071h
    1139         db      006h, 077h, 000h, 00ch, 074h, 044h, 047h, 077h
    1140         db      071h, 077h, 008h, 044h, 000h, 006h, 047h, 077h
    1141         db      071h, 000h, 004h, 077h, 002h, 074h, 004h, 044h
    1142         db      004h, 077h, 002h, 071h, 004h, 077h, 004h, 000h
    1143         db      002h, 007h, 032h, 077h, 002h, 007h, 004h, 077h
    1144         db      000h, 000h, 092h, 077h, 002h, 070h, 02ch, 077h
    1145         db      000h, 000h, 000h, 001h
     1201        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1202        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1203        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1204        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1205        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1206        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1207        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1208        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1209        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1210        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1211        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1212        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1213        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1214        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1215        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1216        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1217        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1218        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1219        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1220        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1221        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1222        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1223        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1224        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1225        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1226        db      007h, 000h, 000h, 000h, 000h, 000h, 000h, 007h
     1227        db      007h, 007h, 007h, 004h, 004h, 004h, 007h, 007h
     1228        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1229        db      007h, 007h, 000h, 000h, 000h, 007h, 007h, 007h
     1230        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1231        db      007h, 000h, 000h, 007h, 007h, 007h, 007h, 007h
     1232        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1233        db      007h, 007h, 007h, 004h, 004h, 004h, 004h, 007h
     1234        db      007h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1235        db      004h, 004h, 004h, 004h, 004h, 004h, 004h, 004h
     1236        db      004h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1237        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1238        db      007h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1239        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1240        db      007h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1241        db      007h, 007h, 092h, 092h, 092h, 092h, 092h, 092h
     1242        db      092h, 092h, 092h, 092h, 092h, 092h, 092h, 007h
     1243        db      007h, 007h, 007h, 000h, 000h, 000h, 000h, 000h
     1244        db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     1245        db      007h, 007h, 007h, 000h, 007h, 000h, 007h, 000h
     1246        db      007h, 000h, 007h, 000h, 007h, 000h, 007h, 000h
     1247        db      007h, 007h, 06dh, 06dh, 06dh, 06dh, 06dh, 06dh
     1248        db      06dh, 06dh, 06dh, 06dh, 06dh, 06dh, 06dh, 007h
     1249        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1250        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1251        db      007h, 007h, 007h, 004h, 0ffh, 004h, 007h, 000h
     1252        db      000h, 000h, 007h, 007h, 007h, 007h, 007h, 007h
     1253        db      007h, 007h, 0ffh, 0ffh, 000h, 007h, 000h, 000h
     1254        db      000h, 000h, 000h, 000h, 007h, 007h, 007h, 007h
     1255        db      007h, 0ffh, 000h, 007h, 000h, 000h, 000h, 000h
     1256        db      007h, 000h, 000h, 007h, 000h, 000h, 000h, 007h
     1257        db      007h, 007h, 004h, 004h, 007h, 007h, 004h, 004h
     1258        db      007h, 007h, 007h, 007h, 001h, 001h, 001h, 007h
     1259        db      004h, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh
     1260        db      004h, 007h, 007h, 007h, 001h, 001h, 001h, 007h
     1261        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1262        db      007h, 007h, 007h, 007h, 001h, 001h, 001h, 007h
     1263        db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     1264        db      007h, 007h, 007h, 007h, 001h, 001h, 001h, 007h
     1265        db      007h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     1266        db      000h, 000h, 000h, 000h, 000h, 000h, 092h, 007h
     1267        db      007h, 007h, 007h, 000h, 007h, 0ech, 0ech, 0ech
     1268        db      0ech, 0ech, 0ech, 0ech, 0ech, 0ech, 0ech, 000h
     1269        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1270        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1271        db      007h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     1272        db      000h, 000h, 000h, 000h, 000h, 000h, 06dh, 007h
     1273        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1274        db      007h, 007h, 004h, 004h, 004h, 004h, 007h, 007h
     1275        db      007h, 007h, 007h, 004h, 004h, 007h, 007h, 007h
     1276        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1277        db      007h, 007h, 0ffh, 0ffh, 000h, 007h, 000h, 000h
     1278        db      000h, 000h, 000h, 000h, 007h, 007h, 007h, 007h
     1279        db      007h, 0ffh, 000h, 007h, 007h, 007h, 007h, 007h
     1280        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1281        db      007h, 007h, 004h, 004h, 007h, 007h, 007h, 007h
     1282        db      007h, 007h, 007h, 001h, 001h, 001h, 001h, 001h
     1283        db      004h, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh
     1284        db      004h, 007h, 007h, 001h, 001h, 001h, 001h, 001h
     1285        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1286        db      007h, 007h, 007h, 001h, 001h, 001h, 001h, 001h
     1287        db      000h, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 000h
     1288        db      007h, 007h, 007h, 001h, 001h, 001h, 001h, 001h
     1289        db      007h, 000h, 0ffh, 0ddh, 0ddh, 0ddh, 0ddh, 0d6h
     1290        db      0d6h, 0d6h, 0d6h, 0d6h, 0d6h, 000h, 092h, 007h
     1291        db      007h, 007h, 007h, 000h, 007h, 007h, 007h, 007h
     1292        db      007h, 007h, 007h, 007h, 007h, 007h, 0ech, 000h
     1293        db      007h, 007h, 007h, 000h, 007h, 007h, 000h, 007h
     1294        db      000h, 007h, 000h, 007h, 000h, 007h, 007h, 000h
     1295        db      007h, 000h, 0ffh, 0ddh, 0ddh, 0ddh, 0ddh, 0d6h
     1296        db      0d6h, 0d6h, 0d6h, 0d6h, 0d6h, 000h, 06dh, 007h
     1297        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1298        db      007h, 007h, 004h, 0ffh, 0ffh, 004h, 007h, 007h
     1299        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1300        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1301        db      007h, 007h, 0ffh, 0ffh, 000h, 007h, 007h, 007h
     1302        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1303        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1304        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1305        db      007h, 007h, 004h, 004h, 004h, 004h, 004h, 004h
     1306        db      007h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1307        db      004h, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh
     1308        db      004h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1309        db      007h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     1310        db      000h, 000h, 007h, 007h, 007h, 001h, 007h, 007h
     1311        db      000h, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 000h
     1312        db      007h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1313        db      007h, 000h, 0ffh, 0ddh, 0ddh, 0ddh, 0ddh, 0ddh
     1314        db      0ddh, 0d6h, 0d6h, 0d6h, 0d6h, 000h, 092h, 007h
     1315        db      007h, 007h, 007h, 000h, 007h, 0ech, 0ech, 0ech
     1316        db      0ech, 0ech, 0ech, 0ech, 0ech, 0ech, 0ech, 000h
     1317        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1318        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1319        db      007h, 000h, 0ffh, 0ddh, 0ddh, 0ddh, 0ddh, 0ddh
     1320        db      0ddh, 0d6h, 0d6h, 0d6h, 0d6h, 000h, 06dh, 007h
     1321        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1322        db      007h, 007h, 004h, 0ffh, 0ffh, 004h, 007h, 007h
     1323        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1324        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1325        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1326        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1327        db      007h, 000h, 000h, 007h, 007h, 007h, 007h, 007h
     1328        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1329        db      007h, 007h, 004h, 004h, 007h, 007h, 004h, 004h
     1330        db      007h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1331        db      004h, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh
     1332        db      004h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1333        db      004h, 004h, 004h, 004h, 004h, 004h, 004h, 004h
     1334        db      004h, 000h, 007h, 007h, 007h, 001h, 007h, 007h
     1335        db      000h, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 000h
     1336        db      004h, 004h, 004h, 007h, 007h, 001h, 007h, 007h
     1337        db      007h, 000h, 0ffh, 0ddh, 0ddh, 0ddh, 0ddh, 0ddh
     1338        db      0ddh, 0ddh, 0d6h, 0d6h, 0d6h, 000h, 092h, 007h
     1339        db      007h, 007h, 007h, 000h, 007h, 007h, 007h, 007h
     1340        db      007h, 007h, 007h, 007h, 007h, 007h, 0ech, 000h
     1341        db      007h, 007h, 007h, 000h, 007h, 007h, 000h, 007h
     1342        db      000h, 007h, 000h, 007h, 000h, 007h, 007h, 000h
     1343        db      007h, 000h, 0ffh, 0ddh, 0ddh, 0ddh, 0ddh, 0ddh
     1344        db      0ddh, 0ddh, 0d6h, 0d6h, 0d6h, 000h, 06dh, 007h
     1345        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1346        db      007h, 007h, 004h, 0ffh, 004h, 004h, 007h, 007h
     1347        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1348        db      004h, 004h, 004h, 007h, 007h, 007h, 007h, 007h
     1349        db      007h, 007h, 000h, 000h, 000h, 007h, 007h, 007h
     1350        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1351        db      007h, 0ffh, 000h, 007h, 000h, 000h, 000h, 000h
     1352        db      007h, 000h, 000h, 007h, 000h, 000h, 000h, 007h
     1353        db      007h, 007h, 007h, 004h, 004h, 004h, 004h, 007h
     1354        db      007h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1355        db      004h, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh
     1356        db      004h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1357        db      004h, 0ffh, 007h, 0ffh, 007h, 0ffh, 007h, 007h
     1358        db      004h, 000h, 007h, 007h, 007h, 001h, 007h, 007h
     1359        db      000h, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 000h
     1360        db      0fbh, 0ffh, 004h, 007h, 007h, 001h, 007h, 007h
     1361        db      007h, 000h, 0ffh, 0ddh, 0ddh, 0ddh, 0ddh, 01fh
     1362        db      01fh, 01fh, 0d6h, 0d6h, 0d6h, 000h, 092h, 007h
     1363        db      000h, 007h, 007h, 000h, 007h, 0ech, 0ech, 0ech
     1364        db      0ech, 0ech, 0ech, 0ech, 002h, 002h, 0ech, 000h
     1365        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1366        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1367        db      007h, 000h, 0ffh, 0ddh, 0ddh, 0ddh, 0ddh, 0ddh
     1368        db      0ddh, 0ddh, 0d6h, 0fbh, 0d6h, 000h, 06dh, 007h
     1369        db      007h, 000h, 000h, 000h, 000h, 000h, 000h, 007h
     1370        db      007h, 007h, 004h, 004h, 004h, 007h, 007h, 007h
     1371        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1372        db      004h, 0ffh, 004h, 007h, 000h, 000h, 000h, 007h
     1373        db      007h, 007h, 0ffh, 0ffh, 000h, 007h, 000h, 000h
     1374        db      000h, 000h, 000h, 000h, 007h, 007h, 007h, 007h
     1375        db      007h, 0ffh, 000h, 007h, 007h, 007h, 007h, 007h
     1376        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1377        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1378        db      007h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1379        db      004h, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh
     1380        db      004h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1381        db      004h, 007h, 0ffh, 001h, 0ffh, 001h, 001h, 007h
     1382        db      004h, 000h, 007h, 007h, 007h, 001h, 007h, 007h
     1383        db      000h, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 000h
     1384        db      0ffh, 0fbh, 004h, 007h, 007h, 001h, 007h, 007h
     1385        db      007h, 000h, 0ffh, 0ddh, 0ddh, 0ddh, 0ddh, 0ddh
     1386        db      0ddh, 0ddh, 01fh, 0d6h, 0d6h, 000h, 092h, 007h
     1387        db      007h, 000h, 007h, 000h, 007h, 000h, 0ech, 0ech
     1388        db      0ech, 0ech, 0ech, 0ech, 0fah, 0fah, 0ech, 000h
     1389        db      007h, 007h, 007h, 000h, 007h, 007h, 007h, 007h
     1390        db      007h, 007h, 000h, 007h, 000h, 007h, 007h, 000h
     1391        db      007h, 000h, 0ffh, 0ddh, 0ddh, 0ddh, 0ddh, 0ddh
     1392        db      0ddh, 0ddh, 0d6h, 0fbh, 0d6h, 000h, 06dh, 007h
     1393        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1394        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1395        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1396        db      004h, 004h, 007h, 007h, 007h, 007h, 007h, 007h
     1397        db      007h, 007h, 0ffh, 0ffh, 000h, 007h, 000h, 000h
     1398        db      000h, 000h, 000h, 000h, 007h, 007h, 007h, 007h
     1399        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1400        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1401        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1402        db      007h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1403        db      004h, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh
     1404        db      004h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1405        db      004h, 0ffh, 007h, 001h, 007h, 001h, 007h, 0ffh
     1406        db      004h, 000h, 007h, 007h, 007h, 001h, 007h, 007h
     1407        db      000h, 0ffh, 0ffh, 0ffh, 000h, 000h, 000h, 000h
     1408        db      0fbh, 0ffh, 004h, 007h, 007h, 001h, 007h, 007h
     1409        db      007h, 000h, 0ffh, 0ddh, 0ddh, 0ddh, 0ddh, 0ddh
     1410        db      0ddh, 0ddh, 0ddh, 01fh, 0d6h, 000h, 092h, 007h
     1411        db      007h, 007h, 000h, 000h, 000h, 007h, 007h, 007h
     1412        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 000h
     1413        db      001h, 001h, 007h, 007h, 001h, 001h, 007h, 007h
     1414        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1415        db      007h, 000h, 0ffh, 0ddh, 0ddh, 0ddh, 0ddh, 0ddh
     1416        db      0fbh, 0ddh, 0ddh, 0fbh, 0d6h, 092h, 0fbh, 007h
     1417        db      007h, 007h, 004h, 004h, 004h, 004h, 007h, 007h
     1418        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1419        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1420        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1421        db      007h, 007h, 0ffh, 0ffh, 000h, 007h, 007h, 007h
     1422        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1423        db      007h, 000h, 000h, 007h, 007h, 007h, 007h, 007h
     1424        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1425        db      007h, 007h, 007h, 004h, 004h, 004h, 004h, 004h
     1426        db      007h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1427        db      004h, 004h, 004h, 004h, 004h, 004h, 004h, 004h
     1428        db      004h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1429        db      004h, 007h, 001h, 001h, 0ffh, 007h, 001h, 007h
     1430        db      004h, 000h, 007h, 007h, 007h, 001h, 007h, 007h
     1431        db      000h, 0ffh, 0ffh, 0ffh, 000h, 0ffh, 000h, 0fbh
     1432        db      0ffh, 0fbh, 004h, 007h, 007h, 001h, 007h, 007h
     1433        db      007h, 000h, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh
     1434        db      0ffh, 0ffh, 0ffh, 01fh, 0c3h, 000h, 007h, 007h
     1435        db      000h, 000h, 007h, 007h, 000h, 000h, 000h, 000h
     1436        db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     1437        db      007h, 001h, 001h, 001h, 001h, 007h, 007h, 000h
     1438        db      007h, 000h, 007h, 000h, 007h, 000h, 007h, 000h
     1439        db      007h, 000h, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh
     1440        db      0ffh, 0fbh, 0ffh, 0fbh, 0c3h, 0fbh, 007h, 007h
     1441        db      007h, 007h, 004h, 0ffh, 0ffh, 004h, 007h, 007h
     1442        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1443        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1444        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1445        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1446        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1447        db      007h, 0ffh, 000h, 007h, 000h, 000h, 000h, 000h
     1448        db      007h, 000h, 000h, 007h, 000h, 000h, 000h, 007h
     1449        db      007h, 007h, 004h, 004h, 007h, 007h, 004h, 004h
     1450        db      007h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1451        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1452        db      007h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1453        db      004h, 0ffh, 007h, 001h, 007h, 001h, 001h, 0ffh
     1454        db      004h, 000h, 007h, 007h, 007h, 001h, 007h, 007h
     1455        db      000h, 0ffh, 0ffh, 0ffh, 000h, 000h, 0fbh, 0ffh
     1456        db      0fbh, 0ffh, 004h, 007h, 007h, 001h, 007h, 007h
     1457        db      007h, 000h, 0d6h, 0d6h, 0d6h, 0d6h, 0d6h, 0d6h
     1458        db      0d6h, 000h, 000h, 01fh, 000h, 000h, 007h, 007h
     1459        db      007h, 007h, 000h, 007h, 000h, 007h, 007h, 007h
     1460        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1461        db      007h, 007h, 001h, 001h, 007h, 007h, 007h, 007h
     1462        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1463        db      007h, 000h, 0d6h, 0d6h, 0d6h, 0d6h, 0d6h, 0d6h
     1464        db      0d6h, 092h, 0fbh, 0fbh, 0fbh, 092h, 092h, 007h
     1465        db      007h, 007h, 004h, 0ffh, 0ffh, 004h, 007h, 007h
     1466        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1467        db      007h, 004h, 004h, 004h, 007h, 007h, 007h, 007h
     1468        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1469        db      007h, 007h, 000h, 000h, 000h, 007h, 007h, 007h
     1470        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1471        db      007h, 0ffh, 000h, 007h, 007h, 007h, 007h, 007h
     1472        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1473        db      007h, 007h, 004h, 004h, 007h, 007h, 004h, 004h
     1474        db      007h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1475        db      007h, 007h, 007h, 007h, 007h, 004h, 004h, 004h
     1476        db      004h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1477        db      004h, 007h, 0ffh, 007h, 0ffh, 007h, 0ffh, 007h
     1478        db      004h, 000h, 007h, 007h, 007h, 001h, 007h, 007h
     1479        db      000h, 000h, 000h, 000h, 000h, 0fbh, 0ffh, 004h
     1480        db      004h, 004h, 004h, 007h, 007h, 001h, 007h, 007h
     1481        db      007h, 007h, 000h, 0d6h, 0d6h, 0d6h, 0d6h, 0d6h
     1482        db      000h, 007h, 007h, 01fh, 007h, 007h, 007h, 007h
     1483        db      007h, 000h, 007h, 000h, 007h, 000h, 007h, 007h
     1484        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1485        db      007h, 001h, 001h, 001h, 001h, 007h, 007h, 007h
     1486        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1487        db      007h, 007h, 000h, 0d6h, 0d6h, 0d6h, 0d6h, 0fbh
     1488        db      0fbh, 0fbh, 0fbh, 0fbh, 0fbh, 0fbh, 0fbh, 0fbh
     1489        db      007h, 007h, 004h, 0ffh, 004h, 004h, 007h, 007h
     1490        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1491        db      007h, 004h, 0ffh, 004h, 007h, 000h, 000h, 000h
     1492        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1493        db      007h, 007h, 0ffh, 0ffh, 000h, 007h, 000h, 000h
     1494        db      000h, 000h, 000h, 000h, 007h, 007h, 007h, 007h
     1495        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1496        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1497        db      007h, 007h, 007h, 004h, 004h, 004h, 004h, 004h
     1498        db      007h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1499        db      007h, 007h, 007h, 007h, 007h, 004h, 0ffh, 0ffh
     1500        db      004h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1501        db      004h, 004h, 004h, 004h, 004h, 004h, 004h, 004h
     1502        db      004h, 000h, 007h, 007h, 007h, 001h, 007h, 007h
     1503        db      007h, 007h, 007h, 004h, 0fbh, 0ffh, 0fbh, 004h
     1504        db      0fbh, 004h, 007h, 007h, 007h, 001h, 007h, 007h
     1505        db      007h, 007h, 007h, 000h, 000h, 000h, 000h, 000h
     1506        db      007h, 007h, 007h, 01fh, 007h, 007h, 007h, 007h
     1507        db      000h, 007h, 007h, 007h, 007h, 007h, 000h, 007h
     1508        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1509        db      001h, 001h, 007h, 007h, 001h, 001h, 007h, 007h
     1510        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1511        db      007h, 007h, 007h, 000h, 000h, 000h, 000h, 000h
     1512        db      007h, 092h, 0fbh, 0fbh, 0fbh, 092h, 007h, 007h
     1513        db      007h, 007h, 004h, 004h, 004h, 007h, 007h, 007h
     1514        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1515        db      007h, 004h, 004h, 007h, 007h, 007h, 007h, 007h
     1516        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1517        db      007h, 007h, 0ffh, 0ffh, 000h, 007h, 000h, 000h
     1518        db      000h, 000h, 000h, 000h, 007h, 007h, 007h, 007h
     1519        db      092h, 092h, 092h, 092h, 092h, 092h, 092h, 092h
     1520        db      092h, 092h, 092h, 092h, 092h, 092h, 092h, 092h
     1521        db      007h, 007h, 007h, 007h, 007h, 007h, 004h, 004h
     1522        db      007h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1523        db      007h, 007h, 007h, 007h, 007h, 004h, 0ffh, 0ffh
     1524        db      004h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1525        db      004h, 0fch, 004h, 0fch, 0fch, 0fch, 004h, 0fch
     1526        db      004h, 000h, 007h, 007h, 007h, 001h, 007h, 007h
     1527        db      007h, 007h, 007h, 004h, 0ffh, 0fbh, 0ffh, 004h
     1528        db      004h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1529        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1530        db      007h, 01fh, 01fh, 01fh, 01fh, 01fh, 007h, 007h
     1531        db      007h, 007h, 007h, 000h, 007h, 007h, 007h, 007h
     1532        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1533        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1534        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1535        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1536        db      0ffh, 0fbh, 007h, 0fbh, 007h, 0fbh, 092h, 007h
     1537        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1538        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1539        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1540        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1541        db      007h, 007h, 0ffh, 0ffh, 000h, 007h, 007h, 007h
     1542        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1543        db      092h, 0ffh, 0ffh, 092h, 0ffh, 0ffh, 0ffh, 0ffh
     1544        db      092h, 0ffh, 0ffh, 092h, 0ffh, 0ffh, 0ffh, 092h
     1545        db      007h, 007h, 007h, 004h, 004h, 004h, 004h, 007h
     1546        db      007h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1547        db      007h, 007h, 007h, 007h, 007h, 004h, 004h, 004h
     1548        db      004h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1549        db      004h, 004h, 004h, 004h, 004h, 004h, 004h, 004h
     1550        db      004h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1551        db      007h, 007h, 007h, 004h, 004h, 004h, 004h, 004h
     1552        db      007h, 007h, 007h, 007h, 007h, 001h, 007h, 007h
     1553        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1554        db      007h, 007h, 01fh, 01fh, 01fh, 007h, 007h, 007h
     1555        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1556        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1557        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1558        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1559        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1560        db      0fbh, 007h, 007h, 0fbh, 007h, 007h, 0fbh, 007h
     1561        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1562        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1563        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1564        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1565        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1566        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1567        db      092h, 092h, 092h, 092h, 092h, 092h, 092h, 092h
     1568        db      092h, 092h, 092h, 092h, 092h, 092h, 092h, 092h
     1569        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1570        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1571        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1572        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1573        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1574        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1575        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1576        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1577        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1578        db      007h, 007h, 007h, 01fh, 007h, 007h, 007h, 007h
     1579        db      007h, 007h, 007h, 000h, 007h, 007h, 007h, 007h
     1580        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1581        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1582        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1583        db      007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h
     1584        db      007h, 007h, 007h, 0fbh, 007h, 007h, 007h, 007h
    11461585
    11471586        align   4
     
    17502189
    17512190        align   4
     2191_Resource_StrTab_261_0_data:
     2192        db      005h, 000h, 043h, 000h, 06ch, 000h, 06fh, 000h
     2193        db      073h, 000h, 065h, 000h, 000h, 000h, 000h, 000h
     2194        db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     2195        db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     2196        db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     2197        db      000h, 000h, 000h, 000h
     2198
     2199        align   4
    17522200_Resource_ResourceDescriptor:
    17532201        public  _Resource_ResourceDescriptor
     
    17552203        dd      _Resource_PEResTab
    17562204_Resource_NumberOfResources:
    1757         dd      11
     2205        dd      13
    17582206_Resource_ResourceSectionSize:
    17592207        dd      LResTabEnd - _Resource_PEResTab
  • trunk/src/comctl32/rsrc.rc

    r1565 r2126  
    1212  PUSHBUTTON    "Cancel", IDCANCEL,127,138,50,14
    1313  PUSHBUTTON    "&Apply", IDC_APPLY_BUTTON,181,138,50,14
    14   PUSHBUTTON    "Help",   IDHELP,235,138,50,14
    15   CONTROL       "Tab",    IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS,7,7,278,125
     14  PUSHBUTTON    "Help",   IDHELP,235,138,50,14,WS_TABSTOP|WS_GROUP
     15  CONTROL       "Tab",    IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_TABSTOP,7,7,278,125
    1616END
    1717
     
    2626  PUSHBUTTON    "< &Back", IDC_BACK_BUTTON,71,138,50,14
    2727  PUSHBUTTON    "Cancel",  IDCANCEL,178,138,50,14
    28   PUSHBUTTON    "Help",    IDHELP,235,138,50,14
     28  PUSHBUTTON    "Help",    IDHELP,235,138,50,14,WS_GROUP
    2929  LTEXT         "",        IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN
    3030  CONTROL       "Tab",     IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5
     
    6969}
    7070
     71IDT_CHECK BITMAP LOADONCALL DISCARDABLE
     72{
     73 '42 4D 8E 01 00 00 00 00 00 00 5E 00 00 00 28 00'
     74 '00 00 1F 00 00 00 10 00 00 00 01 00 04 00 02 00'
     75 '00 00 30 01 00 00 01 00 00 00 01 00 00 00 0A 00'
     76 '00 00 0A 00 00 00 00 00 00 00 00 00 80 00 00 80'
     77 '00 00 80 00 00 00 C0 C0 C0 00 80 80 80 00 00 FF'
     78 '00 00 00 FF FF 00 FF 00 00 00 FF FF FF 00 1F 99'
     79 '00 00 01 99 0D 11 02 99 0E 11 01 99 00 00 01 99'
     80 '0D 11 02 99 0E 11 01 99 00 00 01 99 02 11 09 99'
     81 '02 11 02 99 02 11 0A 99 02 11 01 99 00 00 01 99'
     82 '02 11 09 99 02 11 02 99 02 11 0A 99 02 11 01 99'
     83 '00 00 01 99 02 11 09 99 02 11 02 99 02 11 03 99'
     84 '02 00 05 99 02 11 01 99 00 00 01 99 02 11 09 99'
     85 '02 11 02 99 02 11 03 99 03 00 04 99 02 11 01 99'
     86 '00 00 01 99 02 11 09 99 02 11 02 99 02 11 02 99'
     87 '04 00 04 99 02 11 01 99 00 00 01 99 02 11 09 99'
     88 '02 11 02 99 02 11 01 99 02 00 02 99 02 00 03 99'
     89 '02 11 01 99 00 00 01 99 02 11 09 99 02 11 02 99'
     90 '02 11 02 00 04 99 02 00 02 99 02 11 01 99 00 00'
     91 '01 99 02 11 09 99 02 11 02 99 02 11 01 00 06 99'
     92 '02 00 01 99 02 11 01 99 00 00 01 99 02 11 09 99'
     93 '02 11 02 99 02 11 07 99 02 00 01 99 01 00 01 11'
     94 '01 99 00 00 01 99 02 11 09 99 02 11 02 99 02 11'
     95 '08 99 01 00 01 99 01 00 01 11 01 99 00 00 01 99'
     96 '0D 11 02 99 0A 11 02 00 02 11 01 99 00 00 01 99'
     97 '0D 11 02 99 0E 11 01 99 00 00 1F 99 00 01'
     98}
     99
     100STRINGTABLE DISCARDABLE
     101{
     102    IDS_CLOSE    "Close"
     103}
    71104
    72105IDB_STD_SMALL BITMAP LOADONCALL DISCARDABLE
     
    366399}
    367400
     401/* BINRES idb_view_small.bmp */
    368402IDB_VIEW_SMALL BITMAP LOADONCALL DISCARDABLE
    369403{
    370  '42 4D 2A 05 00 00 00 00 00 00 76 00 00 00 28 00'
    371  '00 00 C0 00 00 00 10 00 00 00 01 00 04 00 02 00'
    372  '00 00 B4 04 00 00 00 00 00 00 00 00 00 00 00 00'
     404 '42 4D 36 10 00 00 00 00 00 00 36 04 00 00 28 00'
     405 '00 00 C0 00 00 00 10 00 00 00 01 00 08 00 00 00'
     406 '00 00 00 0C 00 00 00 00 00 00 00 00 00 00 00 00'
    373407 '00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 80'
    374408 '00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80'
    375  '00 00 C0 C0 C0 00 80 80 80 00 00 00 FF 00 00 FF'
     409 '00 00 C0 C0 C0 00 C0 DC C0 00 F0 CA A6 00 04 04'
     410 '04 00 08 08 08 00 0C 0C 0C 00 11 11 11 00 16 16'
     411 '16 00 1C 1C 1C 00 22 22 22 00 29 29 29 00 55 55'
     412 '55 00 4D 4D 4D 00 42 42 42 00 39 39 39 00 80 7C'
     413 'FF 00 50 50 FF 00 93 00 D6 00 FF EC CC 00 C6 D6'
     414 'EF 00 D6 E7 E7 00 90 A9 AD 00 00 00 33 00 00 00'
     415 '66 00 00 00 99 00 00 00 CC 00 00 33 00 00 00 33'
     416 '33 00 00 33 66 00 00 33 99 00 00 33 CC 00 00 33'
     417 'FF 00 00 66 00 00 00 66 33 00 00 66 66 00 00 66'
     418 '99 00 00 66 CC 00 00 66 FF 00 00 99 00 00 00 99'
     419 '33 00 00 99 66 00 00 99 99 00 00 99 CC 00 00 99'
     420 'FF 00 00 CC 00 00 00 CC 33 00 00 CC 66 00 00 CC'
     421 '99 00 00 CC CC 00 00 CC FF 00 00 FF 66 00 00 FF'
     422 '99 00 00 FF CC 00 33 00 00 00 33 00 33 00 33 00'
     423 '66 00 33 00 99 00 33 00 CC 00 33 00 FF 00 33 33'
     424 '00 00 33 33 33 00 33 33 66 00 33 33 99 00 33 33'
     425 'CC 00 33 33 FF 00 33 66 00 00 33 66 33 00 33 66'
     426 '66 00 33 66 99 00 33 66 CC 00 33 66 FF 00 33 99'
     427 '00 00 33 99 33 00 33 99 66 00 33 99 99 00 33 99'
     428 'CC 00 33 99 FF 00 33 CC 00 00 33 CC 33 00 33 CC'
     429 '66 00 33 CC 99 00 33 CC CC 00 33 CC FF 00 33 FF'
     430 '33 00 33 FF 66 00 33 FF 99 00 33 FF CC 00 33 FF'
     431 'FF 00 66 00 00 00 66 00 33 00 66 00 66 00 66 00'
     432 '99 00 66 00 CC 00 66 00 FF 00 66 33 00 00 66 33'
     433 '33 00 66 33 66 00 66 33 99 00 66 33 CC 00 66 33'
     434 'FF 00 66 66 00 00 66 66 33 00 66 66 66 00 66 66'
     435 '99 00 66 66 CC 00 66 99 00 00 66 99 33 00 66 99'
     436 '66 00 66 99 99 00 66 99 CC 00 66 99 FF 00 66 CC'
     437 '00 00 66 CC 33 00 66 CC 99 00 66 CC CC 00 66 CC'
     438 'FF 00 66 FF 00 00 66 FF 33 00 66 FF 99 00 66 FF'
     439 'CC 00 CC 00 FF 00 FF 00 CC 00 99 99 00 00 99 33'
     440 '99 00 99 00 99 00 99 00 CC 00 99 00 00 00 99 33'
     441 '33 00 99 00 66 00 99 33 CC 00 99 00 FF 00 99 66'
     442 '00 00 99 66 33 00 99 33 66 00 99 66 99 00 99 66'
     443 'CC 00 99 33 FF 00 99 99 33 00 99 99 66 00 99 99'
     444 '99 00 99 99 CC 00 99 99 FF 00 99 CC 00 00 99 CC'
     445 '33 00 66 CC 66 00 99 CC 99 00 99 CC CC 00 99 CC'
     446 'FF 00 99 FF 00 00 99 FF 33 00 99 CC 66 00 99 FF'
     447 '99 00 99 FF CC 00 99 FF FF 00 CC 00 00 00 99 00'
     448 '33 00 CC 00 66 00 CC 00 99 00 CC 00 CC 00 99 33'
     449 '00 00 CC 33 33 00 CC 33 66 00 CC 33 99 00 CC 33'
     450 'CC 00 CC 33 FF 00 CC 66 00 00 CC 66 33 00 99 66'
     451 '66 00 CC 66 99 00 CC 66 CC 00 99 66 FF 00 CC 99'
     452 '00 00 CC 99 33 00 CC 99 66 00 CC 99 99 00 CC 99'
     453 'CC 00 CC 99 FF 00 CC CC 00 00 CC CC 33 00 CC CC'
     454 '66 00 CC CC 99 00 CC CC CC 00 CC CC FF 00 CC FF'
     455 '00 00 CC FF 33 00 99 FF 66 00 CC FF 99 00 CC FF'
     456 'CC 00 CC FF FF 00 CC 00 33 00 FF 00 66 00 FF 00'
     457 '99 00 CC 33 00 00 FF 33 33 00 FF 33 66 00 FF 33'
     458 '99 00 FF 33 CC 00 FF 33 FF 00 FF 66 00 00 FF 66'
     459 '33 00 CC 66 66 00 FF 66 99 00 FF 66 CC 00 CC 66'
     460 'FF 00 FF 99 00 00 FF 99 33 00 FF 99 66 00 FF 99'
     461 '99 00 FF 99 CC 00 FF 99 FF 00 FF CC 00 00 FF CC'
     462 '33 00 FF CC 66 00 FF CC 99 00 FF CC CC 00 FF CC'
     463 'FF 00 FF FF 33 00 CC FF 66 00 FF FF 99 00 FF FF'
     464 'CC 00 66 66 FF 00 66 FF 66 00 66 FF FF 00 FF 66'
     465 '66 00 FF 66 FF 00 FF FF 66 00 21 00 A5 00 5F 5F'
     466 '5F 00 77 77 77 00 86 86 86 00 96 96 96 00 CB CB'
     467 'CB 00 B2 B2 B2 00 D7 D7 D7 00 DD DD DD 00 E3 E3'
     468 'E3 00 EA EA EA 00 F1 F1 F1 00 F8 F8 F8 00 F0 FB'
     469 'FF 00 A4 A0 A0 00 80 80 80 00 00 00 FF 00 00 FF'
    376470 '00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF'
    377  '00 00 FF FF FF 00 C0 77 00 00 08 77 02 70 04 00'
    378  '00 08 07 77 74 44 0A 77 00 04 44 47 04 77 00 04'
    379  '44 47 04 77 00 18 47 70 00 07 00 07 00 07 77 74'
    380  '44 47 04 77 00 04 71 77 08 44 00 06 47 77 71 00'
    381  '0E 77 02 71 0E 77 02 71 14 77 02 70 0C 00 02 77'
    382  '0E 70 0A 00 02 07 04 77 00 00 12 77 00 08 74 F4'
    383  '70 00 06 77 00 10 4F 47 00 07 4F 47 00 07 12 77'
    384  '00 06 44 77 44 00 04 77 00 06 11 17 4F 00 06 FF'
    385  '00 08 47 77 11 17 0C 77 00 04 11 17 08 00 04 77'
    386  '00 04 11 17 0E 00 00 08 07 77 70 78 08 88 02 80'
    387  '10 77 02 0B 08 FB 02 07 04 77 00 00 0A 77 04 44'
    388  '04 77 00 04 74 47 0A 77 02 44 06 77 02 44 06 77'
    389  '00 14 47 70 00 07 00 07 00 07 77 44 06 77 02 71'
    390  '04 11 02 4F 06 FF 00 04 47 71 04 11 0A 77 02 71'
    391  '04 11 02 0F 04 FF 00 06 F0 77 71 00 04 11 02 0F'
    392  '0C BF 00 06 07 77 70 00 0A 77 00 08 80 77 70 77'
    393  '08 07 00 04 70 0F 08 BF 02 07 04 77 00 00 0A 77'
    394  '00 04 4F F4 34 77 06 44 04 77 00 06 71 77 4F 00'
    395  '06 FF 00 0A 47 77 71 77 70 00 08 00 00 08 77 71'
    396  '77 0F 04 FF 02 F0 04 77 00 06 71 77 0B 00 0C FB'
    397  '00 08 07 77 70 78 08 88 02 80 10 77 02 0B 08 FB'
    398  '02 07 04 77 00 00 0A 77 00 04 4F F4 22 77 00 18'
    399  '47 70 00 07 00 07 00 07 77 44 77 44 04 77 00 06'
    400  '71 77 4F 00 06 FF 00 08 47 77 71 77 08 44 00 0A'
    401  '40 77 71 77 0F 00 04 FF 00 10 F0 44 47 71 77 0F'
    402  'BF B0 04 00 00 0A 0F BF 07 77 70 00 0A 77 00 08'
    403  '80 77 70 77 08 07 00 04 70 0F 08 BF 00 06 07 70'
    404  '77 00 00 00 0A 77 00 04 4F 44 0A 77 00 04 44 47'
    405  '04 77 00 04 44 47 04 77 00 04 44 47 16 77 00 06'
    406  '74 44 47 00 04 77 00 06 71 77 4F 00 06 FF 00 0A'
    407  '47 77 71 77 4F 00 04 7F 00 0C 77 40 77 71 77 0F'
    408  '04 FF 00 10 F0 BF 47 71 77 0B FB F0 08 FB 04 07'
    409  '00 04 70 78 06 88 00 04 22 80 10 77 02 0B 08 FB'
    410  '04 07 02 77 00 00 02 70 04 00 00 08 07 77 44 47'
    411  '0A 77 00 28 4F 47 00 07 4F 47 00 07 4F 47 00 07'
    412  '47 70 00 07 00 07 00 07 0C 77 00 06 71 77 4F 00'
    413  '06 FF 00 0A 47 77 71 77 47 00 04 F1 00 0C 17 40'
    414  '77 71 77 0F 04 FF 00 10 F0 FB 47 71 77 0F BF B0'
    415  '08 BF 02 07 06 70 06 88 00 08 AA 80 77 70 06 77'
    416  '04 07 00 04 70 0F 08 BF 02 00 04 77 00 00 18 77'
    417  '02 44 06 77 02 44 06 77 02 44 22 77 00 06 71 77'
    418  '4F 00 06 FF 00 0A 47 77 71 77 4F 00 04 71 00 0E'
    419  '7F 40 77 71 77 0F FF 00 04 00 00 0C BF 47 71 77'
    420  '0B F0 04 00 06 FB 00 08 07 77 00 07 08 77 00 08'
    421  '70 11 77 11 0A 77 0A 00 02 77 04 07 00 00 02 77'
    422  '04 44 2A 77 00 14 47 70 00 07 00 07 00 07 77 74'
    423  '04 44 04 77 00 04 71 77 08 44 00 30 47 77 71 77'
    424  '47 11 F7 17 40 77 71 77 0F FF 0F 0B FB 47 71 77'
    425  '0F BF 00 0F 06 BF 00 06 07 00 77 00 0C 00 00 06'
    426  '71 11 17 00 0C 70 04 BF 02 07 04 70 04 77 00 00'
    427  '00 06 77 4F F4 00 3C 77 00 06 44 77 44 00 04 77'
    428  '02 71 0E 77 00 06 71 77 4F 00 04 71 00 10 1F 40'
    429  '77 71 77 0F FF 00 04 BF 00 0C 47 71 77 0B FB F0'
    430  '08 FB 00 04 07 77 04 07 0C 77 02 11 0E 77 04 00'
    431  '02 77 06 07 02 77 00 00 00 06 77 4F F4 00 0A 77'
    432  '00 04 74 44 0C 77 00 04 44 47 04 77 00 04 44 47'
    433  '04 77 10 44 00 08 77 44 77 44 04 77 02 71 06 77'
    434  '00 0E 74 44 47 77 71 77 47 00 06 F7 00 08 40 77'
    435  '71 77 04 00 00 0E 0B F4 44 47 71 77 0F 00 0C BF'
    436  '02 07 06 70 0A 77 00 06 71 11 17 00 10 77 02 70'
    437  '04 77 00 04 70 77 00 00 00 06 77 4F 44 00 0A 77'
    438  '00 08 74 F4 70 00 08 77 00 10 4F 47 00 07 4F 47'
    439  '00 07 12 77 02 74 04 44 04 77 02 71 06 77 00 0C'
    440  '74 FF 47 77 71 77 08 44 00 06 40 77 71 00 04 77'
    441  '00 04 74 BF 04 B4 00 06 77 71 77 00 0E 00 00 04'
    442  '77 07 04 77 02 07 08 77 00 06 11 77 11 00 14 77'
    443  '02 07 04 77 00 00 00 06 77 44 47 00 0A 77 00 04'
    444  '74 47 0C 77 02 44 06 77 02 44 08 77 00 0E 70 00'
    445  '07 00 07 00 07 00 06 77 02 44 04 77 02 71 06 77'
    446  '00 0C 74 FF 47 77 71 77 04 4C 00 0A CC 4C 40 77'
    447  '71 00 04 77 00 10 74 FB F4 47 77 71 77 70 04 BF'
    448  '02 B0 0A 77 02 70 2C 77 00 00 42 77 00 06 74 44'
    449  '47 00 04 77 02 71 06 77 00 0C 74 44 47 77 71 77'
    450  '08 44 00 06 47 77 71 00 04 77 02 74 04 44 04 77'
    451  '02 71 04 77 04 00 02 07 32 77 02 07 04 77 00 00'
    452  '92 77 02 70 2C 77 00 00 00 01'
     471 '00 00 FF FF FF 00 07 07 07 07 07 07 07 07 07 07'
     472 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     473 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     474 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     475 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     476 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     477 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     478 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     479 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     480 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     481 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     482 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     483 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 00'
     484 '00 00 00 00 00 07 07 07 07 04 04 04 07 07 07 07'
     485 '07 07 07 07 07 07 07 07 00 00 00 07 07 07 07 07'
     486 '07 07 07 07 07 07 07 00 00 07 07 07 07 07 07 07'
     487 '07 07 07 07 07 07 07 07 07 04 04 04 04 07 07 07'
     488 '07 07 07 01 07 07 04 04 04 04 04 04 04 04 04 07'
     489 '07 07 07 01 07 07 07 07 07 07 07 07 07 07 07 07'
     490 '07 07 07 01 07 07 07 07 07 07 07 07 07 07 07 07'
     491 '07 07 07 01 07 07 07 07 92 92 92 92 92 92 92 92'
     492 '92 92 92 92 92 07 07 07 07 00 00 00 00 00 00 00'
     493 '00 00 00 00 00 00 07 07 07 00 07 00 07 00 07 00'
     494 '07 00 07 00 07 00 07 07 6D 6D 6D 6D 6D 6D 6D 6D'
     495 '6D 6D 6D 6D 6D 07 07 07 07 07 07 07 07 07 07 07'
     496 '07 07 07 07 07 07 07 07 07 04 FF 04 07 00 00 00'
     497 '07 07 07 07 07 07 07 07 FF FF 00 07 00 00 00 00'
     498 '00 00 07 07 07 07 07 FF 00 07 00 00 00 00 07 00'
     499 '00 07 00 00 00 07 07 07 04 04 07 07 04 04 07 07'
     500 '07 07 01 01 01 07 04 FF FF FF FF FF FF FF 04 07'
     501 '07 07 01 01 01 07 07 07 07 07 07 07 07 07 07 07'
     502 '07 07 01 01 01 07 00 00 00 00 00 00 00 00 07 07'
     503 '07 07 01 01 01 07 07 00 00 00 00 00 00 00 00 00'
     504 '00 00 00 00 92 07 07 07 07 00 07 EC EC EC EC EC'
     505 'EC EC EC EC EC 00 07 07 07 07 07 07 07 07 07 07'
     506 '07 07 07 07 07 07 07 00 00 00 00 00 00 00 00 00'
     507 '00 00 00 00 6D 07 07 07 07 07 07 07 07 07 07 07'
     508 '04 04 04 04 07 07 07 07 07 04 04 07 07 07 07 07'
     509 '07 07 07 07 07 07 07 07 FF FF 00 07 00 00 00 00'
     510 '00 00 07 07 07 07 07 FF 00 07 07 07 07 07 07 07'
     511 '07 07 07 07 07 07 07 07 04 04 07 07 07 07 07 07'
     512 '07 01 01 01 01 01 04 FF FF FF FF FF FF FF 04 07'
     513 '07 01 01 01 01 01 07 07 07 07 07 07 07 07 07 07'
     514 '07 01 01 01 01 01 00 FF FF FF FF FF FF 00 07 07'
     515 '07 01 01 01 01 01 07 00 FF DD DD DD DD D6 D6 D6'
     516 'D6 D6 D6 00 92 07 07 07 07 00 07 07 07 07 07 07'
     517 '07 07 07 07 EC 00 07 07 07 00 07 07 00 07 00 07'
     518 '00 07 00 07 07 00 07 00 FF DD DD DD DD D6 D6 D6'
     519 'D6 D6 D6 00 6D 07 07 07 07 07 07 07 07 07 07 07'
     520 '04 FF FF 04 07 07 07 07 07 07 07 07 07 07 07 07'
     521 '07 07 07 07 07 07 07 07 FF FF 00 07 07 07 07 07'
     522 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     523 '07 07 07 07 07 07 07 07 04 04 04 04 04 04 07 07'
     524 '07 07 07 01 07 07 04 FF FF FF FF FF FF FF 04 07'
     525 '07 07 07 01 07 07 07 00 00 00 00 00 00 00 00 00'
     526 '07 07 07 01 07 07 00 FF FF FF FF FF FF 00 07 07'
     527 '07 07 07 01 07 07 07 00 FF DD DD DD DD DD DD D6'
     528 'D6 D6 D6 00 92 07 07 07 07 00 07 EC EC EC EC EC'
     529 'EC EC EC EC EC 00 07 07 07 07 07 07 07 07 07 07'
     530 '07 07 07 07 07 07 07 00 FF DD DD DD DD DD DD D6'
     531 'D6 D6 D6 00 6D 07 07 07 07 07 07 07 07 07 07 07'
     532 '04 FF FF 04 07 07 07 07 07 07 07 07 07 07 07 07'
     533 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     534 '07 07 07 07 07 07 07 00 00 07 07 07 07 07 07 07'
     535 '07 07 07 07 07 07 07 07 04 04 07 07 04 04 07 07'
     536 '07 07 07 01 07 07 04 FF FF FF FF FF FF FF 04 07'
     537 '07 07 07 01 07 07 04 04 04 04 04 04 04 04 04 00'
     538 '07 07 07 01 07 07 00 FF FF FF FF FF FF 00 04 04'
     539 '04 07 07 01 07 07 07 00 FF DD DD DD DD DD DD DD'
     540 'D6 D6 D6 00 92 07 07 07 07 00 07 07 07 07 07 07'
     541 '07 07 07 07 EC 00 07 07 07 00 07 07 00 07 00 07'
     542 '00 07 00 07 07 00 07 00 FF DD DD DD DD DD DD DD'
     543 'D6 D6 D6 00 6D 07 07 07 07 07 07 07 07 07 07 07'
     544 '04 FF 04 04 07 07 07 07 07 07 07 07 07 07 04 04'
     545 '04 07 07 07 07 07 07 07 00 00 00 07 07 07 07 07'
     546 '07 07 07 07 07 07 07 FF 00 07 00 00 00 00 07 00'
     547 '00 07 00 00 00 07 07 07 07 04 04 04 04 07 07 07'
     548 '07 07 07 01 07 07 04 FF FF FF FF FF FF FF 04 07'
     549 '07 07 07 01 07 07 04 FF 07 FF 07 FF 07 07 04 00'
     550 '07 07 07 01 07 07 00 FF FF FF FF FF FF 00 FB FF'
     551 '04 07 07 01 07 07 07 00 FF DD DD DD DD 1F 1F 1F'
     552 'D6 D6 D6 00 92 07 00 07 07 00 07 EC EC EC EC EC'
     553 'EC EC 02 02 EC 00 07 07 07 07 07 07 07 07 07 07'
     554 '07 07 07 07 07 07 07 00 FF DD DD DD DD DD DD DD'
     555 'D6 FB D6 00 6D 07 07 00 00 00 00 00 00 07 07 07'
     556 '04 04 04 07 07 07 07 07 07 07 07 07 07 07 04 FF'
     557 '04 07 00 00 00 07 07 07 FF FF 00 07 00 00 00 00'
     558 '00 00 07 07 07 07 07 FF 00 07 07 07 07 07 07 07'
     559 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     560 '07 07 07 01 07 07 04 FF FF FF FF FF FF FF 04 07'
     561 '07 07 07 01 07 07 04 07 FF 01 FF 01 01 07 04 00'
     562 '07 07 07 01 07 07 00 FF FF FF FF FF FF 00 FF FB'
     563 '04 07 07 01 07 07 07 00 FF DD DD DD DD DD DD DD'
     564 '1F D6 D6 00 92 07 07 00 07 00 07 00 EC EC EC EC'
     565 'EC EC FA FA EC 00 07 07 07 00 07 07 07 07 07 07'
     566 '00 07 00 07 07 00 07 00 FF DD DD DD DD DD DD DD'
     567 'D6 FB D6 00 6D 07 07 07 07 07 07 07 07 07 07 07'
     568 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 04 04'
     569 '07 07 07 07 07 07 07 07 FF FF 00 07 00 00 00 00'
     570 '00 00 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     571 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     572 '07 07 07 01 07 07 04 FF FF FF FF FF FF FF 04 07'
     573 '07 07 07 01 07 07 04 FF 07 01 07 01 07 FF 04 00'
     574 '07 07 07 01 07 07 00 FF FF FF 00 00 00 00 FB FF'
     575 '04 07 07 01 07 07 07 00 FF DD DD DD DD DD DD DD'
     576 'DD 1F D6 00 92 07 07 07 00 00 00 07 07 07 07 07'
     577 '07 07 07 07 07 00 01 01 07 07 01 01 07 07 07 07'
     578 '07 07 07 07 07 07 07 00 FF DD DD DD DD DD FB DD'
     579 'DD FB D6 92 FB 07 07 07 04 04 04 04 07 07 07 07'
     580 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     581 '07 07 07 07 07 07 07 07 FF FF 00 07 07 07 07 07'
     582 '07 07 07 07 07 07 07 00 00 07 07 07 07 07 07 07'
     583 '07 07 07 07 07 07 07 07 07 04 04 04 04 04 07 07'
     584 '07 07 07 01 07 07 04 04 04 04 04 04 04 04 04 07'
     585 '07 07 07 01 07 07 04 07 01 01 FF 07 01 07 04 00'
     586 '07 07 07 01 07 07 00 FF FF FF 00 FF 00 FB FF FB'
     587 '04 07 07 01 07 07 07 00 FF FF FF FF FF FF FF FF'
     588 'FF 1F C3 00 07 07 00 00 07 07 00 00 00 00 00 00'
     589 '00 00 00 00 00 00 07 01 01 01 01 07 07 00 07 00'
     590 '07 00 07 00 07 00 07 00 FF FF FF FF FF FF FF FB'
     591 'FF FB C3 FB 07 07 07 07 04 FF FF 04 07 07 07 07'
     592 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     593 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     594 '07 07 07 07 07 07 07 FF 00 07 00 00 00 00 07 00'
     595 '00 07 00 00 00 07 07 07 04 04 07 07 04 04 07 07'
     596 '07 07 07 01 07 07 07 07 07 07 07 07 07 07 07 07'
     597 '07 07 07 01 07 07 04 FF 07 01 07 01 01 FF 04 00'
     598 '07 07 07 01 07 07 00 FF FF FF 00 00 FB FF FB FF'
     599 '04 07 07 01 07 07 07 00 D6 D6 D6 D6 D6 D6 D6 00'
     600 '00 1F 00 00 07 07 07 07 00 07 00 07 07 07 07 07'
     601 '07 07 07 07 07 07 07 07 01 01 07 07 07 07 07 07'
     602 '07 07 07 07 07 07 07 00 D6 D6 D6 D6 D6 D6 D6 92'
     603 'FB FB FB 92 92 07 07 07 04 FF FF 04 07 07 07 07'
     604 '07 07 07 07 07 07 07 04 04 04 07 07 07 07 07 07'
     605 '07 07 07 07 07 07 07 07 00 00 00 07 07 07 07 07'
     606 '07 07 07 07 07 07 07 FF 00 07 07 07 07 07 07 07'
     607 '07 07 07 07 07 07 07 07 04 04 07 07 04 04 07 07'
     608 '07 07 07 01 07 07 07 07 07 07 07 04 04 04 04 07'
     609 '07 07 07 01 07 07 04 07 FF 07 FF 07 FF 07 04 00'
     610 '07 07 07 01 07 07 00 00 00 00 00 FB FF 04 04 04'
     611 '04 07 07 01 07 07 07 07 00 D6 D6 D6 D6 D6 00 07'
     612 '07 1F 07 07 07 07 07 00 07 00 07 00 07 07 07 07'
     613 '07 07 07 07 07 07 07 01 01 01 01 07 07 07 07 07'
     614 '07 07 07 07 07 07 07 07 00 D6 D6 D6 D6 FB FB FB'
     615 'FB FB FB FB FB FB 07 07 04 FF 04 04 07 07 07 07'
     616 '07 07 07 07 07 07 07 04 FF 04 07 00 00 00 07 07'
     617 '07 07 07 07 07 07 07 07 FF FF 00 07 00 00 00 00'
     618 '00 00 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     619 '07 07 07 07 07 07 07 07 07 04 04 04 04 04 07 07'
     620 '07 07 07 01 07 07 07 07 07 07 07 04 FF FF 04 07'
     621 '07 07 07 01 07 07 04 04 04 04 04 04 04 04 04 00'
     622 '07 07 07 01 07 07 07 07 07 04 FB FF FB 04 FB 04'
     623 '07 07 07 01 07 07 07 07 07 00 00 00 00 00 07 07'
     624 '07 1F 07 07 07 07 00 07 07 07 07 07 00 07 07 07'
     625 '07 07 07 07 07 07 01 01 07 07 01 01 07 07 07 07'
     626 '07 07 07 07 07 07 07 07 07 00 00 00 00 00 07 92'
     627 'FB FB FB 92 07 07 07 07 04 04 04 07 07 07 07 07'
     628 '07 07 07 07 07 07 07 04 04 07 07 07 07 07 07 07'
     629 '07 07 07 07 07 07 07 07 FF FF 00 07 00 00 00 00'
     630 '00 00 07 07 07 07 92 92 92 92 92 92 92 92 92 92'
     631 '92 92 92 92 92 92 07 07 07 07 07 07 04 04 07 07'
     632 '07 07 07 01 07 07 07 07 07 07 07 04 FF FF 04 07'
     633 '07 07 07 01 07 07 04 FC 04 FC FC FC 04 FC 04 00'
     634 '07 07 07 01 07 07 07 07 07 04 FF FB FF 04 04 07'
     635 '07 07 07 01 07 07 07 07 07 07 07 07 07 07 07 1F'
     636 '1F 1F 1F 1F 07 07 07 07 07 00 07 07 07 07 07 07'
     637 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     638 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 FF FB'
     639 '07 FB 07 FB 92 07 07 07 07 07 07 07 07 07 07 07'
     640 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     641 '07 07 07 07 07 07 07 07 FF FF 00 07 07 07 07 07'
     642 '07 07 07 07 07 07 92 FF FF 92 FF FF FF FF 92 FF'
     643 'FF 92 FF FF FF 92 07 07 07 04 04 04 04 07 07 07'
     644 '07 07 07 01 07 07 07 07 07 07 07 04 04 04 04 07'
     645 '07 07 07 01 07 07 04 04 04 04 04 04 04 04 04 07'
     646 '07 07 07 01 07 07 07 07 07 04 04 04 04 04 07 07'
     647 '07 07 07 01 07 07 07 07 07 07 07 07 07 07 07 07'
     648 '1F 1F 1F 07 07 07 07 07 07 07 07 07 07 07 07 07'
     649 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     650 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 FB 07'
     651 '07 FB 07 07 FB 07 07 07 07 07 07 07 07 07 07 07'
     652 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     653 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     654 '07 07 07 07 07 07 92 92 92 92 92 92 92 92 92 92'
     655 '92 92 92 92 92 92 07 07 07 07 07 07 07 07 07 07'
     656 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     657 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     658 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     659 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     660 '07 1F 07 07 07 07 07 07 07 00 07 07 07 07 07 07'
     661 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     662 '07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07'
     663 '07 FB 07 07 07 07'
    453664}
    454665
  • trunk/src/comctl32/tab.c

    r1615 r2126  
    1 /* $Id: tab.c,v 1.17 1999-11-05 13:01:33 achimha Exp $ */
     1/* $Id: tab.c,v 1.18 1999-12-18 20:57:00 achimha Exp $ */
    22/*
    33 * Tab control
     
    1515 */
    1616
    17 /* WINE 991031 level */
     17/* inconsistent: report! */
     18/* WINE 991212 level */
    1819
    1920#include <string.h>
     
    849850    INT    oldBkMode;
    850851    INT    cx,cy;
     852    BOOL deleteBrush = TRUE;
    851853
    852854    if (lStyle & TCS_BUTTONS)
     
    866868        if (!(lStyle & TCS_OWNERDRAWFIXED))
    867869        {
     870          COLORREF bk = GetSysColor(COLOR_3DHILIGHT);
    868871          DeleteObject(hbr);
    869           hbr = CreateSolidBrush(GetSysColor(COLOR_3DHILIGHT));
     872          hbr = GetSysColorBrush(COLOR_SCROLLBAR);
     873          SetTextColor(hdc, GetSysColor(COLOR_3DFACE));
     874          SetBkColor(hdc, bk);
     875
    870876        }
    871877
  • trunk/src/comctl32/toolbar.c

    r1776 r2126  
    1 /* $Id: toolbar.c,v 1.18 1999-11-19 16:19:22 achimha Exp $ */
     1/* $Id: toolbar.c,v 1.19 1999-12-18 20:57:01 achimha Exp $ */
    22/*
    33 * Toolbar control
     
    1010 *   - A little bug in TOOLBAR_DrawMasked()
    1111 *   - Button wrapping (under construction).
    12  *   - Messages.
     12 *   - Messages (under construction).
    1313 *   - Notifications.
    1414 *   - Fix TB_SETROWS.
    1515 *   - Tooltip support (almost complete).
    16  *   - Fix TOOLBAR_SetButtonInfo32A.
     16 *   - Unicode support (under construction).
     17 *   - Fix TOOLBAR_SetButtonInfo32A/W.
    1718 *   - Drag & drop of buttons
    1819 *
     
    2728 */
    2829
    29 /* WINE 991114 level */
     30/* WINE 991212 level */
    3031
    3132/* CB: Odin32/WINE bugs
     
    6869static void
    6970TOOLBAR_DrawString (TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr,
    70                     HDC hdc, INT nState)
     71                    HDC hdc, INT nState, DWORD dwStyle)
    7172{
    7273    RECT   rcText = btnPtr->rect;
     
    7879    if ((btnPtr->iString > -1) && (btnPtr->iString < infoPtr->nNumStrings)) {
    7980        InflateRect (&rcText, -3, -3);
    80         rcText.top += infoPtr->nBitmapHeight;
     81        if (dwStyle & TBSTYLE_LIST) {
     82          rcText.left += infoPtr->nBitmapWidth;
     83        }
     84        else {
     85          rcText.top += infoPtr->nBitmapHeight;
     86        }
    8187        if (nState & (TBSTATE_PRESSED | TBSTATE_CHECKED))
    8288            OffsetRect (&rcText, 1, 1);
     
    209215        TOOLBAR_DrawMasked (infoPtr, btnPtr, hdc, rc.left+1, rc.top+1);
    210216
    211       TOOLBAR_DrawString (infoPtr, btnPtr, hdc, btnPtr->fsState);
     217      TOOLBAR_DrawString (infoPtr, btnPtr, hdc, btnPtr->fsState, dwStyle);
    212218      return;
    213219    }
     
    216222    if (btnPtr->fsState & TBSTATE_PRESSED)
    217223    {
    218       DrawEdge (hdc, &rc, EDGE_SUNKEN, BF_RECT | BF_MIDDLE | BF_ADJUST);
     224      if (dwStyle & TBSTYLE_FLAT)
     225        DrawEdge(hdc, &rc, BDR_SUNKENOUTER, BF_RECT | BF_MIDDLE | BF_ADJUST);
     226      else
     227        DrawEdge (hdc, &rc, EDGE_SUNKEN, BF_RECT | BF_MIDDLE | BF_ADJUST);
    219228      ImageList_Draw (infoPtr->himlDef, btnPtr->iBitmap, hdc,
    220229                      rc.left+2, rc.top+2, ILD_NORMAL);
    221       TOOLBAR_DrawString (infoPtr, btnPtr, hdc, btnPtr->fsState);
     230      TOOLBAR_DrawString (infoPtr, btnPtr, hdc, btnPtr->fsState, dwStyle);
    222231      return;
    223232    }
     
    238247                        rc.left+2, rc.top+2, ILD_NORMAL);
    239248
    240         TOOLBAR_DrawString (infoPtr, btnPtr, hdc, btnPtr->fsState);
     249        TOOLBAR_DrawString (infoPtr, btnPtr, hdc, btnPtr->fsState, dwStyle);
    241250        return;
    242251    }
     
    250259      TOOLBAR_DrawPattern (hdc, &rc);
    251260      TOOLBAR_DrawMasked (infoPtr, btnPtr, hdc, rc.left+1, rc.top+1);
    252       TOOLBAR_DrawString (infoPtr, btnPtr, hdc, btnPtr->fsState);
     261      TOOLBAR_DrawString (infoPtr, btnPtr, hdc, btnPtr->fsState, dwStyle);
    253262      return;
    254263    }
     
    258267    {
    259268      if(btnPtr->bHot)
    260           DrawEdge (hdc, &rc, BDR_RAISEDINNER,
    261                      BF_RECT | BF_MIDDLE | BF_SOFT);
     269          DrawEdge (hdc, &rc, BDR_RAISEDINNER, BF_RECT | BF_MIDDLE);
    262270
    263271      if(btnPtr->bHot && infoPtr->himlHot)
     
    276284    }
    277285
    278     TOOLBAR_DrawString (infoPtr, btnPtr, hdc, btnPtr->fsState);
     286    TOOLBAR_DrawString (infoPtr, btnPtr, hdc, btnPtr->fsState, dwStyle);
    279287}
    280288
     
    342350
    343351static void
    344 TOOLBAR_WrapToolbar( HWND hwnd )
     352TOOLBAR_WrapToolbar( HWND hwnd, DWORD dwStyle )
    345353{
    346354    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
    347355    TBUTTON_INFO *btnPtr;
    348     DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE);
    349356    INT x, cx, i, j;
    350357    RECT rc;
     
    491498{
    492499    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(hwnd);
     500    DWORD dwStyle = GetWindowLongA(hwnd, GWL_STYLE);
    493501    TBUTTON_INFO *btnPtr;
    494502    INT i, nRows, nSepRows;
     
    500508    TOOLBAR_CalcStrings (hwnd, &sizeString);
    501509
    502     if (sizeString.cy > 0)
    503         infoPtr->nButtonHeight = sizeString.cy + infoPtr->nBitmapHeight + 6;
    504     else if (infoPtr->nButtonHeight < infoPtr->nBitmapHeight + 6)
    505         infoPtr->nButtonHeight = infoPtr->nBitmapHeight + 6;
    506 
    507     if (sizeString.cx > infoPtr->nBitmapWidth)
    508         infoPtr->nButtonWidth = sizeString.cx + 6;
    509     else if (infoPtr->nButtonWidth < infoPtr->nBitmapWidth + 6)
    510         infoPtr->nButtonWidth = infoPtr->nBitmapWidth + 6;
    511 
    512     TOOLBAR_WrapToolbar( hwnd );
     510    if (dwStyle & TBSTYLE_LIST) {
     511      infoPtr->nButtonHeight = max(infoPtr->nBitmapHeight, sizeString.cy) + 6;
     512      infoPtr->nButtonWidth = infoPtr->nBitmapWidth + sizeString.cx + 6;
     513    }
     514    else {
     515      if (sizeString.cy > 0)
     516          infoPtr->nButtonHeight = sizeString.cy + infoPtr->nBitmapHeight + 6;
     517      else if (infoPtr->nButtonHeight < infoPtr->nBitmapHeight + 6)
     518          infoPtr->nButtonHeight = infoPtr->nBitmapHeight + 6;
     519
     520      if (sizeString.cx > infoPtr->nBitmapWidth)
     521          infoPtr->nButtonWidth = sizeString.cx + 6;
     522      else if (infoPtr->nButtonWidth < infoPtr->nBitmapWidth + 6)
     523          infoPtr->nButtonWidth = infoPtr->nBitmapWidth + 6;
     524    }
     525
     526    TOOLBAR_WrapToolbar( hwnd, dwStyle );
    513527
    514528    x  = infoPtr->nIndent;
    515     y  = TOP_BORDER;
     529    y  = (dwStyle & TBSTYLE_FLAT) ? 0: TOP_BORDER;
    516530    cx = infoPtr->nButtonWidth;
    517531    cy = infoPtr->nButtonHeight;
     
    15571571TOOLBAR_CustomizeDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    15581572{
    1559     TOOLBAR_INFO *infoPtr;
     1573    TOOLBAR_INFO *infoPtr = (TOOLBAR_INFO *)GetWindowLongA (hwnd, DWL_USER);
     1574    static HDSA hDsa = NULL;
    15601575
    15611576    switch (uMsg)
    15621577    {
    1563         case WM_INITDIALOG:
    1564             return TBCUSTOMIZE_InitDialog(hwnd,wParam,lParam);
    1565 
    1566         case WM_CLOSE:
    1567             return TBCUSTOMIZE_Close(hwnd,wParam,lParam);
    1568 
    1569         case WM_COMMAND:
    1570             return TBCUSTOMIZE_Command(hwnd,wParam,lParam);
    1571 
    1572         case WM_DESTROY:
    1573             return TBCUSTOMIZE_Destroy(hwnd,wParam,lParam);
    1574 
    1575         case WM_DRAWITEM:
    1576             return TBCUSTOMIZE_DrawItem(hwnd,wParam,lParam);
    1577 
    1578         case WM_MEASUREITEM:
    1579             return TBCUSTOMIZE_MeasureItem(hwnd,wParam,lParam);
    1580 
    1581         default:
    1582             return FALSE;
     1578        case WM_INITDIALOG:
     1579            infoPtr = (TOOLBAR_INFO *)lParam;
     1580            SetWindowLongA (hwnd, DWL_USER, (DWORD)infoPtr);
     1581
     1582            hDsa = DSA_Create (sizeof(TBUTTON_INFO), 5);
     1583
     1584            if (infoPtr)
     1585            {
     1586                TBUTTON_INFO *btnPtr;
     1587                INT i;
     1588
     1589                /* insert 'virtual' separator button into 'available buttons' list */
     1590                SendDlgItemMessageA (hwnd, IDC_AVAILBTN_LBOX, LB_ADDSTRING, 0, (LPARAM)"");
     1591
     1592                /* copy all buttons and append them to the right listbox */             
     1593                btnPtr = infoPtr->buttons;
     1594                for (i = 0; i < infoPtr->nNumButtons; i++, btnPtr++)
     1595                {
     1596                    DSA_InsertItem (hDsa, i, btnPtr);
     1597
     1598                    /* FIXME: hidden buttons appear in the 'toolbar buttons' list too */
     1599                    if (btnPtr->fsState & TBSTATE_HIDDEN)
     1600                    {
     1601                        SendDlgItemMessageA (hwnd, IDC_AVAILBTN_LBOX, LB_ADDSTRING, 0, (LPARAM)"");
     1602                    }
     1603                    else
     1604                    {
     1605                        SendDlgItemMessageA (hwnd, IDC_TOOLBARBTN_LBOX, LB_ADDSTRING, 0, (LPARAM)"");
     1606                    }
     1607                }
     1608
     1609                /* append 'virtual' separator button to the 'toolbar buttons' list */
     1610                /* TODO */
     1611            }
     1612            return TRUE;
     1613
     1614        case WM_CLOSE:
     1615            EndDialog(hwnd, FALSE);
     1616            return TRUE;
     1617
     1618        case WM_COMMAND:
     1619            switch (LOWORD(wParam))
     1620            {
     1621                case IDCANCEL:
     1622                    EndDialog(hwnd, FALSE);
     1623                    break;
     1624            }
     1625            return TRUE;
     1626
     1627        case WM_DESTROY:
     1628            if (hDsa)
     1629                DSA_Destroy (hDsa);
     1630            return TRUE;
     1631
     1632        case WM_DRAWITEM:
     1633            if (wParam == IDC_AVAILBTN_LBOX || wParam == IDC_TOOLBARBTN_LBOX)
     1634            {
     1635                LPDRAWITEMSTRUCT lpdis = (LPDRAWITEMSTRUCT)lParam;
     1636                TBUTTON_INFO btnPtr;
     1637                RECT rcButton;
     1638                RECT rcText;
     1639                HPEN hOldPen;
     1640                HBRUSH hOldBrush;
     1641                COLORREF oldText = 0;
     1642                COLORREF oldBk = 0;
     1643
     1644                FIXME("action: %x itemState: %x\n",
     1645                      lpdis->itemAction, lpdis->itemState);             
     1646
     1647                DSA_GetItem (hDsa, 0 /*lpdis->itemID*/, &btnPtr);
     1648
     1649                if (lpdis->itemState & ODS_FOCUS)
     1650                {
     1651                    oldBk = SetBkColor (lpdis->hDC, GetSysColor(COLOR_HIGHLIGHT));
     1652                    oldText = SetTextColor (lpdis->hDC, GetSysColor(COLOR_HIGHLIGHTTEXT));
     1653                }
     1654
     1655                hOldPen = SelectObject (lpdis->hDC, GetSysColorPen ((lpdis->itemState & ODS_SELECTED)?COLOR_HIGHLIGHT:COLOR_WINDOW));
     1656                hOldBrush = SelectObject (lpdis->hDC, GetSysColorBrush ((lpdis->itemState & ODS_FOCUS)?COLOR_HIGHLIGHT:COLOR_WINDOW));
     1657
     1658                /* fill background rectangle */
     1659                Rectangle (lpdis->hDC, lpdis->rcItem.left, lpdis->rcItem.top,
     1660                           lpdis->rcItem.right, lpdis->rcItem.bottom);
     1661
     1662                /* calculate button and text rectangles */
     1663                CopyRect (&rcButton, &lpdis->rcItem);
     1664                InflateRect (&rcButton, -1, -1);
     1665                CopyRect (&rcText, &rcButton);
     1666                rcButton.right = rcButton.left + infoPtr->nBitmapWidth + 6;
     1667                rcText.left = rcButton.right + 2;
     1668
     1669                /* draw focus rectangle */
     1670                if (lpdis->itemState & ODS_FOCUS)
     1671                    DrawFocusRect (lpdis->hDC, &lpdis->rcItem);
     1672
     1673                /* draw button */
     1674                DrawEdge (lpdis->hDC, &rcButton, EDGE_RAISED, BF_RECT|BF_MIDDLE|BF_SOFT);
     1675
     1676                /* draw image and text */
     1677                if (wParam == IDC_AVAILBTN_LBOX && lpdis->itemID == 0)
     1678                {
     1679                    /* virtual separator in the 'available' list */
     1680                    DrawTextA (lpdis->hDC, "Separator", -1, &rcText,
     1681                               DT_LEFT | DT_VCENTER | DT_SINGLELINE);
     1682                }
     1683                else
     1684                {
     1685                    /* real button */
     1686
     1687                    ImageList_Draw (infoPtr->himlDef, btnPtr.iBitmap, lpdis->hDC,
     1688                                    rcButton.left+1, rcButton.top+1, ILD_NORMAL);
     1689
     1690                    DrawTextW (lpdis->hDC,  infoPtr->strings[btnPtr.iString], -1, &rcText,
     1691                               DT_LEFT | DT_VCENTER | DT_SINGLELINE);
     1692
     1693                }
     1694
     1695                if (lpdis->itemState & ODS_FOCUS)
     1696                {
     1697                    SetBkColor (lpdis->hDC, oldBk);
     1698                    SetTextColor (lpdis->hDC, oldText);
     1699                }
     1700
     1701                SelectObject (lpdis->hDC, hOldBrush);
     1702                SelectObject (lpdis->hDC, hOldPen);
     1703
     1704                return TRUE;
     1705            }
     1706            return FALSE;
     1707
     1708        case WM_MEASUREITEM:
     1709            if (wParam == IDC_AVAILBTN_LBOX || wParam == IDC_TOOLBARBTN_LBOX)
     1710            {
     1711                MEASUREITEMSTRUCT *lpmis = (MEASUREITEMSTRUCT*)lParam;
     1712
     1713                if (infoPtr)
     1714                    lpmis->itemHeight = infoPtr->nBitmapHeight + 8;
     1715                else
     1716                    lpmis->itemHeight = 16 + 8; /* default height */
     1717
     1718                return TRUE;
     1719            }
     1720            return FALSE;
     1721
     1722        default:
     1723            return FALSE;
    15831724    }
    15841725}
     
    17951936}
    17961937
    1797 
    1798 static LRESULT TOOLBAR_AddButtonsW(HWND hwnd,WPARAM wParam,LPARAM lParam)
    1799 {
    1800   //CB: just call AddButtonsA, no Unicode used?!?
    1801 
    1802   return TOOLBAR_AddButtonsA(hwnd,wParam,lParam);
    1803 }
    1804 
    1805 /* << TOOLBAR_AddButtons32W >> */
     1938static LRESULT
     1939TOOLBAR_AddButtonsW (HWND hwnd, WPARAM wParam, LPARAM lParam)
     1940{
     1941    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     1942    LPTBBUTTON lpTbb = (LPTBBUTTON)lParam;
     1943    INT nOldButtons, nNewButtons, nAddButtons, nCount;
     1944
     1945    TRACE("adding %d buttons!\n", wParam);
     1946
     1947    nAddButtons = (UINT)wParam;
     1948    nOldButtons = infoPtr->nNumButtons;
     1949    nNewButtons = nOldButtons + nAddButtons;
     1950
     1951    if (infoPtr->nNumButtons == 0) {
     1952        infoPtr->buttons =
     1953            COMCTL32_Alloc (sizeof(TBUTTON_INFO) * nNewButtons);
     1954    }
     1955    else {
     1956        TBUTTON_INFO *oldButtons = infoPtr->buttons;
     1957        infoPtr->buttons =
     1958            COMCTL32_Alloc (sizeof(TBUTTON_INFO) * nNewButtons);
     1959        memcpy (&infoPtr->buttons[0], &oldButtons[0],
     1960                nOldButtons * sizeof(TBUTTON_INFO));
     1961        COMCTL32_Free (oldButtons);
     1962    }
     1963
     1964    infoPtr->nNumButtons = nNewButtons;
     1965
     1966    /* insert new button data */
     1967    for (nCount = 0; nCount < nAddButtons; nCount++) {
     1968        TBUTTON_INFO *btnPtr = &infoPtr->buttons[nOldButtons+nCount];
     1969        btnPtr->iBitmap   = lpTbb[nCount].iBitmap;
     1970        btnPtr->idCommand = lpTbb[nCount].idCommand;
     1971        btnPtr->fsState   = lpTbb[nCount].fsState;
     1972        btnPtr->fsStyle   = lpTbb[nCount].fsStyle;
     1973        btnPtr->dwData    = lpTbb[nCount].dwData;
     1974        btnPtr->iString   = lpTbb[nCount].iString;
     1975        btnPtr->bHot      = FALSE;
     1976
     1977        if ((infoPtr->hwndToolTip) && !(btnPtr->fsStyle & TBSTYLE_SEP)) {
     1978            TTTOOLINFOW ti;
     1979
     1980            ZeroMemory (&ti, sizeof(TTTOOLINFOW));
     1981            ti.cbSize   = sizeof (TTTOOLINFOW);
     1982            ti.hwnd     = hwnd;
     1983            ti.uId      = btnPtr->idCommand;
     1984            ti.hinst    = 0;
     1985            ti.lpszText = LPSTR_TEXTCALLBACKW;
     1986
     1987            SendMessageW (infoPtr->hwndToolTip, TTM_ADDTOOLW,
     1988                            0, (LPARAM)&ti);
     1989        }
     1990    }
     1991
     1992    TOOLBAR_CalcToolbar (hwnd);
     1993
     1994    InvalidateRect(hwnd, NULL, FALSE);
     1995
     1996    return TRUE;
     1997}
    18061998
    18071999
     
    19512143
    19522144static LRESULT
    1953 TOOLBAR_AutoSize (HWND hwnd, WPARAM wParam, LPARAM lParam)
     2145TOOLBAR_AutoSize (HWND hwnd)
    19542146{
    19552147    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     
    22182410
    22192411
    2220 /* << TOOLBAR_GetAnchorHighlight >> */
     2412static LRESULT
     2413TOOLBAR_GetAnchorHighlight (HWND hwnd)
     2414{
     2415    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     2416
     2417    return infoPtr->bAnchor;
     2418}
    22212419
    22222420
     
    23562554}
    23572555
    2358 /* << TOOLBAR_GetButtonInfo32W >> */
    2359 
    23602556
    23612557static LRESULT
     
    24472643
    24482644
    2449 /* << TOOLBAR_GetHotItem >> */
     2645static LRESULT
     2646TOOLBAR_GetHotItem (HWND hwnd)
     2647{
     2648    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     2649
     2650    if (!(GetWindowLongA (hwnd, GWL_STYLE) & TBSTYLE_FLAT))
     2651        return -1;
     2652
     2653    if (infoPtr->nHotItem < 0)
     2654        return -1;
     2655
     2656    return (LRESULT)infoPtr->nHotItem;
     2657}
    24502658
    24512659
     
    26182826}
    26192827
     2828static LRESULT
     2829TOOLBAR_GetVersion (HWND hwnd)
     2830{
     2831    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     2832    return infoPtr->iVersion;
     2833}
    26202834
    26212835static LRESULT
     
    26872901    if (lpTbb == NULL)
    26882902        return FALSE;
    2689     if (nIndex < 0)
    2690         return FALSE;
     2903
     2904    if (nIndex == -1) {
     2905       /* EPP: this seems to be an undocumented call (from my IE4)
     2906        * I assume in that case that:
     2907        * - lpTbb->iString is a string pointer (not a string index in strings[] table
     2908        * - index of insertion is at the end of existing buttons
     2909        * I only see this happen with nIndex == -1, but it could have a special
     2910        * meaning (like -nIndex (or ~nIndex) to get the real position of insertion).
     2911        */
     2912       int      len = lstrlenA((char*)lpTbb->iString) + 2;
     2913       LPSTR    ptr = COMCTL32_Alloc(len);
     2914
     2915       nIndex = infoPtr->nNumButtons;
     2916       strcpy(ptr, (char*)lpTbb->iString);
     2917       ptr[len - 1] = 0; /* ended by two '\0' */
     2918       lpTbb->iString = TOOLBAR_AddStringA(hwnd, 0, (LPARAM)ptr);
     2919       COMCTL32_Free(ptr);
     2920
     2921    } else if (nIndex < 0)
     2922       return FALSE;
     2923
    26912924
    26922925//    TRACE (toolbar, "inserting button index=%d\n", nIndex);
     
    29303163
    29313164/* << TOOLBAR_SaveRestore32W >> */
    2932 /* << TOOLBAR_SetAnchorHighlight >> */
     3165
     3166static LRESULT
     3167TOOLBAR_SetAnchorHighlight (HWND hwnd, WPARAM wParam)
     3168{
     3169    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     3170    BOOL bOldAnchor = infoPtr->bAnchor;
     3171
     3172    infoPtr->bAnchor = (BOOL)wParam;
     3173
     3174    return (LRESULT)bOldAnchor;
     3175}
    29333176
    29343177
     
    31553398
    31563399
    3157 /* << TOOLBAR_SetHotItem >> */
     3400static LRESULT
     3401TOOLBAR_SetHotItem (HWND hwnd, WPARAM wParam)
     3402{
     3403    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(hwnd);
     3404    INT nOldHotItem = infoPtr->nHotItem;
     3405
     3406    if (GetWindowLongA (hwnd, GWL_STYLE) & TBSTYLE_FLAT)
     3407    {
     3408        infoPtr->nHotItem = (INT)wParam;
     3409
     3410        /* FIXME: What else must be done ??? */
     3411
     3412    }
     3413
     3414    if (nOldHotItem < 0)
     3415        return -1;
     3416
     3417    return (LRESULT)nOldHotItem;
     3418}
    31583419
    31593420
     
    33453606}
    33463607
     3608static LRESULT
     3609TOOLBAR_SetVersion (HWND hwnd, INT iVersion)
     3610{
     3611    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     3612    INT iOldVersion = infoPtr->iVersion;
     3613
     3614    infoPtr->iVersion = iVersion;
     3615
     3616    return iOldVersion;
     3617}
    33473618
    33483619static LRESULT
     
    33723643    infoPtr->hwndNotify = GetParent (hwnd);
    33733644    infoPtr->bTransparent = (dwStyle & TBSTYLE_FLAT);
    3374     infoPtr->dwDTFlags = DT_CENTER;
     3645    infoPtr->dwDTFlags = (dwStyle & TBSTYLE_LIST) ? DT_LEFT | DT_VCENTER | DT_SINGLELINE : DT_CENTER;
     3646    infoPtr->bAnchor = FALSE; /* no anchor highlighting */
     3647    infoPtr->iVersion = 0;
    33753648
    33763649    infoPtr->hwndToolbar = hwnd;
     
    34463719    /* free toolbar info data */
    34473720    COMCTL32_Free (infoPtr);
     3721    SetWindowLongA(hwnd, 0, 0);
    34483722
    34493723    return 0;
     
    35263800        if (!(btnPtr->fsState & TBSTATE_ENABLED))
    35273801            return 0;
     3802
     3803        if (btnPtr->fsStyle &  TBSTYLE_DROPDOWN)
     3804        {
     3805            NMTOOLBARA nmtb;
     3806
     3807            nmtb.hdr.hwndFrom = hwnd;
     3808            nmtb.hdr.idFrom = GetWindowLongA (hwnd, GWL_ID);
     3809            nmtb.hdr.code = TBN_DROPDOWN;
     3810            nmtb.iItem = btnPtr->idCommand;
     3811
     3812            SendMessageA (infoPtr->hwndNotify, WM_NOTIFY,
     3813                          (WPARAM)nmtb.hdr.idFrom, (LPARAM)&nmtb);
     3814        }
    35283815
    35293816        SetCapture (hwnd);
     
    35973884        ReleaseDC (hwnd, hdc);
    35983885
    3599         if (bSendMessage)
    3600             SendMessageA (infoPtr->hwndNotify, WM_COMMAND,
    3601                           MAKEWPARAM(btnPtr->idCommand, 0), (LPARAM)hwnd);
     3886        if (bSendMessage) {
     3887            SendMessageA (GetParent(hwnd), WM_COMMAND,
     3888                          MAKEWPARAM(btnPtr->idCommand, 0), (LPARAM)hwnd);
     3889
     3890            if ((GetWindowLongA(hwnd, GWL_STYLE) & TBSTYLE_DROPDOWN) ||
     3891                (btnPtr->fsStyle & 0x08/* BTNS_DROPDOWN */)) {
     3892               NMTOOLBARW       nmtb;
     3893
     3894               nmtb.hdr.hwndFrom = hwnd;
     3895               nmtb.hdr.idFrom   = GetWindowLongA (hwnd, GWL_ID);
     3896               nmtb.hdr.code     = TBN_DROPDOWN;
     3897               nmtb.iItem        = nHit;
     3898               /* nmtb.tbButton not used with TBN_DROPDOWN */
     3899               if ((btnPtr->iString >= 0) && (btnPtr->iString < infoPtr->nNumStrings)) {
     3900                  nmtb.pszText      = infoPtr->strings[btnPtr->iString];
     3901                  nmtb.cchText      = lstrlenW(nmtb.pszText);
     3902               } else {
     3903                  nmtb.pszText      = NULL;
     3904                  nmtb.cchText      = 0;
     3905               }
     3906               nmtb.rcButton     = btnPtr->rect;
     3907
     3908               SendMessageW(infoPtr->hwndNotify, WM_NOTIFY,
     3909                            (WPARAM)nmtb.hdr.idFrom, (LPARAM)&nmtb);
     3910            }
     3911        }
    36023912
    36033913        infoPtr->nButtonDown = -1;
     
    38674177
    38684178static LRESULT
    3869 TOOLBAR_StyleChanged (HWND hwnd, WPARAM wParam, LPARAM lParam)
    3870 {
    3871     TOOLBAR_AutoSize (hwnd, wParam, lParam);
     4179TOOLBAR_StyleChanged (HWND hwnd, INT nType, LPSTYLESTRUCT lpStyle)
     4180{
     4181    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     4182
     4183    if (nType == GWL_STYLE) {
     4184        if (lpStyle->styleNew & TBSTYLE_LIST) {
     4185            infoPtr->dwDTFlags = DT_LEFT | DT_VCENTER | DT_SINGLELINE;
     4186        }
     4187        else {
     4188            infoPtr->dwDTFlags = DT_CENTER;
     4189        }
     4190    }
     4191
     4192    TOOLBAR_AutoSize (hwnd);
    38724193
    38734194    InvalidateRect(hwnd, NULL, FALSE);
     
    38814202ToolbarWindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    38824203{
     4204   switch (uMsg)
     4205    {
     4206       case WM_DESTROY:
     4207           return TOOLBAR_Destroy (hwnd, wParam, lParam);
     4208
     4209       case WM_NCCREATE:
     4210           return TOOLBAR_NCCreate (hwnd, wParam, lParam);
     4211    }
     4212
     4213    if (!TOOLBAR_GetInfoPtr (hwnd))
     4214    {
     4215       return DefWindowProcA (hwnd, uMsg, wParam, lParam);
     4216    }
     4217
    38834218    switch (uMsg)
    38844219    {
     
    38984233            return TOOLBAR_AddStringW (hwnd, wParam, lParam);
    38994234
    3900         case TB_AUTOSIZE:
    3901             return TOOLBAR_AutoSize (hwnd, wParam, lParam);
     4235        case TB_AUTOSIZE:
     4236            return TOOLBAR_AutoSize (hwnd);
    39024237
    39034238        case TB_BUTTONCOUNT:
     
    39254260            return TOOLBAR_EnableButton (hwnd, wParam, lParam);
    39264261
    3927 /*      case TB_GETANCHORHIGHLIGHT:             */ /* 4.71 */
     4262        case TB_GETANCHORHIGHLIGHT:
     4263            return TOOLBAR_GetAnchorHighlight (hwnd);
    39284264
    39294265        case TB_GETBITMAP:
     
    39624298            return TOOLBAR_GetHotImageList (hwnd, wParam, lParam);
    39634299
    3964 /*      case TB_GETHOTITEM:                     */ /* 4.71 */
     4300        case TB_GETHOTITEM:
     4301            return TOOLBAR_GetHotItem (hwnd);
    39654302
    39664303        case TB_GETIMAGELIST:
     
    39994336        case TB_GETUNICODEFORMAT:
    40004337            return TOOLBAR_GetUnicodeFormat (hwnd, wParam, lParam);
     4338
     4339        case CCM_GETVERSION:
     4340            return TOOLBAR_GetVersion (hwnd);
    40014341
    40024342        case TB_HIDEBUTTON:
     
    40544394            return TOOLBAR_SaveRestoreW(hwnd,wParam,lParam);
    40554395
    4056 /*      case TB_SETANCHORHIGHLIGHT:             */ /* 4.71 */
     4396        case TB_SETANCHORHIGHLIGHT:
     4397            return TOOLBAR_SetAnchorHighlight (hwnd, wParam);
    40574398
    40584399        case TB_SETBITMAPSIZE:
     
    40884429            return TOOLBAR_SetHotImageList (hwnd, wParam, lParam);
    40894430
    4090 /*      case TB_SETHOTITEM:                     */ /* 4.71 */
     4431        case TB_SETHOTITEM:
     4432            return TOOLBAR_SetHotItem (hwnd, wParam);
    40914433
    40924434        case TB_SETIMAGELIST:
     
    41244466            return TOOLBAR_SetUnicodeFormat (hwnd, wParam, lParam);
    41254467
     4468        case CCM_SETVERSION:
     4469            return TOOLBAR_SetVersion (hwnd, (INT)wParam);
    41264470
    41274471/*      case WM_CHAR: */
     
    41304474            return TOOLBAR_Create (hwnd, wParam, lParam);
    41314475
    4132         case WM_DESTROY:
    4133             return TOOLBAR_Destroy (hwnd, wParam, lParam);
    4134 
    41354476        case WM_ERASEBKGND:
    41364477            return TOOLBAR_EraseBackground (hwnd, wParam, lParam);
     
    41604501            return TOOLBAR_NCCalcSize (hwnd, wParam, lParam);
    41614502
    4162         case WM_NCCREATE:
    4163             return TOOLBAR_NCCreate (hwnd, wParam, lParam);
    4164 
    41654503        case WM_NCPAINT:
    41664504            return TOOLBAR_NCPaint (hwnd, wParam, lParam);
     
    41774515            return TOOLBAR_Size (hwnd, wParam, lParam);
    41784516
    4179         case WM_STYLECHANGED:
    4180             return TOOLBAR_StyleChanged (hwnd, wParam, lParam);
     4517        case WM_STYLECHANGED:
     4518            return TOOLBAR_StyleChanged (hwnd, (INT)wParam, (LPSTYLESTRUCT)lParam);
    41814519
    41824520/*      case WM_SYSCOLORCHANGE: */
Note: See TracChangeset for help on using the changeset viewer.