gui.h

来自「开放源码的编译器open watcom 1.6.0版的源代码」· C头文件 代码 · 共 976 行 · 第 1/3 页

H
976
字号
    GUI_BAR_SHADOW      = 0x02,
    GUI_BAR_3DRECT1     = 0x04,
    GUI_BAR_3DRECT2     = 0x08,
    GUI_FULL_BAR        = 0x10
} gui_bar_styles;

typedef struct gui_resource {
    gui_bitmap  res;
    char        *chars; /* Character based              */
} gui_resource;

typedef struct gui_control_info {
    gui_control_class   control_class;
    char                *text;
    gui_rect            rect;
    gui_window          *parent;
    gui_scroll_styles   scroll;
    gui_control_styles  style;
    unsigned            id;
} gui_control_info;

typedef bool (GUICALLBACK)( gui_window *, gui_event, void * );
typedef void (ENUMCALLBACK)( gui_window *, void *param );
typedef void (CONTRENUMCALLBACK)( gui_window *parent, unsigned id, void *param );
typedef void (PICKCALLBACK)( gui_window *, int id );
typedef void (PICKDLGOPEN)( char *name, int rows, int cols,
                             struct gui_control_info *ctl, int num_controls,
                             GUICALLBACK *rtn, void *extra );

typedef struct gui_create_info {
    char                *text;
    gui_rect            rect;
    gui_scroll_styles   scroll;
    gui_create_styles   style;
    gui_window          *parent;
    int                 num_menus;
    gui_menu_struct     *menu;
    int                 num_attrs;
    gui_colour_set      *colours;      /* array of num_attrs gui_attrs */
    GUICALLBACK         *call_back;
    void                *extra;
    gui_resource        *icon;
    int                 resource_menu;
} gui_create_info;

typedef enum {
    GUI_ABORT_RETRY_IGNORE      = 0x001,
    GUI_EXCLAMATION             = 0x002,
    GUI_INFORMATION             = 0x004,
    GUI_QUESTION                = 0x008,
    GUI_STOP                    = 0x010,
    GUI_OK                      = 0x020,
    GUI_OK_CANCEL               = 0x040,
    GUI_RETRY_CANCEL            = 0x080,
    GUI_YES_NO                  = 0x100,
    GUI_YES_NO_CANCEL           = 0x200,
    GUI_SYSTEMMODAL             = 0x400
} gui_message_type;

typedef enum {
    GUI_RET_ABORT,
    GUI_RET_CANCEL,
    GUI_RET_IGNORE,
    GUI_RET_NO,
    GUI_RET_OK,
    GUI_RET_RETRY,
    GUI_RET_YES
} gui_message_return;

typedef struct gui_text_metrics {
    gui_coord avg;
    gui_coord max;
} gui_text_metrics;

typedef struct gui_system_metrics {
    gui_coord   resize_border;
    bool        colour;
    bool        mouse;
    gui_coord   top_left;
    gui_coord   bottom_right;
    gui_coord   scrollbar_size;
    gui_coord   dialog_top_left_size;
    gui_coord   dialog_bottom_right_size;
    gui_ord     caption_size;
} gui_system_metrics;

typedef enum {
    GUI_TRACK_NONE      = 0x00,
    GUI_TRACK_LEFT      = 0x01,
    GUI_TRACK_RIGHT     = 0x02,
    GUI_TRACK_BOTH      = GUI_TRACK_LEFT | GUI_TRACK_RIGHT
} gui_mouse_track;

typedef enum {
    GUI_KS_NONE       =    0x00,
    GUI_KS_ALT        =    0x01,
    GUI_KS_SHIFT      =    0x02,
    GUI_KS_CTRL       =    0x04
} gui_keystate;

typedef enum {
    GUI_ARROW_CURSOR,
    GUI_HOURGLASS_CURSOR,
    GUI_CROSS_CURSOR
} gui_mouse_cursor;

typedef enum {
    GUI_NO_CURSOR,
    GUI_NORMAL_CURSOR,
    GUI_INSERT_CURSOR
} gui_char_cursor;

