/* service structures of libGUI */ #define NULL (void*)0 typedef unsigned int DWORD; typedef unsigned char BYTE; typedef unsigned short int WORD; typedef unsigned int size_t; #define stdcall __stdcall #define cdecl __cdecl ///////////////////////////////////////////////////////////////////////// // libGUI sysyem messages types ///////////////////////////////////////////////////////////////////////// #define MESSAGE_FULL_REDRAW_ALL 1 #define MESSAGE_KEYS_EVENT 2 #define MESSAGE_SPECIALIZED 3 #define MESSAGE_SET_FOCUSE 4 #define MESSAGE_CHANGE_FOCUSE 5 #define MESSAGE_MOUSE_EVENT 6 #define MESSAGE_CHANGE_POSITION_EVENT 7 #define MESSAGE_CHANGESIZE_EVENT 8 #define MESSAGE_CALL_TIMER_EVENT 9 #define MESSAGE_FULL_REDRAW_ALL_WITH_FINITION 10 #define MESSAGE_SET_MAIN_PARENT 11 #define MESSAGE_DESTROY_CONTROL -1 ///////////////////////////////////////////////////////////////////////// // system keys states ///////////////////////////////////////////////////////////////////////// #define KEY_DOWN 16 #define KEY_UP 17 #define KEY_HOTKEY 18 ///////////////////////////////////////////////////////////////////////// // system mouse buttons states ///////////////////////////////////////////////////////////////////////// #define MOUSE_LEFT_BUTTON_DOWN 19 #define MOUSE_LEFT_BUTTON_UP 20 #define MOUSE_RIGHT_BUTTON_DOWN 21 #define MOUSE_RIGHT_BUTTON_UP 22 #define MOUSE_MIDDLE_BUTTON_DOWN 23 #define MOUSE_MIDDLE_BUTTON_UP 24 #define MOUSE_4_BUTTON_DOWN 25 #define MOUSE_4_BUTTON_UP 26 #define MOUSE_5_BUTTON_DOWN 27 #define MOUSE_5_BUTTON_UP 28 //----------------------------------------------------------------------- // CONNECT EVENTS FOR CALLBACKs //----------------------------------------------------------------------- //////////////////////////////////////////////////////////////// // connect events for button //////////////////////////////////////////////////////////////// #define BUTTON_ENTER_EVENT 29 #define BUTTON_LEAVE_EVENT 30 #define BUTTON_PRESSED_EVENT 31 #define BUTTON_RELEASED_EVENT 32 //////////////////////////////////////////////////////////////// // connect events for scroll bar //////////////////////////////////////////////////////////////// #define SCROLLBAR_CHANGED_EVENT 33 //////////////////////////////////////////////////////////////// // connect events for main parent window //////////////////////////////////////////////////////////////// #define DELETE_EVENT 36 //////////////////////////////////////////////////////////////// // font type structure //////////////////////////////////////////////////////////////// #pragma pack(push,1) struct FONT { DWORD *fnt_draw; DWORD *fnt_unpacker; DWORD *fnt_fd; DWORD *fnt_bk; int sizex; int sizey; int size; int encoding_type; char *font; char *fnt_name; DWORD type; DWORD flags; }; #pragma pack(pop) typedef struct FONT font_t; //////////////////////////////////////////////////////////////// // header of parent of control //////////////////////////////////////////////////////////////// #pragma pack(push,1) struct HEADERPARENT { DWORD *ctrl_proc; DWORD *ctrl_fd; DWORD *ctrl_bk; DWORD *child_fd; DWORD *child_bk; DWORD *parent; DWORD *main_parent; DWORD ctrl_x; DWORD ctrl_y; DWORD ctrl_sizex; DWORD ctrl_sizey; DWORD ctrl_ID; DWORD *active_control_for_keys; DWORD *active_control_for_mouse; DWORD *callback; DWORD *finition; DWORD *timer; DWORD flags; DWORD **control_for_callback_function; DWORD **callback_for_control_callback; DWORD number_callbacks; DWORD *global_active_control_for_keys; DWORD *message; DWORD *timer_bk; DWORD *timer_fd; DWORD number_timers_for_controls; DWORD *calev_bk; DWORD *calev_fd; DWORD *IDL_func; DWORD *IDL_func_data; }; #pragma pack(pop) typedef struct HEADERPARENT parent_t; //////////////////////////////////////////////////////////////// // header of control //////////////////////////////////////////////////////////////// #pragma pack(push,1) struct HEADER { DWORD *ctrl_proc; DWORD *ctrl_fd; DWORD *ctrl_bk; DWORD *child_fd; DWORD *child_bk; DWORD *parent; DWORD *main_parent; DWORD ctrl_x; DWORD ctrl_y; DWORD ctrl_sizex; DWORD ctrl_sizey; DWORD ctrl_ID; DWORD *active_control_for_keys; DWORD *active_control_for_mouse; DWORD *callback; DWORD *finition; DWORD *timer; DWORD flags; }; #pragma pack(pop) typedef struct HEADER header_t; //////////////////////////////////////////////////////////////// // callback structure for callback function of control //////////////////////////////////////////////////////////////// #pragma pack(push,1) struct CALLBACK { DWORD *clb_bk; DWORD *clb_fd; DWORD *clb_control; DWORD *func; DWORD *func_data; DWORD connect_event; DWORD flags; }; #pragma pack(pop) typedef struct CALLBACK gui_callback_t; //////////////////////////////////////////////////////////////// // timer //////////////////////////////////////////////////////////////// #pragma pack(push,1) struct TIMER { DWORD *tmr_bk; DWORD *tmr_fd; DWORD *tmr_parent; DWORD *func; DWORD *func_data; DWORD last_time; DWORD time_tick; DWORD flags; }; #pragma pack(pop) typedef struct TIMER gui_timer_t; //////////////////////////////////////////////////////////////// // structure for callback events //////////////////////////////////////////////////////////////// #pragma pack(push,1) struct CALLBACKEVENT { DWORD *calev_bk; DWORD *calev_fd; DWORD *calev_parent; DWORD *func; DWORD *func_data; DWORD event_type; }; #pragma pack(pop) typedef struct CALLBACKEVENT gui_callbackevent_t; //////////////////////////////////////////////////////////////// // type of data - structure message //////////////////////////////////////////////////////////////// #pragma pack(push,1) struct MESSAGE { DWORD type; DWORD arg1; DWORD arg2; DWORD arg3; DWORD arg4; }; #pragma pack(pop) typedef struct MESSAGE gui_message_t; //////////////////////////////////////////////////////////////// // button //////////////////////////////////////////////////////////////// #pragma pack(push,1) struct ControlButton { DWORD *ctrl_proc; DWORD *ctrl_fd; DWORD *ctrl_bk; DWORD *child_fd; DWORD *child_bk; DWORD *parent; DWORD *main_parent; DWORD ctrl_x; DWORD ctrl_y; DWORD ctrl_sizex; DWORD ctrl_sizey; DWORD ctrl_ID; DWORD *active_control_for_keys; DWORD *active_control_for_mouse; DWORD *callback; DWORD *finition; DWORD *timer; DWORD flags; //button's data BYTE btn_flags; }; #pragma pack(pop) typedef struct ControlButton gui_button_t; // information for creating control Button #pragma pack(push,1) struct ButtonData { int x; int y; int width; int height; }; #pragma pack(pop) typedef struct ButtonData gui_button_data_t; //////////////////////////////////////////////////////////////// // scroller //////////////////////////////////////////////////////////////// #pragma pack(push,1) struct ControlScrollBar { DWORD *ctrl_proc; DWORD *ctrl_fd; DWORD *ctrl_bk; DWORD *child_fd; DWORD *child_bk; DWORD *parent; DWORD *main_parent; DWORD ctrl_x; DWORD ctrl_y; DWORD ctrl_sizex; DWORD ctrl_sizey; DWORD ctrl_ID; DWORD *active_control_for_keys; DWORD *active_control_for_mouse; DWORD *callback; DWORD *finition; DWORD *timer; DWORD flags; //scroll bar's data float ruller_size; float ruller_pos; float ruller_step; BYTE scb_flags; }; typedef struct ControlScrollBar gui_scroll_bar_t; #pragma pack(push,1) struct ScrollBarData { int x; int y; int width; int height; float ruller_size; float ruller_pos; float ruller_step; }; #pragma pack(pop) typedef struct ScrollBarData gui_scroll_bar_data_t; //////////////////////////////////////////////////////////////// // progressbar //////////////////////////////////////////////////////////////// #pragma pack(push,1) struct ControlProgressBar { DWORD *ctrl_proc; DWORD *ctrl_fd; DWORD *ctrl_bk; DWORD *child_fd; DWORD *child_bk; DWORD *parent; DWORD *main_parent; DWORD ctrl_x; DWORD ctrl_y; DWORD ctrl_sizex; DWORD ctrl_sizey; DWORD ctrl_ID; DWORD *active_control_for_keys; DWORD *active_control_for_mouse; DWORD *callback; DWORD *finition; DWORD *timer; DWORD flags; //progress bar's data float progress; BYTE prb_flags; }; #pragma pack(pop) typedef struct ControlProgressBar gui_progress_bar_t; #pragma pack(push,1) struct ProgressBarData { int x; int y; int width; int height; float progress; }; #pragma pack(pop) typedef struct ProgressBarData gui_progress_bar_data_t; //////////////////////////////////////////////////////////////// // scrolled window //////////////////////////////////////////////////////////////// #pragma pack(push,1) struct ControlScrolledWindow { DWORD *ctrl_proc; DWORD *ctrl_fd; DWORD *ctrl_bk; DWORD *child_fd; DWORD *child_bk; DWORD *parent; DWORD *main_parent; DWORD ctrl_x; DWORD ctrl_y; DWORD ctrl_sizex; DWORD ctrl_sizey; DWORD ctrl_ID; DWORD *active_control_for_keys; DWORD *active_control_for_mouse; DWORD *callback; DWORD *finition; DWORD *timer; DWORD flags; //scrolled windows's data DWORD virtual_x; DWORD virtual_y; DWORD virtual_sizex; DWORD virtual_sizey; DWORD *virtual_controls_x; DWORD *virtual_controls_y; DWORD number_virtual_controls; DWORD scroll_arrea_sizex; DWORD scroll_arrea_sizey; DWORD *horizontal_scroll; DWORD *vertical_scroll; BYTE scw_flags; }; #pragma pack(pop) typedef struct ControlScrolledWindow gui_scrolled_window_t; #pragma pack(push,1) struct ScrolledWindowData { int x; int y; int width; int height; }; #pragma pack(pop) typedef struct ScrolledWindowData gui_scrolled_window_data_t; //////////////////////////////////////////////////////////////// // image //////////////////////////////////////////////////////////////// #pragma pack(push,1) struct ControlImage { DWORD *ctrl_proc; DWORD *ctrl_fd; DWORD *ctrl_bk; DWORD *child_fd; DWORD *child_bk; DWORD *parent; DWORD *main_parent; DWORD ctrl_x; DWORD ctrl_y; DWORD ctrl_sizex; DWORD ctrl_sizey; DWORD ctrl_ID; DWORD *active_control_for_keys; DWORD *active_control_for_mouse; DWORD *callback; DWORD *finition; DWORD *timer; DWORD flags; char bits_per_pixel; char bytes_per_pixel; char *img; }; #pragma pack(pop) typedef struct ControlImage gui_image_t; #pragma pack(push,1) struct ImageData { int x; int y; int width; int height; char bits_per_pixel; }; #pragma pack(pop) typedef struct ImageData gui_image_data_t; //////////////////////////////////////////////////////////////// // text //////////////////////////////////////////////////////////////// #pragma pack(push,1) struct ControlText { DWORD *ctrl_proc; DWORD *ctrl_fd; DWORD *ctrl_bk; DWORD *child_fd; DWORD *child_bk; DWORD *parent; DWORD *main_parent; DWORD ctrl_x; DWORD ctrl_y; DWORD ctrl_sizex; DWORD ctrl_sizey; DWORD ctrl_ID; DWORD *active_control_for_keys; DWORD *active_control_for_mouse; DWORD *callback; DWORD *finition; DWORD *timer; DWORD flags; DWORD *font; DWORD color; DWORD background_color; char *text; BYTE txt_flags; }; #pragma pack(pop) typedef struct ControlText gui_text_t; #pragma pack(push,1) struct TextData { int x; int y; DWORD *font; DWORD color; DWORD background_color; char background; char *text; }; #pragma pack(pop) typedef struct TextData gui_text_data_t; ///////////////////////////////////////////////////////////////// // load libGUI library and link functions ///////////////////////////////////////////////////////////////// void LoadLibGUI(char *lib_path); //********************************************************************** // libGUI service functions //********************************************************************** DWORD (stdcall *LibGUIversion)(void); char (stdcall *InitLibGUI)(void); void (stdcall *LibGUImain)(parent_t *WindowParent); void (stdcall *QuitLibGUI)(parent_t *window); void* (stdcall *CreateWindow)(void); void (stdcall *SetWindowSizeRequest)(parent_t *WindowParent,int size_x,int size_y); void (stdcall *PackControls)(void *Parent,void *control); void (stdcall *DestroyControl)(void *control); void (stdcall *SetControlSizeRequest)(void *Control,int new_size_x,int new_size_y); int (stdcall *GetControlSizeX)(void *Control); int (stdcall *GetControlSizeY)(void *Control); void (stdcall *SetControlNewPosition)(void *Control,int new_x,int new_y); int (stdcall *GetControlPositionX)(void *Control); int (stdcall *GetControlPositionY)(void *Control); void* (stdcall *SetFocuse)(void *Control); void (stdcall *RedrawControl)(void *Control); void (stdcall *SpecialRedrawControl)(void *Control); gui_callback_t* (stdcall *SetCallbackFunction)(void *Control, int event_name,void *callback_func, void *callback_func_data); void (stdcall *BlockCallbackFunction)(void *Control,gui_callback_t *callback_ID); void (stdcall *UnblockCallbackFunction)(void *Control,gui_callback_t *callback_ID); void (stdcall *SetIDL_Function)(parent_t *Parent,void *function,void *function_data); void (stdcall *DestroyIDL_Function)(parent_t *Parent); gui_timer_t* (stdcall *SetTimerCallbackForFunction)(parent_t *parent_window, int time_tick,void *func,void *func_data); void (stdcall *DestroyTimerCallbackForFunction)(gui_timer_t *timer); gui_callbackevent_t* (stdcall *SetCallbackFunctionForEvent)(parent_t *parent_window, int event_type,void *func,void *func_data); void (stdcall *DestroyCallbackFunctionForEvent)(gui_callbackevent_t *callback_event); gui_button_t* (stdcall *CreateButton)(gui_button_data_t *info_for_control); gui_button_t* (stdcall *CreateButtonWithText)(gui_button_data_t *info,char *txt); gui_progress_bar_t* (stdcall *CreateProgressBar)(gui_progress_bar_data_t *info_for_control); void (stdcall *SetProgressBarPulse)(gui_progress_bar_t *ProgressBar,int time_update); void (stdcall *ProgressBarSetText)(gui_progress_bar_t *pbar,char *txt); char* (stdcall *ProgressBarGetText)(gui_progress_bar_t *pbar); gui_scroll_bar_t* (stdcall *CreateHorizontalScrollBar)(gui_scroll_bar_data_t *info_for_control); gui_scroll_bar_t* (stdcall *CreateVerticalScrollBar)(gui_scroll_bar_data_t *info_for_control); gui_scrolled_window_t* (stdcall *CreateScrolledWindow)(gui_scrolled_window_data_t *info_for_control); void (stdcall *ScrolledWindowPackControls)(gui_scrolled_window_t *parent,void *Control); gui_image_t* (stdcall *CreateImage)(gui_image_data_t *info_for_control); gui_text_t* (stdcall *CreateText)(gui_text_data_t *info_for_control); void (stdcall *TextBackgroundOn)(gui_text_t *Text); void (stdcall *TextBackgroundOff)(gui_text_t *Text); font_t* (stdcall *LoadFont)(char *fullfontname); void (stdcall *FreeFont)(font_t *font);