campo-sirio/xvaga/xvt_type.h
guy 69d1f20de3 Patch level : 10.0
Files correlati     : xvaga.dll
Ricompilazione Demo : [ ]
Commento            :
Corretta gestione evento di cambio pagina: ora arriva prima di cambiarla e non dopo!
Migliorata gestione risorse grafiche: icone, bitmap e cursori


git-svn-id: svn://10.65.10.50/trunk@19477 c028cbd2-c16b-5b4b-a496-9718f37d4682
2009-10-20 15:17:17 +00:00

474 lines
13 KiB
C
Executable File

#ifndef BOOLEAN
#define BOOLEAN short
#endif
#ifndef FALSE
#define FALSE 0
#define TRUE 1
#endif
#ifdef LINUX
#define _MAX_PATH 512
#define _MAX_EXT 6
#define _MAX_DRIVE 6
#define _MAX_DIR 512
#define _MAX_FNAME 512
#endif
typedef unsigned long WINDOW;
typedef unsigned int UNIT_TYPE;
typedef unsigned long ULONG;
typedef unsigned long XVT_ERRMSG;
typedef unsigned long XVT_ODBC;
typedef wchar_t XVT_WCHAR;
typedef short MENU_TAG;
typedef short CURSOR;
typedef char* DATA_PTR;
#define EOL_SEQ "\015\012"
typedef struct
{
short top, left, bottom, right;
} RCT;
typedef long XVT_HELP_TID;
typedef unsigned long COLOR;
typedef unsigned long XVT_COLOR_TYPE;
typedef unsigned long XVT_FONT_ATTR_MASK;
typedef unsigned long XVT_FONT_STYLE_MASK;
typedef long PICTURE;
typedef void* XVT_IMAGE;
typedef enum {
XVT_IMAGE_NONE,
XVT_IMAGE_CL8,
XVT_IMAGE_RGB,
XVT_IMAGE_MONO,
} XVT_IMAGE_FORMAT;
#define XVT_FNTID void*
typedef void* XVT_PALETTE;
typedef unsigned long XVT_PALETTE_ATTR;
#define XVT_ESC_GET_PRINTER_INFO 883
#define XVT_ESC_SET_PRINTER_INFO 884
typedef enum e_display_type {
XVT_DISPLAY_MONO, /* monochromatic display */
XVT_DISPLAY_GRAY_16, /* 16-entry grayscale */
XVT_DISPLAY_GRAY_256, /* 256-entry grayscale */
XVT_DISPLAY_COLOR_16, /* 16-entry color */
XVT_DISPLAY_COLOR_256, /* 256-entry color */
XVT_DISPLAY_DIRECT_COLOR, /* full color capabilities */
} XVT_DISPLAY_TYPE;
typedef enum {
XVT_PALETTE_NONE,
XVT_PALETTE_STOCK,
XVT_PALETTE_CURRENT,
XVT_PALETTE_CUBE16,
XVT_PALETTE_CUBE256,
XVT_PALETTE_USER
} XVT_PALETTE_TYPE;
typedef enum { /* response from ask fcn */
RESP_DEFAULT, /* default button */
RESP_2, /* second button */
RESP_3, /* third button */
} ASK_RESPONSE;
typedef enum { /* result from file open & save dialogs */
FL_BAD, /* error occurred */
FL_CANCEL, /* cancel button clicked */
FL_OK, /* OK button clicked */
} FL_STATUS;
typedef struct
{
char path[_MAX_DIR];
} DIRECTORY;
typedef struct s_mitem {
MENU_TAG tag; /* menu tag */
char *text; /* text to appear in menu */
short mkey; /* mnemonic */
unsigned enabled: 1; /* enabled? */
unsigned checked: 1; /* checked? */
unsigned checkable: 1; /* checkable? */
unsigned separator: 1; /* separator? */
struct s_mitem *child; /* pointer to submenu */
} MENU_ITEM;
typedef enum e_popup_alignment {
XVT_POPUP_CENTER,
XVT_POPUP_LEFT_ALIGN,
XVT_POPUP_RIGHT_ALIGN,
XVT_POPUP_OVER_ITEM
} XVT_POPUP_ALIGNMENT;
#define SZ_FNAME _MAX_FNAME
typedef struct { /* file specification */
DIRECTORY dir; /* directory */
char type[6]; /* file type/extension */
char name[SZ_FNAME]; /* filename */
char creator[6]; /* file creator */
} FILE_SPEC;
typedef struct
{
void* pr;
} PRINT_RCD;
typedef struct
{
short v, h;
} PNT;
typedef struct { char* str; long data; void* next; } SLIST_ITEM;
typedef SLIST_ITEM* SLIST_ELT;
typedef struct { SLIST_ELT head; long count; } xvtList;
typedef xvtList* SLIST;
typedef enum { /* drawing (transfer) mode */
M_COPY,
M_OR,
M_XOR,
M_CLEAR,
M_NOT_COPY,
M_NOT_OR,
M_NOT_XOR,
M_NOT_CLEAR
} DRAW_MODE;
typedef enum e_pen_style { /* pen style */
P_SOLID, /* solid */
P_DOT, /* dotted line */
P_DASH /* dashed line */
} PEN_STYLE;
typedef enum {
PAT_NONE, /* no pattern */
PAT_HOLLOW, /* hollow */
PAT_SOLID, /* solid fill */
PAT_HORZ, /* horizontal lines */
PAT_VERT, /* vertical lines */
PAT_FDIAG, /* diagonal lines -- top-left to bottom-right */
PAT_BDIAG, /* diagonal lines -- top-right to bottom-left */
PAT_CROSS, /* horizontal and vertical crossing lines */
PAT_DIAGCROSS, /* diagonal crossing lines */
PAT_RUBBER, /* rubber banding */
PAT_SPECIAL
} PAT_STYLE;
typedef struct { /* color pen tool */
short width; /* width */
PAT_STYLE pat; /* pattern */
PEN_STYLE style; /* style */
COLOR color; /* color */
} CPEN;
typedef struct
{
PAT_STYLE pat;
COLOR color;
} CBRUSH;
typedef struct { /* color drawing tools */
CPEN pen; /* color pen */
CBRUSH brush; /* color brush */
DRAW_MODE mode; /* drawing mode */
COLOR fore_color; /* foreground color */
COLOR back_color; /* background color */
BOOLEAN opaque_text; /* is text opaque*/
} DRAW_CTOOLS;
typedef enum { /* scrollbar activity */
SC_NONE, /* nowhere (ignore) */
SC_LINE_UP, /* one line up */
SC_LINE_DOWN, /* one line down */
SC_PAGE_UP, /* previous page */
SC_PAGE_DOWN, /* next page */
SC_THUMB, /* thumb repositioning */
SC_THUMBTRACK /* thumb tracking */
} SCROLL_CONTROL;
typedef enum { /* type of window */
W_NONE, /* marker for end of WIN_DEF array */
W_DOC, /* document window */
W_PLAIN, /* window with plain border */
W_DBL, /* window with double border */
W_PRINT, /* XVT internal use only */
W_TASK, /* task window */
W_SCREEN, /* screen window */
W_NO_BORDER, /* no border */
W_PIXMAP, /* pixmap */
W_MODAL, /* modal window */
WD_MODAL, /* modal dialog */
WD_MODELESS, /* modeless dialog */
WC_PUSHBUTTON, /* button control */
WC_RADIOBUTTON, /* radio button control */
WC_CHECKBOX, /* check box control */
WC_HSCROLL, /* horizontal scrollbar control */
WC_VSCROLL, /* vertical scrollbar control */
//WC_EDIT, /* edit control */ commentato perche' rompe le scatole
WC_TEXT, /* static text control */
WC_LBOX, /* list box control */
WC_LISTBUTTON, /* button with list */
WC_CHECKBUTTON, /* check button control */
WC_LISTEDIT, /* edit with field list */
WC_GROUPBOX, /* group box */
WC_TEXTEDIT, /* text edit object */
WC_ICON, /* icon control */
WO_TE, /* text edit */
WC_HGAUGE, /* horizontal progress bar */
WC_VGAUGE, /* vertical progress bar */
WC_NOTEBK, /* notebook control */
WC_HTML, /* HTML control */
WC_TREE, /* tree view */
WC_OUTLOOKBAR, /* Barra di outlook */
WC_HSLIDER, /* horizontal slider control */
WC_VSLIDER, /* vertical slider control */
WC_POPUP, /* list of listedit control or popup menu */
WC_PROPGRID, /* property grid */
WC_MVC, /* model view controller */
} WIN_TYPE;
typedef enum {
SEV_NONE,
SEV_WARNING,
SEV_ERROR,
SEV_FATAL,
} XVT_ERRSEV;
typedef enum { /* type of scrollbar */
HSCROLL, /* horizontal */
VSCROLL, /* vertical */
HVSCROLL, /* either */
HVGAUGE, /* progress bar */
HVSLIDER, /* slider */
} SCROLL_TYPE;
/* Treeview - Types */
typedef void * XVT_TREEVIEW_NODE;
typedef enum e_treeview_node_type {
XVT_TREEVIEW_NODE_TERMINAL, /* leaf - no children */
XVT_TREEVIEW_NODE_NONTERMINAL, /* branch - may have children */
XVT_ENUM_DUMMY26 = XVT_CC_ENUM_END
} XVT_TREEVIEW_NODE_TYPE;
typedef XVT_CALLCONV_TYPEDEF( BOOLEAN, XVT_TREEVIEW_CALLBACK,
(WINDOW ctl_win, XVT_TREEVIEW_NODE node) );
typedef struct s_ctlinfo {
WIN_TYPE type;
WINDOW win;
union {
struct s_scroll {
SCROLL_CONTROL what;
short pos;
} scroll;
struct s_edit {
BOOLEAN focus_change;
BOOLEAN active;
} edit;
struct s_lbox {
BOOLEAN dbl_click;
} lbox;
struct s_listedit {
BOOLEAN focus_change;
BOOLEAN active;
} listedit;
struct s_notebk {
WINDOW page;
short page_new;
short page_old;
} notebk;
struct s_html {
int reserved; /* Reserved...no usage yet.*/
} html;
struct s_treeview {
XVT_TREEVIEW_NODE node; /* Node */
BOOLEAN sgl_click; /* Single click */
BOOLEAN dbl_click; /* Double click */
BOOLEAN expanded; /* Node was expanded */
BOOLEAN collapsed; /* Node was collapsed */
} treeview;
} v;
} CONTROL_INFO;
typedef struct s_xvt_color_component {
XVT_COLOR_TYPE type; /* color component being defined */
COLOR color; /* RGB color value */
} XVT_COLOR_COMPONENT;
typedef enum s_xvt_color_action {
XVT_COLOR_ACTION_SET,/* set the colors */
XVT_COLOR_ACTION_UNSET/* unset the colors */
} XVT_COLOR_ACTION;
typedef struct s_win_def {
WIN_TYPE wtype; /* WC_* or WO_* type */
RCT rct;
char *text;
UNIT_TYPE units;
XVT_COLOR_COMPONENT * ctlcolors;
union {
struct s_win_def_win { /* WINDOW's */
short int menu_rid; /* menu resource id */
MENU_ITEM *menu_p; /* pointer to menu tree */
long flags; /* WSF_* flags */
XVT_FNTID ctl_font_id; /* control font id */
} win;
struct s_win_def_dlg { /* DIALOG's */
long flags; /* WSF_* flags */
XVT_FNTID ctl_font_id; /* control font id */
} dlg;
struct s_win_def_ctl { /* CONTROL's */
short int ctrl_id;
short int icon_id; /* for icons only */
long flags; /* CTL_* flags */
XVT_FNTID font_id; /* logical font */
} ctl;
struct s_win_def_tx { /* text edit objects */
unsigned short attrib; /* TX_* flags */
XVT_FNTID font_id; /* logical font */
short margin; /* right margin */
short limit; /* max chars */
short int tx_id; /* text ID */
} tx;
} v;
} WIN_DEF;
typedef enum {
E_CREATE, /* creation */
E_DESTROY, /* destruction */
E_FOCUS, /* window focus gain/loss */
E_SIZE, /* resize */
E_UPDATE, /* update */
E_CLOSE, /* close window request */
E_MOUSE_DOWN, /* mouse down */
E_MOUSE_UP, /* mouse up */
E_MOUSE_MOVE, /* mouse move */
E_MOUSE_DBL, /* mouse double click */
E_CHAR, /* character typed */
E_VSCROLL, /* vert. window scrollbar activity */
E_HSCROLL, /* horz. window scrollbar activity */
E_COMMAND, /* menu command */
E_FONT, /* font menu selection */
E_CONTROL, /* control activity */
E_TIMER, /* timer */
E_QUIT, /* application shutdown request */
E_HELP, /* help invoked */
E_USER, /* user defined */
E_CXO, /* cxo event */
} EVENT_TYPE;
typedef struct s_event {
EVENT_TYPE type;
union _v {
struct s_mouse { /* E_MOUSE_DOWN, E_MOUSE_UP, E_MOUSE_MOVE, E_MOUSE_DBL */
PNT where; /* location of event (window relative) */
BOOLEAN shift; /* shift key down? */
BOOLEAN control; /* control or option key down? */
short button; /* button number */
} mouse;
struct s_char { /* E_CHAR */
XVT_WCHAR ch; /* wide character */
BOOLEAN shift; /* shift key down? */
BOOLEAN control; /* control or option key down? */
BOOLEAN virtual_key; /* ch contains virtual key or not? */
unsigned long modifiers; /* bit field of key modifiers */
} chr;
BOOLEAN active; /* E_FOCUS: activation? (vs. deactivation) */
BOOLEAN query; /* E_QUIT: query only? (app calls quit_OK) */
struct s_scroll_info { /* E_VSCROLL, E_HSCROLL */
SCROLL_CONTROL what; /* site of activity */
short pos; /* thumb position, if SC_THUMB */
} scroll;
struct s_cmd { /* E_COMMAND */
MENU_TAG tag; /* menu item tag */
BOOLEAN shift; /* shift key? */
BOOLEAN control; /* control or option key? */
} cmd;
struct s_size { /* E_SIZE */
short height; /* new height */
short width; /* new width */
} size;
struct s_efont { /* E_FONT */
XVT_FNTID font_id; /* R4 font id of selected font */
} font;
struct s_ctl { /* E_CONTROL */
short id; /* control's ID */
CONTROL_INFO ci; /* control info */
} ctl;
struct s_update { /* E_UPDATE */
RCT rct; /* update rectangle */
} update;
struct s_timer { /* E_TIMER */
long id; /* timer ID */
} timer;
struct s_user { /* E_USER */
long id; /* application ID */
void *ptr; /* application pointer */
} user;
struct s_help { /* E_HELP */
WINDOW obj; /* help for control, window, dialog */
MENU_TAG tag; /* help for menu item */
XVT_HELP_TID tid; /* predefined help topic */
} help;
struct s_cxo { /* E_CXO */
long msg_id; /* CXO message id - Unique to each CXO */
void * ptr; /* message data pointer */
} cxo;
} v;
} EVENT, *EVENT_PTR;
typedef unsigned long EVENT_MASK;
typedef long (* EVENT_HANDLER) (WINDOW win, EVENT *ep);
typedef BOOLEAN (* XVT_ERRMSG_HANDLER) (XVT_ERRMSG err, DATA_PTR context);
typedef BOOLEAN (* XVT_ENUM_CHILDREN)(WINDOW child, long data);
typedef enum { /* std. clipboard format */
CB_TEXT, /* ASCII text */
CB_PICT, /* encapsulated picture */
CB_APPL /* app's own (must have name) */
} CB_FORMAT;
typedef struct s_xvt_config
{
short menu_bar_ID; /* task menubar ResID */
short about_box_ID; /* default aboutbox ResID */
const char* base_appl_name; /* application's "filename" */
const char* appl_name; /* application's name */
const char* taskwin_title; /* title for task window */
} XVT_CONFIG;