typedef enum {
    GUI_FRAME_TOP,
    GUI_FRAME_UL_CORNER,
    GUI_FRAME_LEFT,
    GUI_FRAME_LL_CORNER,
    GUI_FRAME_BOTTOM,
    GUI_FRAME_LR_CORNER,
    GUI_FRAME_RIGHT,
    GUI_FRAME_UR_CORNER,
    GUI_LR_VERT_BAR,
    GUI_LR_HORZ_BAR,
    GUI_LEFT_TITLE_MARK,
    GUI_RIGHT_TITLE_MARK,
    GUI_LEFT_GADGET_MARK,
    GUI_RIGHT_GADGET_MARK,
    GUI_TITLE_SPACE,
    GUI_CLOSER,
    GUI_MAXIMIZE_GADGET,
    GUI_MINIMIZE_GADGET,
    GUI_RESIZE_GADGET,
    GUI_HOR_SCROLL,
    GUI_VERT_SCROLL,
    GUI_LEFT_SCROLL_ARROW,
    GUI_RIGHT_SCROLL_ARROW,
    GUI_UP_SCROLL_ARROW,
    GUI_DOWN_SCROLL_ARROW,
    GUI_SCROLL_SLIDER,
    GUI_INACT_FRAME_TOP,
    GUI_INACT_FRAME_UL_CORNER,
    GUI_INACT_FRAME_LEFT,
    GUI_INACT_FRAME_LL_CORNER,
    GUI_INACT_FRAME_BOTTOM,
    GUI_INACT_FRAME_LR_CORNER,
    GUI_INACT_FRAME_RIGHT,
    GUI_INACT_FRAME_UR_CORNER,
    GUI_INACT_LR_VERT_BAR,
    GUI_INACT_LR_HORZ_BAR,
    GUI_INACT_LEFT_TITLE_MARK,
    GUI_INACT_RIGHT_TITLE_MARK,
    GUI_INACT_LEFT_GADGET_MARK,
    GUI_INACT_RIGHT_GADGET_MARK,
    GUI_INACT_TITLE_SPACE,
    GUI_INACT_CLOSER,
    GUI_INACT_MAXIMIZE_GADGET,
    GUI_INACT_MINIMIZE_GADGET,
    GUI_INACT_RESIZE_GADGET,
    GUI_INACT_HOR_SCROLL,
    GUI_INACT_VERT_SCROLL,
    GUI_INACT_LEFT_SCROLL_ARROW,
    GUI_INACT_RIGHT_SCROLL_ARROW,
    GUI_INACT_UP_SCROLL_ARROW,
    GUI_INACT_DOWN_SCROLL_ARROW,
    GUI_INACT_SCROLL_SLIDER,
    GUI_DIAL_VERT_SCROLL,
    GUI_DIAL_UP_SCROLL_ARROW,
    GUI_DIAL_DOWN_SCROLL_ARROW,
    GUI_DIAL_SCROLL_SLIDER,
    GUI_NUM_DRAW_CHARS,
    GUI_INACTIVE_OFFSET = GUI_INACT_FRAME_TOP
} gui_draw_char;

typedef enum {
    GUI_PLAIN           = 0x00,
    GUI_CHARMAP_MOUSE   = 0x01,
    GUI_INACT_GADGETS   = 0x02,
    GUI_INACT_SAME      = 0x04,
    GUI_CHARMAP_DLG     = 0x08,
    GUI_GMOUSE          = (GUI_CHARMAP_DLG|GUI_CHARMAP_MOUSE)
} gui_window_styles;

#define GUI_SHIFT( state )      ( state & GUI_KS_SHIFT )
#define GUI_ALT( state )        ( state & GUI_KS_ALT  )
#define GUI_CTRL( state )       ( state & GUI_KS_CTRL )

#define GUI_NO_COLUMN ((gui_ord)-1)
#define GUI_NO_ROW ((gui_ord)-1)
#define NO_SELECT -1

// GUIIsChecked and GUISetChecked values
#define GUI_NOT_CHECKED         0
#define GUI_CHECKED             1
#define GUI_INDETERMINANT       2

/*
 **************************************************************
 * GUI_MOUSEMOVE :
 * GUI_LBUTTONUDOWN :
 * GUI_LBUTTONUP :
 * GUI_LBUTTONDBLCLK :
 * GUI_RBUTTONUDOWN :
 * GUI_RBUTTONUP :
 * GUI_RBUTTONDBLCLK : 1 parameter - gui_point : GUI_GET_POINT
 **************************************************************
 * GUI_PAINT : 2 parameters - gui_ord, int : GUI_GET_ROWS
 **************************************************************
 * GUI_ENDSESSION : historical 1 parameter - bool : GUI_GET_BOOL
 * GUI_QUERYENDSESSION : 2 parameters - bool, long : GUI_GET_ENDSESSION
 **************************************************************
 * GUI_CONTROL_NOT_ACTIVE :
 * GUI_CLICKED :
 * GUI_CONTROL_CLICKED
 * GUI_CONTROL_DCLICKED : 1 parameter - unsigned : GUI_GETID
 **************************************************************
 * GUI_RESIZE : 1 parameter - gui_coord : GUI_GET_SIZE
 **************************************************************
 * GUI_SCROLL_VERTICAL :
 * GUI_SCROLL_HORIZONTAL : 1 parametr - int : GUI_GET_SCROLL
 **************************************************************
 *
 *
 */

