/*++ BUILD Version: 0001
 *
 *  WOW v1.0
 *
 *  Copyright (c) 1991, Microsoft Corporation
 *
 *  COMBCOM.H
 *
 *  History:
 *  Created 28-May-1991 by Jeff Parsons (jeffpar)
 *  Copied from WIN31 and edited (as little as possible) for WOW16
--*/

/*
 * combcom.h - Common include file for combo boxs. This include file is used
 * in the combo box code, the single line edit control code, listbox code, and
 * static control code.
 */

/* ID numbers (hMenu) for the child controls in the combo box */
#define CBLISTBOXID 1000
#define CBEDITID    1001
#define CBBUTTONID  1002

typedef struct tagCBox
  {
    HWND    hwnd;              /* Window for the combo box */
    HWND    hwndParent;        /* Parent of the combo box */
    RECT    comboDownrc;       /* Rectangle used for the "dropped" 
                                  (listbox visible) combo box */
    RECT    editrc;            /* Rectangle for the edit control/static text 
                                  area */
    RECT    buttonrc;          /* Rectangle where the dropdown button is */
    HWND    editHwnd;          /* Edit control window handle */
    HWND    listboxHwnd;       /* List box control window handle */
    WORD    CBoxStyle;         /* Combo box style */
    WORD    OwnerDraw;         /* Owner draw combo box if nonzero. value
				* specifies either fixed or varheight 
				*/
    WORD    fFocus:1;          /* Combo box has focus? */
    WORD    fNoRedraw:1;       /* Stop drawing? */
    WORD    fNoEdit:1;         /* True if editing is not allowed in the edit
				* window.  
				*/
    WORD    fButtonDownClicked:1;/* Was the popdown button just clicked and 
                                  mouse still down? */
    WORD    fButtonInverted:1; /* Is the dropdown button in an inverted state?
				*/
    WORD    fLBoxVisible:1;    /* Is list box visible? (dropped down?) */
    WORD    fKeyboardSelInListBox:1; /*	Is the user keyboarding through the
				      * listbox. So that we don't hide the
				      * listbox on selchanges caused by the
				      * user keyboard through it but we do
				      * hide it if the mouse causes the
				      *	selchange. 
				      */
    WORD    fExtendedUI:1;     /* Are we doing TandyT's UI changes on this
                                * combo box?
				*/
    HANDLE  hFont;             /* Font for the combo box */
    LONG    styleSave;         /* Save the style bits when creating window.
				* Needed because we strip off some bits and
				* pass them on to the listbox or edit box. 
				*/
  } CBOX;

typedef CBOX NEAR *PCBOX;
typedef CBOX FAR  *LPCBOX;

/*
 * For CBOX.cBoxType field, we define the following combo box styles. These
 * numbers are the same as the CBS_ style codes as defined in windows.h.
 */
#define SSIMPLE         1
#define SDROPDOWN       2
#define SDROPDOWNLIST   3

/* Owner draw types */
#define OWNERDRAWFIXED 1
#define OWNERDRAWVAR   2

/*
 * Special styles for static controls, edit controls & listboxes so that we
 * can do combo box specific stuff in their wnd procs.
 */
#define ES_COMBOBOX     0x0200L
#define LBS_COMBOBOX    0x8000L

/* Special internal combo box messages */
#define CBEC_SETCOMBOFOCUS  CB_MSGMAX+1
#define CBEC_KILLCOMBOFOCUS CB_MSGMAX+2


/* Special messages for listboxes so give combo box support */
#define LBCB_CARETON     LB_MSGMAX+1
#define LBCB_CARETOFF    LB_MSGMAX+2

/* Common Procedures */
VOID FAR PASCAL CBUpdateEditWindow(register PCBOX);
VOID FAR PASCAL CBHideListBoxWindow(register PCBOX pcbox, BOOL fNotifyParent);
VOID FAR PASCAL CBShowListBoxWindow(register PCBOX);