gui.h
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C头文件 代码 · 共 976 行 · 第 1/3 页
H
976 行
/****************************************************************************
*
* Open Watcom Project
*
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
*
* ========================================================================
*
* This file contains Original Code and/or Modifications of Original
* Code as defined in and that are subject to the Sybase Open Watcom
* Public License version 1.0 (the 'License'). You may not use this file
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
* provided with the Original Code and Modifications, and is also
* available at www.sybase.com/developer/opensource.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
* NON-INFRINGEMENT. Please see the License for the specific language
* governing rights and limitations under the License.
*
* ========================================================================
*
* Description: Master GUI library include file.
*
****************************************************************************/
#include "bool.h"
#ifdef UNIX
#include "clibext.h"
#endif
#include "guimem.h"
typedef int gui_ord;
#define GUI_LAST_INTERNAL_MSG 255
#define GUI_LAST_MENU_ID 10000
typedef enum {
GUI_NO_EVENT,
GUI_INIT_WINDOW,
GUI_INIT_DIALOG,
GUI_NOT_ACTIVE,
GUI_NOW_ACTIVE,
GUI_MOVE,
GUI_RESIZE,
GUI_ICONIFIED,
GUI_FONT_CHANGED,
GUI_PAINT,
GUI_KEYDOWN, /* keystroke messages */
GUI_KEYUP,
GUI_KEY_CONTROL,
GUI_SCROLL_UP, /* scrolling messages */
GUI_SCROLL_PAGE_UP,
GUI_SCROLL_TOP,
GUI_SCROLL_DOWN,
GUI_SCROLL_PAGE_DOWN,
GUI_SCROLL_BOTTOM,
GUI_SCROLL_VERTICAL,
GUI_SCROLL_LEFT,
GUI_SCROLL_PAGE_LEFT,
GUI_SCROLL_FULL_LEFT,
GUI_SCROLL_RIGHT,
GUI_SCROLL_PAGE_RIGHT,
GUI_SCROLL_FULL_RIGHT,
GUI_SCROLL_HORIZONTAL,
GUI_CLICKED, /* menu clicked */
GUI_CONTROL_DCLICKED, /* control double clicked */
GUI_LBUTTONDOWN, /* mouse messages */
GUI_LBUTTONUP,
GUI_LBUTTONDBLCLK,
GUI_RBUTTONDOWN,
GUI_RBUTTONUP,
GUI_RBUTTONDBLCLK,
GUI_MOUSEMOVE,
GUI_TOOLBAR_DESTROYED, /* toolbar messages */
GUI_TOOLBAR_FIXED,
GUI_TOOLBAR_FLOATING,
GUI_CLOSE,
GUI_DESTROY,
GUI_HSCROLL_NOTIFY,
GUI_VSCROLL_NOTIFY,
GUI_CONTROL_NOT_ACTIVE,
GUI_CONTROL_CLICKED, /* control clicked */
GUI_INITMENUPOPUP, /* popup menu about to open */
GUI_CONTROL_RCLICKED, /* control right clicked */
GUI_DIALOG_ESCAPE, /* escape was pressed in a dialog */
GUI_STATUS_CLEARED, /* the text in the status line was cleared */
GUI_QUERYENDSESSION, /* the windowing system is asking if we can close */
/* if you return FALSE your session indicating
that it is OK by it to shutdown the
windowing subsystem */
GUI_ENDSESSION, /* the windowing system is telling us we must close */
GUI_KEYTOITEM,
GUI_ACTIVATEAPP,
GUI_CONTEXTHELP, /* the F1 key has been pressed */
GUI_TIMER_EVENT
} gui_event;
typedef struct gui_coord {
gui_ord x;
gui_ord y;
} gui_coord;
typedef struct gui_point {
int x;
int y;
} gui_point;
typedef struct gui_window gui_window;
typedef enum {
GUI_BAD_CLASS = -1,
GUI_PUSH_BUTTON,
GUI_DEFPUSH_BUTTON,
GUI_RADIO_BUTTON,
GUI_CHECK_BOX,
GUI_COMBOBOX,
GUI_EDIT,
GUI_LISTBOX,
GUI_SCROLLBAR,
GUI_STATIC,
GUI_GROUPBOX,
GUI_EDIT_COMBOBOX,
GUI_EDIT_MLE,
GUI_NUM_CONTROL_CLASSES,
GUI_FIRST_CONTROL_CLASS = GUI_PUSH_BUTTON,
GUI_LAST_CONTROL_CLASS = GUI_EDIT_MLE
} gui_control_class;
typedef enum {
GUI_MENU_PLAIN,
GUI_MENU_STANDOUT,
GUI_MENU_GRAYED,
GUI_MENU_ACTIVE,
GUI_MENU_ACTIVE_STANDOUT,
GUI_BACKGROUND,
GUI_MENU_FRAME,
GUI_TITLE_INACTIVE,
GUI_FRAME_ACTIVE,
GUI_FRAME_INACTIVE,
GUI_ICON,
GUI_MENU_GRAYED_ACTIVE,
GUI_FRAME_RESIZE,
GUI_FIRST_ATTR = GUI_MENU_PLAIN,
GUI_LAST_ATTR = GUI_FRAME_RESIZE,
GUI_FIRST_UNUSED = GUI_LAST_ATTR + 1,
GUI_NUM_ATTRS = GUI_LAST_ATTR + 1
} gui_attr;
typedef enum {
GUI_DLG_NORMAL,
GUI_DLG_FRAME,
GUI_DLG_SHADOW,
GUI_DLG_SCROLL_ICON,
GUI_DLG_SCROLL_BAR,
GUI_DLG_BUTTON_PLAIN,
GUI_DLG_BUTTON_STANDOUT,
GUI_DLG_BUTTON_ACTIVE,
GUI_DLG_BUTTON_ACTIVE_STANDOUT,
GUI_DLG_NUM_ATTRS
} gui_dlg_attr;
typedef enum {
GUI_ENABLED = 0x00,
GUI_MENU_CHECKED = 0x01,
GUI_GRAYED = 0x02,
GUI_SEPARATOR = 0x04,
GUI_IGNORE = 0x08, // don't display
GUI_MDIWINDOW = 0x10,
GUI_UTIL_1 = 0x40, // can be used by the application
GUI_UTIL_2 = 0x80
} gui_menu_styles ;
typedef unsigned long gui_help_instance;
typedef enum {
GUI_HELP_CONTENTS
, GUI_HELP_ON_HELP
, GUI_HELP_SEARCH
, GUI_HELP_CONTEXT
, GUI_HELP_KEY
} gui_help_actions;
typedef long gui_bitmap;
typedef struct gui_toolbar_struct {
char *label;
gui_bitmap bitmap;
int id;
char *hinttext;
} gui_toolbar_struct;
typedef struct gui_menu_struct {
char *label;
int id;
gui_menu_styles style;
char *hinttext;
int num_child_menus;
struct gui_menu_struct *child;
} gui_menu_struct;
typedef enum {
GUI_BAD_COLOUR = -1,
GUI_BLACK,
GUI_BLUE,
GUI_GREEN,
GUI_CYAN,
GUI_RED,
GUI_MAGENTA,
GUI_BROWN,
GUI_WHITE,
GUI_GREY,
GUI_BRIGHT_BLUE,
GUI_BRIGHT_GREEN,
GUI_BRIGHT_CYAN,
GUI_BRIGHT_RED,
GUI_BRIGHT_MAGENTA,
GUI_BRIGHT_YELLOW,
GUI_BRIGHT_WHITE,
GUI_NUM_COLOURS,
GUI_FIRST_COLOUR = GUI_BLACK,
GUI_LAST_COLOUR = GUI_BRIGHT_WHITE
} gui_colour;
#define GUI_NORMAL GUI_BLACK // for NEC PC
#define GUI_REVERSE GUI_WHITE // for NEC PC
#define GUI_YELLOW GUI_BROWN // for NEC PC
typedef struct gui_colour_set {
gui_colour fore;
gui_colour back;
} gui_colour_set;
typedef unsigned long gui_rgb;
#define GUIRGB(r,g,b) ((gui_rgb)(((unsigned char)(r)) | (((unsigned short)(g))<<8) | (((unsigned long)(b))<<16)))
#define GUIGETRVALUE(rgb) ((rgb) & 0xff)
#define GUIGETGVALUE(rgb) (((rgb) & 0xff00 ) >> 8)
#define GUIGETBVALUE(rgb) (((rgb) & 0xff0000) >> 16)
typedef struct gui_rect {
gui_ord x;
gui_ord y;
gui_ord width;
gui_ord height;
} gui_rect;
typedef enum gui_scroll_styles {
GUI_NOSCROLL = 0x00,
GUI_HSCROLL = 0x01,
GUI_VSCROLL = 0x02,
GUI_HDRAG = 0x04, /* change position by draging thumb */
GUI_VDRAG = 0x08, /* change position by draging thumb */
GUI_HTRACK = 0x10, /* scroll while dragging thumb */
GUI_VTRACK = 0x20, /* scroll while dragging thumb */
GUI_HCOLS = 0x40, /* scroll by average character width */
GUI_VROWS = 0x80, /* scroll by average character height */
GUI_HSCROLL_ALL = GUI_HSCROLL | GUI_HDRAG | GUI_HTRACK | GUI_HCOLS,
GUI_VSCROLL_ALL = GUI_VSCROLL | GUI_VDRAG | GUI_VTRACK | GUI_VROWS,
GUI_SCROLL_BOTH = GUI_HSCROLL | GUI_VSCROLL | GUI_HCOLS | GUI_VROWS,
GUI_SCROLL_BOTH_ALL = GUI_HSCROLL_ALL | GUI_VSCROLL_ALL
} gui_scroll_styles;
typedef enum gui_create_styles {
GUI_NONE = 0x0000,
GUI_HSCROLL_EVENTS = 0x0001,
GUI_VSCROLL_EVENTS = 0x0002,
GUI_CURSOR = 0x0004,
GUI_RESIZEABLE = 0x0008,
GUI_MAXIMIZE = 0x0010,
GUI_MINIMIZE = 0x0020,
GUI_CLOSEABLE = 0x0040,
GUI_SYSTEM_MENU = 0x0080,
GUI_VISIBLE = 0x0100,
GUI_DIALOG_LOOK = 0x0200,
GUI_INIT_INVISIBLE = 0x0400,
GUI_CHANGEABLE_FONT = 0x0800,
GUI_POPUP = 0x1000,
GUI_INIT_MAXIMIZED = 0x2000,
GUI_INIT_MINIMIZED = 0x4000,
GUI_NOFRAME = 0x8000,
GUI_SCROLL_EVENTS = GUI_HSCROLL_EVENTS | GUI_VSCROLL_EVENTS,
GUI_GADGETS = GUI_CURSOR | GUI_RESIZEABLE | GUI_MINIMIZE |
GUI_MAXIMIZE | GUI_CLOSEABLE | GUI_SYSTEM_MENU,
GUI_ALL = GUI_GADGETS | GUI_VISIBLE | GUI_CHANGEABLE_FONT
} gui_create_styles;
typedef enum gui_control_styles {
GUI_NOSTYLE = 0x00,
GUI_CHECKED = 0x01,
GUI_TAB_GROUP = 0x02,
GUI_AUTOMATIC = 0x04,
GUI_GROUP = 0x08,
GUI_FOCUS = 0x10,
GUI_CONTROL_INIT_INVISIBLE = 0x20,
GUI_CONTROL_LEFTNOWORDWRAP = 0x40,
GUI_CONTROL_NOPREFIX = 0x80,
GUI_CONTROL_CENTRE = 0x100,
GUI_CONTROL_NOINTEGRALHEIGHT = 0x200,
GUI_CONTROL_SORTED = 0x400,
GUI_CONTROL_MULTILINE = 0x800,
GUI_CONTROL_WANTRETURN = 0x1000,
GUI_EDIT_INVISIBLE = 0x2000,
GUI_CONTROL_3STATE = 0x4000,
GUI_CONTROL_WANTKEYINPUT = 0x8000,
GUI_CONTROL_READONLY = 0x10000
} gui_control_styles;
typedef enum gui_line_styles {
GUI_PEN_SOLID = 0x00,
GUI_PEN_DASH = 0x01,
GUI_PEN_DOT = 0x02,
GUI_PEN_DASHDOT = 0x04,
GUI_PEN_DASHDOTDOT = 0x08
} gui_line_styles;
typedef enum gui_bar_styles {
GUI_BAR_SIMPLE = 0x01,
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?