typedef struct gui_row_num {
    gui_ord     start;
    int         num;
} gui_row_num;

typedef struct gui_end_session {
    bool        endsession;
    bool        logoff;
} gui_end_session;

typedef struct gui_timer_event {
    int id;
} gui_timer_event;

#define GUI_GET_TIMER( param, i ) { \
                                i = ((gui_timer_event *)param)->id; \
                            }

#define GUI_GET_BOOL( param, b ) {                                          \
                                b = ((gui_end_session *)param)->endsession; \
                            }

#define GUI_GET_ENDSESSION( param, b, l ) {                                 \
                                b = ((gui_end_session *)param)->endsession; \
                                l = ((gui_end_session *)param)->logoff;     \
                            }

#define GUI_GET_POINT( param, point ) ( point = *( gui_point * )param )

#define GUI_GET_ROWS( param, gui_start, gui_num ) {                          \
                                gui_start = (( gui_row_num * )param)->start; \
                                gui_num =   (( gui_row_num * )param)->num;   \
                                                   }

#define GUI_GETID( param, id ) ( id = ( unsigned short )(*( unsigned * )param ) )

#define GUI_GET_SIZE( param, size ) { size.x = (( gui_coord * )param)->x; \
                                      size.y = (( gui_coord * )param)->y; }

#define GUI_GET_SCROLL( param, scroll ) ( scroll = *( int * )param )

/* Initialization Functions */

extern bool GUIWndInit( unsigned rate, gui_window_styles style );
extern void GUIGMouseOn( void );
extern void GUIGMouseOff( void );
extern void GUIMDIInit( void );
extern void GUIMDIInitMenuOnly( void );
extern bool GUI3DDialogInit( void );
extern void GUISetBetweenTitles( int between_titles );
extern void GUIGetRoundScale( gui_coord *scale );
extern void GUISetScale( gui_rect *screen );
extern void GUIGetScale( gui_rect *screen );
extern void GUIGetScreen( gui_rect *rect );
extern void GUISetDClickRate( unsigned rate );
extern void GUISetCharacter( gui_draw_char draw_char, char new_char );
extern char GUIGetCharacter( gui_draw_char draw_char );
extern bool GUIIsInit( void );
extern void GUISetF10Menus( bool setting );
extern void GUICleanup( void );

/* colour functions */

extern void GUISetBackgroundColour( gui_colour_set *colour );
extern void GUIGetDialogColours( gui_colour_set *colours );
extern void GUISetDialogColours( gui_colour_set *colours );
extern void GUISetWindowColours( gui_window *wnd, int num_colours, gui_colour_set *colours );
extern bool GUISetRGB( gui_colour colour, gui_rgb rgb );
extern bool GUIGetRGB( gui_colour colour, gui_rgb *rgb );
extern bool GUIGetWndColour( gui_window *wnd, gui_attr attr, gui_colour_set *colour_set );
extern bool GUISetWndColour( gui_window *wnd, gui_attr attr, gui_colour_set *colour_set );
extern bool GUIGetRGBFromUser( gui_rgb init_rgb, gui_rgb *new_rgb );
extern bool GUIGetColourFromUser( char *title, gui_colour *init, gui_colour *new_colour );

/* Hot Spot (sizzle spot) functions */

extern bool GUIInitHotSpots( int num_hot_spots, gui_resource *hot );
extern int  GUIGetNumHotSpots( void );
extern bool GUIGetHotSpotSize( int hot_spot, gui_coord *size );
extern void GUIDrawHotSpot( gui_window *wnd, int hot_spot, gui_ord row,
                            gui_ord indent, gui_attr attr );

/* Window Functions */

extern gui_window *GUICreateWindow( gui_create_info *info );
extern int GUIGetNumWindowColours( gui_window *wnd );
extern gui_colour_set *GUIGetWindowColours( gui_window *wnd );
extern void GUIDestroyWnd( gui_window *wnd );
extern void GUIWndDirty( gui_window *wnd );
extern void GUIControlDirty( gui_window *wnd, unsigned id );
extern void GUIWndDirtyRow( gui_window *wnd, gui_ord row );
extern void GUIWndDirtyRect( gui_window *wnd, gui_rect *rect );
extern void GUIRefresh( void );
extern void GUIWndUpdate( gui_window *wnd );
extern bool GUISetBackgroundChar( gui_window *wnd, char background );

extern void GUIActivateNC( gui_window *wnd, bool activate );
extern void GUIBringToFront( gui_window *wnd );
extern gui_window *GUIGetFront( void );
extern gui_window *GUIGetParentWindow( gui_window *wnd );
extern bool GUIIsRootWindow( gui_window *wnd );
extern gui_window *GUIGetRootWindow( void );

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?