Annotation of mstools/h/commctrl.h, revision 1.1

1.1     ! root        1: /*****************************************************************************\
        !             2: *                                                                             *
        !             3: * commctrl.h -  Windows common control definitions          (Win32 variant)   *
        !             4: *                                                                             *
        !             5: *               Version 3.10                                                  *
        !             6: *                                                                             *
        !             7: *               Copyright (c) 1991-1992, Microsoft Corp. All rights reserved. *
        !             8: *                                                                             *
        !             9: *  FILE HISTORY:                                                              *
        !            10: *                                                                             *
        !            11: *    AlbertT    27-Oct-1992 Addfiled; ported from winball                     *
        !            12: *                                                                             *
        !            13: *******************************************************************************/
        !            14: 
        !            15: #ifndef _INC_COMMCTRL
        !            16: #define _INC_COMMCTRL
        !            17: 
        !            18: #ifdef __cplusplus            /* Assume C declaration for C++ */
        !            19: extern "C" {
        !            20: #endif  /* __cplusplus */
        !            21: 
        !            22: #ifndef NOTOOLBAR
        !            23: 
        !            24: #ifndef _INC_TOOLBAR
        !            25: #define _INC_TOOLBAR
        !            26: 
        !            27: typedef struct {
        !            28:     INT iBitmap;     /* index into mondo bitmap of this button's picture */
        !            29:     INT idCommand;   /* WM_COMMAND menu ID that this button sends */
        !            30:     BYTE fsState;    /* button's state, see TBSTATE_XXXX below */
        !            31:     BYTE fsStyle;    /* button's style, see TBSTYLE_XXXX below */
        !            32:     INT idsHelp;     /* string ID for button's status bar help */
        !            33: } TBBUTTON, NEAR *PTBBUTTON, FAR *LPTBBUTTON;
        !            34: 
        !            35: #define TBSTATE_CHECKED    0x01  /* radio button is checked */
        !            36: #define TBSTATE_PRESSED    0x02  /* button is being depressed (any style) */
        !            37: #define TBSTATE_ENABLED    0x04  /* button is enabled */
        !            38: #define TBSTATE_HIDDEN     0x08  /* button is hidden */
        !            39: 
        !            40: #define TBSTYLE_BUTTON     0x00  /* this entry is button */
        !            41: #define TBSTYLE_SEP        0x01  /* this entry is a separator */
        !            42: #define TBSTYLE_CHECK      0x02  /* this is a check button (it stays down) */
        !            43: #define TBSTYLE_GROUP      0x04  /* this is a check button (it stays down) */
        !            44: #define TBSTYLE_CHECKGROUP (TBSTYLE_GROUP | TBSTYLE_CHECK)      /* this group is a member of a group radio group */
        !            45: 
        !            46: typedef struct {
        !            47:     TBBUTTON tbButton;
        !            48:     CHAR szDescription[1];
        !            49: } ADJUSTINFO, FAR *LPADJUSTINFO;
        !            50: 
        !            51: HWND  WINAPI
        !            52: CreateToolbar(HWND hwnd, DWORD ws, WORD wID, INT nBitmaps, HINSTANCE hBMInst, WORD wBMID, LPTBBUTTON lpButtons, INT iNumButtons);
        !            53: 
        !            54: typedef struct {
        !            55:     COLORREF from;
        !            56:     COLORREF to;
        !            57: } COLORMAP, FAR *LPCOLORMAP;
        !            58: 
        !            59: HBITMAP WINAPI CreateMappedBitmap(HINSTANCE hInstance, INT idBitmap, BOOL bDiscardable, LPCOLORMAP lpColorMap, INT iNumMaps);
        !            60: 
        !            61: // wParam button ID, LOWORD(lParam) == TRUE -> enable FALSE -> disable
        !            62: #define TB_ENABLEBUTTON (WM_USER + 1)
        !            63: 
        !            64: // wParam button ID, LOWORD(lParam) == TRUE -> check FALSE -> uncheck
        !            65: #define TB_CHECKBUTTON  (WM_USER + 2)
        !            66: 
        !            67: // wParam button ID, LOWORD(lParam) == TRUE -> press FALSE -> unpress
        !            68: #define TB_PRESSBUTTON  (WM_USER + 3)
        !            69: 
        !            70: // wParam button ID, LOWORD(lParam) == TRUE -> hide FALSE -> show
        !            71: #define TB_HIDEBUTTON   (WM_USER + 4)
        !            72: 
        !            73: // Messages up to WM_USER+8 are reserved until we defin more state bits
        !            74: 
        !            75: // wParam button ID, LOWORD(lResult) != 0 enabled
        !            76: #define TB_ISBUTTONENABLED (WM_USER + 9)
        !            77: 
        !            78: // wParam button ID, LOWORD(lResult) != 0 checked
        !            79: #define TB_ISBUTTONCHECKED (WM_USER + 10)
        !            80: 
        !            81: // wParam button ID, LOWORD(lResult) != 0 pressed
        !            82: #define TB_ISBUTTONPRESSED (WM_USER + 11)
        !            83: 
        !            84: // wParam button ID, LOWORD(lResult) != 0 pressed
        !            85: #define TB_ISBUTTONHIDDEN  (WM_USER + 12)
        !            86: 
        !            87: // Messages up to WM_USER+16 are reserved until we defin more state bits
        !            88: 
        !            89: // wParam is the button ID to set the TBSTATE_ state bits from LOWORD(lParam)
        !            90: #define TB_SETSTATE             (WM_USER + 17)
        !            91: 
        !            92: // wParam is the button ID to return the TBSTATE_ state bits for
        !            93: #define TB_GETSTATE             (WM_USER + 18)
        !            94: 
        !            95: // wParam is the number of buttons in the bitmap, and lParam has hInst in the
        !            96: // LOWORD and wID in the HIWORD for a bitmap.  If hInst is NULL, then wID must
        !            97: // be a HBITMAP.  Returns the index for the first button in the bitmap, or
        !            98: // -1 if there is an error.
        !            99: 
        !           100: #define TB_ADDBITMAP    (WM_USER + 19)
        !           101: 
        !           102: // wParam is the number of buttons, and lParam is a LPTBBUTTON.
        !           103: #define TB_ADDBUTTONS      (WM_USER + 20)
        !           104: 
        !           105: // wParam is the index to insert in front of, and lParam is a LPTBBUTTON;
        !           106: // only one button can be inserted at a time.  If wParam > iNumButtons, the
        !           107: // button is added to the end.
        !           108: 
        !           109: #define TB_INSERTBUTTON    (WM_USER + 21)
        !           110: 
        !           111: // wParam is the index of the button to delete.
        !           112: 
        !           113: #define TB_DELETEBUTTON    (WM_USER + 22)
        !           114: 
        !           115: // wParam is the index of the button to retrieve, and lParam is a valid
        !           116: // LPTBBUTTON.
        !           117: 
        !           118: #define TB_GETBUTTON    (WM_USER + 23)
        !           119: 
        !           120: // wParam is the index of the button to modify, and lParam is a valid
        !           121: // LPTBBUTTON.
        !           122: 
        !           123: #define TB_SETBUTTON    (WM_USER + 24)
        !           124: 
        !           125: // Returns the number of buttons in the toolbar.
        !           126: 
        !           127: #define TB_BUTTONCOUNT     (WM_USER + 25)
        !           128: 
        !           129: // wParam is the Command ID.  Returns the index of the button.
        !           130: 
        !           131: #define TB_COMMANDTOINDEX  (WM_USER + 26)
        !           132: 
        !           133: // wParam is the index of the button to retrieve, and lParam is a valid
        !           134: // PRECT.
        !           135: 
        !           136: #define TB_GETBUTTONRECT        (WM_USER + 27)
        !           137: 
        !           138: // Specifies to save/restore the state of the toolbar. wParam == FALSE means
        !           139: // to restore the state.  lParam is a pointer to an array of two LPSTR's:
        !           140: // the first is the section to write to, and the second is the file (if the
        !           141: // second is NULL, it will write to win.ini).
        !           142: 
        !           143: #define TB_SAVERESTORE     (WM_USER + 28)
        !           144: 
        !           145: // bring up the toolbar customize dialog
        !           146: 
        !           147: #define TB_CUSTOMIZE            (WM_USER + 29)
        !           148: 
        !           149: #endif   /* _INC_TOOLBAR */
        !           150: #endif
        !           151: 
        !           152: #ifndef NOSTATUSBAR
        !           153: 
        !           154: /* Here exists the only known documentation for status.c and header.c
        !           155:  */
        !           156: 
        !           157: #ifndef _INC_STATUSBAR
        !           158: #define _INC_STATUSBAR
        !           159: VOID WINAPI DrawStatusText(HDC hDC, LPRECT lprc, LPSTR szText, UINT uFlags);
        !           160: /* This is used if the app wants to draw status in its client rect,
        !           161:  * instead of just creating a window.  Note that this same function is
        !           162:  * used internally in the status bar window's WM_PAINT message.
        !           163:  * hDC is the DC to draw to.  The font that is selected into hDC will
        !           164:  * be used.  The RECT lprc is the only portion of hDC that will be drawn
        !           165:  * to: the outer edge of lprc will have the highlights (the area outside
        !           166:  * of the highlights will not be drawn in the BUTTONFACE color: the app
        !           167:  * must handle that).  The area inside the highlights will be erased
        !           168:  * properly when drawing the text.
        !           169:  */
        !           170: 
        !           171: HWND WINAPI CreateStatusWindow(LONG style, LPSTR lpszText,
        !           172:       HWND hwndParent, WORD wID);
        !           173: HWND WINAPI CreateHeaderWindow(LONG style, LPSTR lpszText,
        !           174:       HWND hwndParent, WORD wID);
        !           175: /* This creates a "default" status/header window.  This window will have the
        !           176:  * default borders around the text, the default font, and only one pane.
        !           177:  * It may also automatically resize and move itself (depending on the SBS_*
        !           178:  * flags).
        !           179:  * style should contain WS_CHILD, and can contain WS_BORDER and WS_VISIBLE,
        !           180:  * plus any of the SBS_* styles described below.  I don't know about other
        !           181:  * WS_* styles.
        !           182:  * lpszText is the initial text for the first pane.
        !           183:  * hwndParent is the window the status bar exists in, and should not be NULL.
        !           184:  * wID is the child window ID of the window.
        !           185:  * hInstance is the instance handle of the application using this.
        !           186:  * Note that the app can also just call CreateWindow with
        !           187:  * STATUSCLASSNAME/HEADERCLASSNAME to create a window of a specific size.
        !           188:  */
        !           189: 
        !           190: 
        !           191: #define STATUSCLASSNAME "msctls_statusbar"
        !           192: /* This is the name of the status bar class (it will probably change later
        !           193:  * so use the #define here).
        !           194:  */
        !           195: #define HEADERCLASSNAME "msctls_headerbar"
        !           196: /* This is the name of the status bar class (it will probably change later
        !           197:  * so use the #define here).
        !           198:  */
        !           199: 
        !           200: 
        !           201: #define SB_SETTEXT      WM_USER+1
        !           202: #define SB_GETTEXT      WM_USER+2
        !           203: #define SB_GETTEXTLENGTH   WM_USER+3
        !           204: /* Just like WM_?ETTEXT*, with wParam specifying the pane that is referenced
        !           205:  * (at most 255).
        !           206:  * Note that you can use the WM_* versions to reference the 0th pane (this
        !           207:  * is useful if you want to treat a "default" status bar like a static text
        !           208:  * control).
        !           209:  * For SETTEXT, wParam is the pane or'ed with SBT_* style bits (defined below).
        !           210:  * If the text is "normal" (not OWNERDRAW), then a single pane may have left,
        !           211:  * center, and right justified text by separating the parts with a single tab,
        !           212:  * plus if lParam is NULL, then the pane has no text.  The pane will be
        !           213:  * invalidated, but not draw until the next PAINT message.
        !           214:  * For GETTEXT and GETTEXTLENGTH, the LOWORD of the return will be the length,
        !           215:  * and the HIWORD will be the SBT_* style bits.
        !           216:  */
        !           217: #define SB_SETPARTS     WM_USER+4
        !           218: /* wParam is the number of panes, and lParam points to an array of points
        !           219:  * specifying the right hand side of each pane.  A right hand side of -1 means
        !           220:  * it goes all the way to the right side of the control minus the X border
        !           221:  */
        !           222: #define SB_SETBORDERS      WM_USER+5
        !           223: /* lParam points to an array of 3 integers: X border, Y border, between pane
        !           224:  * border.  If any is less than 0, the default will be used for that one.
        !           225:  */
        !           226: #define SB_GETPARTS     WM_USER+6
        !           227: /* lParam is a pointer to an array of integers that will get filled in with
        !           228:  * the right hand side of each pane and wParam is the size (in integers)
        !           229:  * of the lParam array (so we do not go off the end of it).
        !           230:  * Returns the number of panes.
        !           231:  */
        !           232: #define SB_GETBORDERS      WM_USER+7
        !           233: /* lParam is a pointer to an array of 3 integers that will get filled in with
        !           234:  * the X border, the Y border, and the between pane border.
        !           235:  */
        !           236: #define SB_SETMINHEIGHT    WM_USER+8
        !           237: /* wParam is the minimum height of the status bar "drawing" area.  This is
        !           238:  * the area inside the highlights.  This is most useful if a pane is used
        !           239:  * for an OWNERDRAW item, and is ignored if the SBS_NORESIZE flag is set.
        !           240:  * Note that WM_SIZE must be sent to the control for any size changes to
        !           241:  * take effect.
        !           242:  */
        !           243: #define SB_SIMPLE    WM_USER+9
        !           244: /* wParam specifies whether to set (non-zero) or unset (zero) the "simple"
        !           245:  * mode of the status bar.  In simple mode, only one pane is displayed, and
        !           246:  * its text is set with LOWORD(wParam)==255 in the SETTEXT message.
        !           247:  * OWNERDRAW is not allowed, but other styles are.
        !           248:  * The pane gets invalidated, but not painted until the next PAINT message,
        !           249:  * so you can set new text without flicker (I hope).
        !           250:  * This can be used with the WM_INITMENU and WM_MENUSELECT messages to
        !           251:  * implement help text when scrolling through a menu.
        !           252:  */
        !           253: 
        !           254: 
        !           255: #define HB_SAVERESTORE     WM_USER+0x100
        !           256: /* This gets a header bar to read or write its state to or from an ini file.
        !           257:  * wParam is 0 for reading, non-zero for writing.  lParam is a pointer to
        !           258:  * an array of two LPSTR's: the section and file respectively.
        !           259:  * Note that the correct number of partitions must be set before calling this.
        !           260:  */
        !           261: #define HB_ADJUST    WM_USER+0x101
        !           262: /* This puts the header bar into "adjust" mode, for changing column widths
        !           263:  * with the keyboard.
        !           264:  */
        !           265: #define HB_SETWIDTHS    SB_SETPARTS
        !           266: /* Set the widths of the header columns.  Note that "springy" columns only
        !           267:  * have a minumum width, and negative width are assumed to be hidden columns.
        !           268:  * This works just like SB_SETPARTS.
        !           269:  */
        !           270: #define HB_GETWIDTHS    SB_GETPARTS
        !           271: /* Get the widths of the header columns.  Note that "springy" columns only
        !           272:  * have a minumum width.  This works just like SB_GETPARTS.
        !           273:  */
        !           274: #define HB_GETPARTS     WM_USER+0x102
        !           275: /* Get a list of the right-hand sides of the columns, for use when drawing the
        !           276:  * actual columns for which this is a header.
        !           277:  * lParam is a pointer to an array of integers that will get filled in with
        !           278:  * the right hand side of each pane and wParam is the size (in integers)
        !           279:  * of the lParam array (so we do not go off the end of it).
        !           280:  * Returns the number of panes.
        !           281:  */
        !           282: #define HB_SHOWTOGGLE      WM_USER+0x103
        !           283: /* Toggle the hidden state of a column.  wParam is the 0-based index of the
        !           284:  * column to toggle.
        !           285:  */
        !           286: 
        !           287: 
        !           288: #define SBT_OWNERDRAW   0x1000
        !           289: /* The lParam of the SB_SETTEXT message will be returned in the DRAWITEMSTRUCT
        !           290:  * of the WM_DRAWITEM message.  Note that the fields CtlType, itemAction, and
        !           291:  * itemState of the DRAWITEMSTRUCT are undefined for a status bar.
        !           292:  * The return value for GETTEXT will be the itemData.
        !           293:  */
        !           294: #define SBT_NOBORDERS   0x0100
        !           295: /* No borders will be drawn for the pane.
        !           296:  */
        !           297: #define SBT_POPOUT   0x0200
        !           298: /* The text pops out instead of in
        !           299:  */
        !           300: #define HBT_SPRING   0x0400
        !           301: /* this means that the item is "springy", meaning that it has a minimum
        !           302:  * width, but will grow if there is extra room in the window.  Note that
        !           303:  * multiple springs are allowed, and the extra room will be distributed
        !           304:  * among them.
        !           305:  */
        !           306: 
        !           307: /* Here's a simple dialog function that uses a default status bar to display
        !           308:  * the mouse position in the given window.
        !           309:  *
        !           310:  * extern HINSTANCE hInst;
        !           311:  *
        !           312:  * BOOL CALLBACK MyWndProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
        !           313:  * {
        !           314:  *   switch (msg)
        !           315:  *     {
        !           316:  *       case WM_INITDIALOG:
        !           317:  *         CreateStatusWindow(WS_CHILD|WS_BORDER|WS_VISIBLE, "", hDlg,
        !           318:  *               IDC_STATUS, hInst);
        !           319:  *         break;
        !           320:  *
        !           321:  *       case WM_SIZE:
        !           322:  *         SendDlgItemMessage(hDlg, IDC_STATUS, WM_SIZE, 0, 0L);
        !           323:  *         break;
        !           324:  *
        !           325:  *       case WM_MOUSEMOVE:
        !           326:  *         wsprintf(szBuf, "%d,%d", LOWORD(lParam), HIWORD(lParam));
        !           327:  *         SendDlgItemMessage(hDlg, IDC_STATUS, SB_SETTEXT, 0,
        !           328:  *               (LPARAM)(LPSTR)szBuf);
        !           329:  *         break;
        !           330:  *
        !           331:  *       default:
        !           332:  *         break;
        !           333:  *     }
        !           334:  *   return(FALSE);
        !           335:  * }
        !           336:  */
        !           337: 
        !           338: #endif /* _INC_STATUSBAR */
        !           339: 
        !           340: #endif
        !           341: 
        !           342: #ifndef NOMENUHELP
        !           343: #ifndef _INC_MENUHELP
        !           344: #define _INC_MENUHELP
        !           345: 
        !           346: // for winball only, these are in the Chicago kernel
        !           347: 
        !           348: BOOL WINAPI WritePrivateProfileStruct(LPSTR szSection, LPSTR szKey,
        !           349:       LPBYTE lpStruct, UINT uSizeStruct, LPSTR szFile);
        !           350: BOOL WINAPI GetPrivateProfileStruct(LPSTR szSection, LPSTR szKey,
        !           351:       LPBYTE lpStruct, UINT uSizeStruct, LPSTR szFile);
        !           352: 
        !           353: 
        !           354: VOID WINAPI MenuHelp(WORD iMessage, WPARAM wParam, LPARAM lParam,
        !           355:       HMENU hMainMenu, HINSTANCE hInst, HWND hwndStatus, LPDWORD lpdwIDs);
        !           356: 
        !           357: BOOL WINAPI ShowHideMenuCtl(HWND hWnd, UINT uFlags, LPINT lpInfo);
        !           358: 
        !           359: VOID WINAPI GetEffectiveClientRect(HWND hWnd, LPRECT lprc, LPINT lpInfo);
        !           360: 
        !           361: #define MINSYSCOMMAND   SC_SIZE
        !           362: 
        !           363: #endif /* _INC_MENUHELP */
        !           364: 
        !           365: #endif
        !           366: 
        !           367: #ifndef NOBTNLIST
        !           368: /*
        !           369:  *  BUTTON LISTBOX CONTROL
        !           370:  *
        !           371:  *  The Button Listbox control creates an array of buttons that behaves
        !           372:  *  similar to both a button and a listbox: the array may be scrollable
        !           373:  *  like a listbox and each listbox item is behaves like a pushbutton
        !           374:  *  control
        !           375:  *
        !           376:  *
        !           377:  *  SPECIFYING A BUTTONLISTBOX IN THE DIALOG TEMPLATE
        !           378:  *
        !           379:  *  The CONTROL statement in the dialog template specifies the
        !           380:  *  dimensions of each individual button in the x, y, width and height
        !           381:  *  parameters. The low order byte in the style field specifies the
        !           382:  *  number of buttons that will be displayed; the actual size of the
        !           383:  *  displayed control is determined by the number of buttons specified.
        !           384:  *
        !           385:  *  For a standard control--no other style bits set--the width of the
        !           386:  *  control in dialog base units will be
        !           387:  *      CX = cx * (n + 2/3) + 2
        !           388:  *  where cx is the width of the button and n is number of buttons
        !           389:  *  specified. (The 2/3 is for displaying partially visible buttons for
        !           390:  *  scrolling plus 2 for the control borders.) The control will also be
        !           391:  *  augmented in the cy direction by the height of the horizontal scroll
        !           392:  *  bar.
        !           393:  *
        !           394:  *  If the BLS_NOSCROLL style is set, no scroll bar will appear and the
        !           395:  *  button listbox will be limited to displaying the number of buttons
        !           396:  *  specified and no more. In this case, the width of the control will
        !           397:  *  be
        !           398:  *      CX = cx * n + 2
        !           399:  *
        !           400:  *  If the BLS_VERTICAL style is set, the entire control goes vertical
        !           401:  *  and cy should be substituted in the above calculations to determine
        !           402:  *  CY, the actual height of the displayed control.
        !           403:  *
        !           404:  *  The statement
        !           405:  *
        !           406:  *  CONTROL  "", IDD_BUTTONLIST, "buttonlistbox", 0x0005 | WS_TABSTOP,
        !           407:  *           4, 128, 34, 24
        !           408:  *
        !           409:  *  creates a scrollable horizontal list of 5 buttons at the position
        !           410:  *  (4,128) with each button having dimensions (34,24). The entire control
        !           411:  *  has the tabstop style.
        !           412:  *
        !           413:  *
        !           414:  *  ADDING BUTTONS TO A BUTTONLISTBOX CONTROL
        !           415:  *
        !           416:  *  Buttons are added to the listbox in the same manner that items are
        !           417:  *  added to a standard listbox; however, the messages BL_ADDBUTTON and
        !           418:  *  BL_INSERTBUTTON must be passed a pointer to a CREATELISTBUTTON
        !           419:  *  structure in the lParam.
        !           420:  *
        !           421:  *  Example:
        !           422:  *
        !           423:  *  {
        !           424:  *      CREATELISTBUTTON clb;
        !           425:  *      const int numColors = 1;
        !           426:  *      COLORMAP colorMap;
        !           427:  *
        !           428:  *      colorMap.from = BUTTON_MAP_COLOR;   // your background color
        !           429:  *      colorMap.to   = GetSysColor(COLOR_BTNFACE);
        !           430:  *
        !           431:  *      clb.cbSize = sizeof(clb);
        !           432:  *      clb.dwItemData = BUTTON_1;
        !           433:  *      clb.hBitmap = CreateMappedBitmap(hInst,BMP_BUTTON,FALSE,
        !           434:                         &colorMap,numColors);
        !           435:  *      clb.lpszText = "Button 1";
        !           436:  *      SendMessage(GetDlgItem(hDlg,IDD_BUTTONLIST),
        !           437:  *                  BL_ADDBUTTON, 0,
        !           438:  *                  (LPARAM)(CREATELISTBUTTON FAR*)&clb);
        !           439:  *      DeleteObject(clb.hBitmap);
        !           440:  *  }
        !           441:  *
        !           442:  *  Note that the caller must delete any memory for objects passed in
        !           443:  *  the CREATELISTBUTTON structure. Also, the CreateMappedBitmap API is
        !           444:  *  useful for mapping the background color of the button bitmap to the
        !           445:  *  system color COLOR_BTNFACE for a cleaner visual appearance.
        !           446:  *
        !           447:  *  The BL_ADDBUTTON message causes the listbox to be sorted by the
        !           448:  *  button text whereas the BL_INSERTBUTTON does not cause the list to
        !           449:  *  be sorted.
        !           450:  *
        !           451:  *  The button listbox sends a WM_DELETEITEM message to the control parent
        !           452:  *  when a button is deleted so that any item data can be cleaned up.
        !           453:  *
        !           454: \**********************************************************************/
        !           455: #ifndef _INC_BTNLIST
        !           456: #define _INC_BTNLIST
        !           457: 
        !           458: /* Class name */
        !           459: #define BUTTONLISTBOX           "ButtonListBox"
        !           460: 
        !           461: /* Button List Box Styles */
        !           462: #define BLS_NUMBUTTONS      0x00FFL
        !           463: #define BLS_VERTICAL        0x0100L
        !           464: #define BLS_NOSCROLL        0x0200L
        !           465: 
        !           466: /* Button List Box Messages */
        !           467: // ANSI messages
        !           468: #define BL_ADDBUTTONA        (WM_USER+1)
        !           469: #define BL_DELETEBUTTONA     (WM_USER+2)
        !           470: #define BL_GETCARETINDEX     (WM_USER+3)
        !           471: #define BL_GETCOUNT          (WM_USER+4)
        !           472: #define BL_GETCURSEL         (WM_USER+5)
        !           473: #define BL_GETITEMDATA       (WM_USER+6)
        !           474: #define BL_GETITEMRECT       (WM_USER+7)
        !           475: #define BL_GETTEXTA          (WM_USER+8)
        !           476: #define BL_GETTEXTLEN        (WM_USER+9)
        !           477: #define BL_GETTOPINDEX       (WM_USER+10)
        !           478: #define BL_INSERTBUTTONA     (WM_USER+11)
        !           479: #define BL_RESETCONTENT      (WM_USER+12)
        !           480: #define BL_SETCARETINDEX     (WM_USER+13)
        !           481: #define BL_SETCURSEL         (WM_USER+14)
        !           482: #define BL_SETITEMDATA       (WM_USER+15)
        !           483: #define BL_SETTOPINDEX       (WM_USER+16)
        !           484: // UNICODE messages
        !           485: #define BL_ADDBUTTONW        (WM_USER+17)
        !           486: #define BL_DELETEBUTTONW     (WM_USER+18)
        !           487: #define BL_GETTEXTW          (WM_USER+19)
        !           488: #define BL_INSERTBUTTONW     (WM_USER+20)
        !           489: #define BL_MSGMAX            (WM_USER+21) /* ;Internal */
        !           490: 
        !           491: 
        !           492: #ifdef UNICODE
        !           493: #define BL_ADDBUTTON          BL_ADDBUTTONW
        !           494: #define BL_DELETEBUTTON       BL_DELETEBUTTONW
        !           495: #define BL_GETTEXT            BL_GETTEXTW
        !           496: #define BL_INSERTBUTTON       BL_INSERTBUTTONW
        !           497: #else
        !           498: #define BL_ADDBUTTON          BL_ADDBUTTONA
        !           499: #define BL_DELETEBUTTON       BL_DELETEBUTTONA
        !           500: #define BL_GETTEXT            BL_GETTEXTA
        !           501: #define BL_INSERTBUTTON       BL_INSERTBUTTONA
        !           502: #endif //UNICODE
        !           503: 
        !           504: // Just in case the user thinks they exist...
        !           505: #define BL_GETCARETINDEXA     BL_GETCARETINDEX
        !           506: #define BL_GETCARETINDEXW     BL_GETCARETINDEX
        !           507: #define BL_GETCOUNTA          BL_GETCOUNT
        !           508: #define BL_GETCOUNTW          BL_GETCOUNT
        !           509: #define BL_GETCURSELA         BL_GETCURSEL
        !           510: #define BL_GETCURSELW         BL_GETCURSEL
        !           511: #define BL_GETITEMDATAA       BL_GETITEMDATA
        !           512: #define BL_GETITEMDATAW       BL_GETITEMDATA
        !           513: #define BL_GETITEMRECTA       BL_GETITEMRECT
        !           514: #define BL_GETITEMRECTW       BL_GETITEMRECT
        !           515: #define BL_GETTEXTLENA        BL_GETTEXTLEN
        !           516: #define BL_GETTEXTLENW        BL_GETTEXTLEN
        !           517: #define BL_GETTOPINDEXA       BL_GETTOPINDEX
        !           518: #define BL_GETTOPINDEXW       BL_GETTOPINDEX
        !           519: #define BL_RESETCONTENTA      BL_RESETCONTENT
        !           520: #define BL_RESETCONTENTW      BL_RESETCONTENT
        !           521: #define BL_SETCARETINDEXA     BL_SETCARETINDEX
        !           522: #define BL_SETCARETINDEXW     BL_SETCARETINDEX
        !           523: #define BL_SETCURSELA         BL_SETCURSEL
        !           524: #define BL_SETCURSELW         BL_SETCURSEL
        !           525: #define BL_SETITEMDATAA       BL_SETITEMDATA
        !           526: #define BL_SETITEMDATAW       BL_SETITEMDATA
        !           527: #define BL_SETTOPINDEXA       BL_SETTOPINDEX
        !           528: #define BL_SETTOPINDEXW       BL_SETTOPINDEX
        !           529: 
        !           530: /* Button listbox notification codes send in WM_COMMAND */
        !           531: #define BLN_ERRSPACE        (-2)
        !           532: #define BLN_SELCHANGE       1
        !           533: #define BLN_CLICKED         2
        !           534: #define BLN_SELCANCEL       3
        !           535: #define BLN_SETFOCUS        4
        !           536: #define BLN_KILLFOCUS       5
        !           537: 
        !           538: /* Message return values */
        !           539: #define BL_OKAY             0
        !           540: #define BL_ERR              (-1)
        !           541: #define BL_ERRSPACE         (-2)
        !           542: 
        !           543: /* Create structure for
        !           544:  * BL_ADDBUTTON and
        !           545:  * BL_INSERTBUTTON
        !           546:  *   lpCLB = (LPCREATELISTBUTTON)lParam
        !           547:  */
        !           548: typedef struct tagCLBA
        !           549: {
        !           550:     UINT        cbSize;     /* size of structure */
        !           551:     DWORD       dwItemData; /* user defined item data */
        !           552:                             /* for LB_GETITEMDATA and LB_SETITEMDATA */
        !           553:     HBITMAP     hBitmap;    /* button bitmap */
        !           554:     LPCSTR      lpszText;   // compatibility
        !           555: 
        !           556: } CREATELISTBUTTONA;
        !           557: typedef CREATELISTBUTTONA * LPCREATELISTBUTTONA;
        !           558: 
        !           559: typedef struct tagCLBW
        !           560: {
        !           561:     UINT        cbSize;     /* size of structure */
        !           562:     DWORD       dwItemData; /* user defined item data */
        !           563:                             /* for LB_GETITEMDATA and LB_SETITEMDATA */
        !           564:     HBITMAP     hBitmap;    /* button bitmap */
        !           565:     LPCWSTR     lpszText;  // button text - in UNICODE
        !           566: } CREATELISTBUTTONW;
        !           567: typedef CREATELISTBUTTONW * LPCREATELISTBUTTONW;
        !           568: 
        !           569: #ifdef UNICODE
        !           570: #define CREATELISTBUTTON CREATELISTBUTTONW
        !           571: #else
        !           572: #define CREATELISTBUTTON CREATELISTBUTTONA
        !           573: #endif
        !           574: 
        !           575: typedef CREATELISTBUTTON * LPCREATELISTBUTTON;
        !           576: 
        !           577: 
        !           578: #endif /* _INC_BTNLIST */
        !           579: #endif
        !           580: 
        !           581: #ifndef NOTRACKBAR
        !           582: /*
        !           583:     This control keeps its ranges in LONGs.  but for
        !           584:     convienence and symetry with scrollbars
        !           585:     WORD parameters are are used for some messages.
        !           586:     if you need a range in LONGs don't use any messages
        !           587:     that pack values into loword/hiword pairs
        !           588: 
        !           589:     The trackbar messages:
        !           590:     message         wParam  lParam  return
        !           591: 
        !           592:     TBM_GETPOS      ------  ------  Current logical position of trackbar.
        !           593:     TBM_GETRANGEMIN ------  ------  Current logical minimum position allowed.
        !           594:     TBM_GETRANGEMAX ------  ------  Current logical maximum position allowed.
        !           595:     TBM_SETTIC
        !           596:     TBM_SETPOS
        !           597:     TBM_SETRANGEMIN
        !           598:     TBM_SETRANGEMAX
        !           599: */
        !           600: 
        !           601: #define TRACKBAR_CLASS          "msctls_trackbar"
        !           602: 
        !           603: /* Trackbar styles */
        !           604: 
        !           605: /* add ticks automatically on TBM_SETRANGE message */
        !           606: #define TBS_AUTOTICKS           0x0001L
        !           607: 
        !           608: 
        !           609: /* Trackbar messages */
        !           610: 
        !           611: /* returns current position (LONG) */
        !           612: #define TBM_GETPOS              (WM_USER)
        !           613: 
        !           614: /* set the min of the range to LPARAM */
        !           615: #define TBM_GETRANGEMIN         (WM_USER+1)
        !           616: 
        !           617: /* set the max of the range to LPARAM */
        !           618: #define TBM_GETRANGEMAX         (WM_USER+2)
        !           619: 
        !           620: /* wParam is index of tick to get (ticks are in the range of min - max) */
        !           621: #define TBM_GETTIC              (WM_USER+3)
        !           622: 
        !           623: /* wParam is index of tick to set */
        !           624: #define TBM_SETTIC              (WM_USER+4)
        !           625: 
        !           626: /* set the position to the value of lParam (wParam is the redraw flag) */
        !           627: #define TBM_SETPOS              (WM_USER+5)
        !           628: 
        !           629: /* LOWORD(lParam) = min, HIWORD(lParam) = max, wParam == fRepaint */
        !           630: #define TBM_SETRANGE            (WM_USER+6)
        !           631: 
        !           632: /* lParam is range min (use this to keep LONG precision on range) */
        !           633: #define TBM_SETRANGEMIN         (WM_USER+7)
        !           634: 
        !           635: /* lParam is range max (use this to keep LONG precision on range) */
        !           636: #define TBM_SETRANGEMAX         (WM_USER+8)
        !           637: 
        !           638: /* remove the ticks */
        !           639: #define TBM_CLEARTICS           (WM_USER+9)
        !           640: 
        !           641: /* select a range LOWORD(lParam) min, HIWORD(lParam) max */
        !           642: #define TBM_SETSEL              (WM_USER+10)
        !           643: 
        !           644: /* set selection rang (LONG form) */
        !           645: #define TBM_SETSELSTART         (WM_USER+11)
        !           646: #define TBM_SETSELEND           (WM_USER+12)
        !           647: 
        !           648: // #define TBM_SETTICTOK           (WM_USER+13)
        !           649: 
        !           650: /* return a pointer to the list of tics (DWORDS) */
        !           651: #define TBM_GETPTICS            (WM_USER+14)
        !           652: 
        !           653: /* get the pixel position of a given tick */
        !           654: #define TBM_GETTICPOS           (WM_USER+15)
        !           655: /* get the number of tics */
        !           656: #define TBM_GETNUMTICS          (WM_USER+16)
        !           657: 
        !           658: /* get the selection range */
        !           659: #define TBM_GETSELSTART         (WM_USER+17)
        !           660: #define TBM_GETSELEND           (WM_USER+18)
        !           661: 
        !           662: /* clear the selection */
        !           663: #define TBM_CLEARSEL            (WM_USER+19)
        !           664: 
        !           665: /* these match the SB_ (scroll bar messages) */
        !           666: 
        !           667: #define TB_LINEUP    0
        !           668: #define TB_LINEDOWN     1
        !           669: #define TB_PAGEUP    2
        !           670: #define TB_PAGEDOWN     3
        !           671: #define TB_THUMBPOSITION   4
        !           672: #define TB_THUMBTRACK      5
        !           673: #define TB_TOP       6
        !           674: #define TB_BOTTOM    7
        !           675: #define TB_ENDTRACK             8
        !           676: #endif
        !           677: 
        !           678: #ifndef NODRAGLIST
        !           679: #ifndef _INC_DRAGLIST
        !           680: #define _INC_DRAGLIST
        !           681: 
        !           682: typedef struct
        !           683:   {
        !           684:     UINT uNotification;
        !           685:     HWND hWnd;
        !           686:     POINT ptCursor;
        !           687:   } DRAGLISTINFO, FAR *LPDRAGLISTINFO;
        !           688: 
        !           689: #define DL_BEGINDRAG (LB_MSGMAX+100)
        !           690: #define DL_DRAGGING  (LB_MSGMAX+101)
        !           691: #define DL_DROPPED   (LB_MSGMAX+102)
        !           692: #define DL_CANCELDRAG   (LB_MSGMAX+103)
        !           693: 
        !           694: #define DL_CURSORSET 0
        !           695: #define DL_STOPCURSOR   1
        !           696: #define DL_COPYCURSOR   2
        !           697: #define DL_MOVECURSOR   3
        !           698: 
        !           699: #define DRAGLISTMSGSTRING "commctrl_DragListMsg"
        !           700: 
        !           701: /* Exported functions and variables
        !           702:  */
        !           703: extern BOOL WINAPI MakeDragList(HWND hLB);
        !           704: extern INT WINAPI LBItemFromPt(HWND hLB, POINT pt, BOOL bAutoScroll);
        !           705: extern VOID WINAPI DrawInsert(HWND handParent, HWND hLB, INT nItem);
        !           706: 
        !           707: #endif   /* _INC_DRAGLIST */
        !           708: 
        !           709: #endif
        !           710: 
        !           711: #ifndef NOUPDOWN
        !           712: /* updown.h : Public interface to the Up/Down control.
        !           713: //
        !           714: */
        !           715: 
        !           716: #ifndef __INC_UPDOWN__
        !           717: #define __INC_UPDOWN__
        !           718: 
        !           719: /*
        !           720: // OVERVIEW:
        !           721: //
        !           722: // The UpDown control is a simple pair of buttons which increment or
        !           723: // decrement an integer value.  The operation is similar to a vertical
        !           724: // scrollbar; except that the control only has line-up and line-down
        !           725: // functionality, and changes the current position automatically.
        !           726: //
        !           727: // The control also can be linked with a companion control, usually an
        !           728: // "edit" control, to simplify dialog-box management.  This companion is
        !           729: // termed a "buddy" in this documentation.  Any sibling HWND may be
        !           730: // assigned as the control's buddy, or the control may be allowed to
        !           731: // choose one automatically.  Once chosen, the UpDown can size itself to
        !           732: // match the buddy's right or left border, and/or automatically set the
        !           733: // text of the buddy control to make the current position visible.
        !           734: //
        !           735: // ADDITIONAL NOTES:
        !           736: //
        !           737: // The "upper" and "lower" limits must not cover a range larger than 32,767
        !           738: // positions.  It is acceptable to have the range inverted, i.e., to have
        !           739: // (lower > upper).  The upper button always moves the current position
        !           740: // towards the "upper" number, and the lower button always moves towards the
        !           741: // "lower" number.  If the range is zero (lower == upper), or the control
        !           742: // is disabled (EnableWindow(hCtrl, FALSE)), the control draws grayed
        !           743: // arrows in both buttons.
        !           744: //
        !           745: // The buddy window must have the same parent as the UpDown control.
        !           746: //
        !           747: // If the buddy window resizes, and the UDS_ALIGN* styles are used, it
        !           748: // is necessary to send the UDM_SETBUDDY message to re-anchor the UpDown
        !           749: // control on the appropriate border of the buddy window.
        !           750: //
        !           751: // The UDS_AUTOBUDDY style uses GetWindow(hCtrl, GW_HWNDPREV) to pick
        !           752: // the best buddy window.  In the case of a DIALOG resource, this will
        !           753: // choose the previous control listed in the resource script.  If the
        !           754: // windows will change in Z-order, sending UDM_SETBUDDY with a NULL handle
        !           755: // will pick a new buddy; otherwise the original auto-buddy choice is
        !           756: // maintained.
        !           757: //
        !           758: // The UDS_SETBUDDYINT style uses its own SetDlgItemInt-style
        !           759: // functionality to set the caption text of the buddy.  All WIN.INI [Intl]
        !           760: // values are honored by this routine.
        !           761: */
        !           762: 
        !           763: /*/////////////////////////////////////////////////////////////////////////*/
        !           764: 
        !           765: /* Structures */
        !           766: 
        !           767: typedef struct tagUDACCEL
        !           768: {
        !           769:    UINT nSec;
        !           770:    UINT nInc;
        !           771: } UDACCEL, FAR *LPUDACCEL;
        !           772: 
        !           773: 
        !           774: /* STYLE BITS */
        !           775: 
        !           776: #define UDS_WRAP     0x0001
        !           777:    /* numbers cycle past range limits */
        !           778: 
        !           779: #define UDS_SETBUDDYINT    0x0002
        !           780:    /* does a SetDlgItemInt on the "buddy" on each number change */
        !           781: 
        !           782: #define UDS_ALIGNRIGHT     0x0004
        !           783: #define UDS_ALIGNLEFT      0x0008
        !           784:    /* aligns the control on the right or left edge of the "buddy" */
        !           785: 
        !           786: #define UDS_AUTOBUDDY      0x0010
        !           787:    /* picks the previous window control as the "buddy" automatically */
        !           788: 
        !           789: #define UDS_ARROWKEYS      0x0020
        !           790:    /* subclasses the buddy to steal the up and down arrow keys */
        !           791: 
        !           792: 
        !           793: /* MESSAGES */
        !           794: 
        !           795: #define UDM_SETRANGE    (WM_USER+101)
        !           796:    /* wParam: not used
        !           797:    // lParam: short LOWORD is new max, short HIWORD is new min
        !           798:    // return: not used
        !           799:    */
        !           800: 
        !           801: #define UDM_GETRANGE    (WM_USER+102)
        !           802:    /* wParam: not used
        !           803:    // lParam: not used
        !           804:    // return: short LOWORD is max, short HIWORD is min
        !           805:    */
        !           806: 
        !           807: #define UDM_SETPOS      (WM_USER+103)
        !           808:    /* wParam: not used
        !           809:    // lParam: short LOWORD is new pos
        !           810:    // return: short is old pos
        !           811:    */
        !           812: 
        !           813: #define UDM_GETPOS      (WM_USER+104)
        !           814:    /* wParam: not used
        !           815:    // lParam: not used
        !           816:    // return: short is current pos
        !           817:    */
        !           818: 
        !           819: #define UDM_SETBUDDY    (WM_USER+105)
        !           820:    /* wParam: HWND is new buddy
        !           821:    // lParam: not used
        !           822:    // return: HWND is old buddy
        !           823:    */
        !           824: 
        !           825: #define UDM_GETBUDDY    (WM_USER+106)
        !           826:    /* wParam: not used
        !           827:    // lParam: not used
        !           828:    // return: HWND is current buddy
        !           829:    */
        !           830: 
        !           831: #define UDM_SETACCEL    (WM_USER+107)
        !           832:    /* wParam: number of acceleration steps
        !           833:    // lParam: LPUDACCEL
        !           834:    // return: non-zero if set, 0 otherwise
        !           835:    // The elements in the UDACCEL array should be in decreasing order
        !           836:    // according to nSec.  nSec is the number of seconds until starting
        !           837:    // the new jump rate, and nInc is the increment once hitting that
        !           838:    // number of seconds.  If there is no match, the increment is 1.
        !           839:    */
        !           840: 
        !           841: #define UDM_GETACCEL    (WM_USER+108)
        !           842:    /* wParam: number of elements in the UDACCEL array
        !           843:    // lParam: LPUDACCEL
        !           844:    // return: actual number of acceleration steps
        !           845:    */
        !           846: 
        !           847: #define UDM_SETBASE         (WM_USER + 109)
        !           848:     // wParam: new base
        !           849:     // lParam: not used
        !           850:     // return: 0 if invalid base is specified, previous base otherwise
        !           851: 
        !           852: #define UDM_GETBASE         (WM_USER + 110)
        !           853:     // wParam: not used
        !           854:     // lParam: not used
        !           855:     // return: current base in LOWORD
        !           856: 
        !           857: 
        !           858: /* NOTIFICATIONS */
        !           859: 
        !           860: /* WM_VSCROLL
        !           861: // Note that unlike a scrollbar, the position is automatically changed by
        !           862: // the control, and the LOWORD(lParam) is always the new position.  Only
        !           863: // SB_LINEUP and SB_LINEDOWN scroll codes are sent in the wParam.
        !           864: */
        !           865: 
        !           866: 
        !           867: /* HELPER APIs */
        !           868: 
        !           869: #define UPDOWN_CLASS "msctls_updown"
        !           870:    /* For dialog-box resource creation or manual CreateWindow use.
        !           871:    */
        !           872: HWND WINAPI CreateUpDownControl(DWORD dwStyle, int x, int y, int cx, int cy,
        !           873:                                 HWND hParent, int nID, HINSTANCE hInst,
        !           874:                                 HWND hBuddy,
        !           875:             int nUpper, int nLower, int nPos);
        !           876:    /* Does the CreateWindow call followed by setting the various
        !           877:    // state information:
        !           878:    // hBuddy   The companion control (usually an "edit").
        !           879:    // nUpper   The range limit corresponding to the upper button.
        !           880:    // nLower   The range limit corresponding to the lower button.
        !           881:    // nPos  The initial position.
        !           882:    // Returns the handle to the control or NULL on failure.
        !           883:    */
        !           884: 
        !           885: /*/////////////////////////////////////////////////////////////////////////*/
        !           886: 
        !           887: #endif /* __INC_UPDOWN__ */
        !           888: 
        !           889: #endif
        !           890: 
        !           891: /* Note that the set of HBN_* and TBN_* defines must be a disjoint set so
        !           892:  * that MenuHelp can tell them apart.
        !           893:  */
        !           894: 
        !           895: /* These are in the GET_WM_COMMAND_CMD in WM_COMMAND messages sent from a
        !           896:  * header bar when the user adjusts the headers with the mouse or keyboard.
        !           897:  */
        !           898: #define HBN_BEGINDRAG   0x0101
        !           899: #define HBN_DRAGGING 0x0102
        !           900: #define HBN_ENDDRAG  0x0103
        !           901: 
        !           902: /* These are in the GET_WM_COMMAND_CMD in WM_COMMAND messages sent from a
        !           903:  * header bar when the user adjusts the headers with the keyboard.
        !           904:  */
        !           905: #define HBN_BEGINADJUST 0x0111
        !           906: #define HBN_ENDADJUST   0x0112
        !           907: 
        !           908: /* These are in the GET_WM_COMMAND_CMD in WM_COMMAND messages sent from a
        !           909:  * tool bar.  If the left button is pressed and then released in a single
        !           910:  * "button" of a tool bar, then a WM_COMMAND message will be sent with wParam
        !           911:  * being the id of the button.
        !           912:  */
        !           913: #define TBN_BEGINDRAG   0x0201
        !           914: #define TBN_ENDDRAG  0x0203
        !           915: 
        !           916: /* These are in the GET_WM_COMMAND_CMD in WM_COMMAND messages sent from a
        !           917:  * tool bar.  The TBN_BEGINADJUST message is sent before the "insert"
        !           918:  * dialog appears.  The app must return a handle (which will
        !           919:  * NOT be freed by the toolbar) to an ADJUSTINFO struct for the TBN_ADJUSTINFO
        !           920:  * message; the LOWORD of lParam is the index of the button whose info should
        !           921:  * be retrieved.  The app can clean up in the TBN_ENDADJUST message.
        !           922:  * The app should reset the toolbar on the TBN_RESET message.
        !           923:  */
        !           924: #define TBN_BEGINADJUST 0x0204
        !           925: #define TBN_ADJUSTINFO  0x0205
        !           926: #define TBN_ENDADJUST   0x0206
        !           927: #define TBN_RESET 0x0207
        !           928: 
        !           929: /* These are in the GET_WM_COMMAND_CMD in WM_COMMAND messages sent from a
        !           930:  * tool bar.  The LOWORD is the index where the button is or will be.
        !           931:  * If the app returns FALSE from either of these during a button move, then
        !           932:  * the button will not be moved.  If the app returns FALSE to the INSERT
        !           933:  * when the toolbar tries to add buttons, then the insert dialog will not
        !           934:  * come up.  TBN_TOOLBARCHANGE is sent whenever any button is added, moved,
        !           935:  * or deleted from the toolbar by the user, so the app can do stuff.
        !           936:  */
        !           937: #define TBN_QUERYINSERT 0x0208
        !           938: #define TBN_QUERYDELETE 0x0209
        !           939: #define TBN_TOOLBARCHANGE  0x020a
        !           940: 
        !           941: 
        !           942: /* This is the help message sent by the customize toolbar dialog
        !           943:  * when the user clicks the help button. It is sent back to the
        !           944:  * owner of the customize window.
        !           945:  * GET_WM_COMMAND_HWND(wParam,lParam) will return the window handle.
        !           946:  */
        !           947: #define TBN_CUSTHELP    0x20b
        !           948: 
        !           949: /* Note that the following flags are checked every time the window gets a
        !           950:  * WM_SIZE message, so the style of the window can be changed "on-the-fly".
        !           951:  * If NORESIZE is set, then the app is responsible for all control placement
        !           952:  * and sizing.  If NOPARENTALIGN is set, then the app is responsible for
        !           953:  * placement.  If neither is set, the app just needs to send a WM_SIZE
        !           954:  * message for the window to be positioned and sized correctly whenever the
        !           955:  * parent window size changes.
        !           956:  * Note that for STATUS bars, CCS_BOTTOM is the default, for HEADER bars,
        !           957:  * CCS_NOMOVEY is the default, and for TOOL bars, CCS_TOP is the default.
        !           958:  */
        !           959: #define CCS_TOP         0x00000001L
        !           960: /* This flag means the status bar should be "top" aligned.  If the
        !           961:  * NOPARENTALIGN flag is set, then the control keeps the same top, left, and
        !           962:  * width measurements, but the height is adjusted to the default, otherwise
        !           963:  * the status bar is positioned at the top of the parent window such that
        !           964:  * its client area is as wide as the parent window and its client origin is
        !           965:  * the same as its parent.
        !           966:  * Similarly, if this flag is not set, the control is bottom-aligned, either
        !           967:  * with its original rect or its parent rect, depending on the NOPARENTALIGN
        !           968:  * flag.
        !           969:  */
        !           970: #define CCS_NOMOVEY     0x00000002L
        !           971: /* This flag means the control may be resized and moved horizontally (if the
        !           972:  * CCS_NORESIZE flag is not set), but it will not move vertically when a
        !           973:  * WM_SIZE message comes through.
        !           974:  */
        !           975: #define CCS_BOTTOM      0x00000003L
        !           976: /* Same as CCS_TOP, only on the bottom.
        !           977:  */
        !           978: #define CCS_NORESIZE    0x00000004L
        !           979: /* This flag means that the size given when creating or resizing is exact,
        !           980:  * and the control should not resize itself to the default height or width
        !           981:  */
        !           982: #define CCS_NOPARENTALIGN  0x00000008L
        !           983: /* This flag means that the control should not "snap" to the top or bottom
        !           984:  * or the parent window, but should keep the same placement it was given
        !           985:  */
        !           986: #define CCS_NOHILITE    0x00000010L
        !           987: /* Don't draw the one pixel highlight at the top of the control
        !           988:  */
        !           989: #define CCS_ADJUSTABLE     0x00000020L
        !           990: /* This allows a toolbar (header bar?) to be configured by the user.
        !           991:  */
        !           992: 
        !           993: /* Stub function to call if all you want to do is make sure this DLL is loaded
        !           994:  */
        !           995: VOID WINAPI InitCommonControls(VOID);
        !           996: 
        !           997: // albertt 13 2.8
        !           998: #define SST_RESOURCE 0x1
        !           999: #define SST_FORMAT   0x2
        !          1000: 
        !          1001: #ifdef __cplusplus
        !          1002: }                  /* End of extern "C" { */
        !          1003: #endif             /* __cplusplus */
        !          1004: 
        !          1005: #endif             /* _INC_COMMCTRL */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.