diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 4ffdec79a5..8b861cb514 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,28 @@ past entries belonging to author(s): Viktor Szakats. */ +2009-07-10 22:38 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) + * source/common/hbver.c + % Deleted unnecessary casts. + + * examples/hbmsql/msql.c + * Fixed const warnings. + + * examples/hbmake/hbmake.hbp + - examples/hbmake/hbmakec.c + * examples/hbmake/hbmake.prg + * Using portable HB_USERLANG() instead of local Windows-only solution. + + - examples/hboleold + - Deleted. It's no longer easy to fix with new const usage. + + - examples/hbgf + - Deleted. We have much better GUI examples these days then these + very early ones. + + * examples/httpsrv/uhttpdc.c + * Minor formatting. + 2009-07-10 21:21 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * include/hbextern.ch + Added HB_SETCLSHANDLE(). diff --git a/harbour/examples/hbgf/hbgfgtk/button.prg b/harbour/examples/hbgf/hbgfgtk/button.prg deleted file mode 100644 index c00921109a..0000000000 --- a/harbour/examples/hbgf/hbgfgtk/button.prg +++ /dev/null @@ -1,88 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour GUI framework for Gtk - * Class HBButton - * - * Copyright 2001 Antonio Linares - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - * Additional Copyright notes : - * adapted for Hgf Gtk by Marek Paliwoda - */ - -/* ********************************************************************* */ - -#include "common.ch" -#include "hbclass.ch" -#include "harbgtk.ch" - -/* ********************************************************************* */ - -CLASS HBButton FROM HBWinControl - - DATA OnClick PROPERTY - METHOD New( oContainer ) - - ACCESS Caption() INLINE hb_GtkButtonGetText( ::hWnd ) PROPERTY - ASSIGN Caption( cNewCaption ) INLINE ; - hb_GtkButtonSetText( ::hWnd, cNewCaption ) - -ENDCLASS - -/* ********************************************************************* */ - -METHOD New( oContainer ) CLASS HBButton - ::Container := oContainer - - ::hWnd := hb_GtkButtonCreate( oContainer:hWnd, ::GetNewID() ) - - ::XSize := 80 - ::YSize := 25 - - hb_GtkWidgetSetSize( ::hWnd, ::YSize, ::XSize ) -RETURN Self - -/* ********************************************************************* */ diff --git a/harbour/examples/hbgf/hbgfgtk/creabutt.c b/harbour/examples/hbgf/hbgfgtk/creabutt.c deleted file mode 100644 index 4f62b9e104..0000000000 --- a/harbour/examples/hbgf/hbgfgtk/creabutt.c +++ /dev/null @@ -1,131 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour GUI framework for Gtk - * - * Copyright 2001 Marek Paliwoda - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -/* ********************************************************************* */ - -#include "harbgtk.h" - -/* ********************************************************************* */ - -#include "shared.ch" - -/* ********************************************************************* */ - -static gint ButtonClick( GtkWidget *Widget, gpointer Data ) -{ - GtkWidget *Form = ( GtkWidget * )gtk_object_get_data( GTK_OBJECT( Widget ), "Form" ); - return( CallHarbour( Form, Widget, HGF_EV_CLICK, GPOINTER_TO_INT( Data ), ( PHB_ITEM )NULL ) ); -} - -/* ********************************************************************* */ - -HB_FUNC( HB_GTKBUTTONCREATE ) -{ - PHB_ITEM hWnd = hb_param( 1, HB_IT_ARRAY ); - - if( hWnd ) - { - GtkWindow *Form = ( GtkWindow * )GUINT_TO_POINTER( hb_arrayGetNL( hWnd, 1 ) ); - GtkLayout *LayO = ( GtkLayout * )GUINT_TO_POINTER( hb_arrayGetNL( hWnd, 4 ) ); - gint ButtID = ( gint )hb_parni( 2 ); - - GtkWidget *Button = gtk_button_new_with_label( "" ); - gtk_object_set_data( GTK_OBJECT( Button ), "Form", ( gpointer )Form ); - - gtk_signal_connect - ( - GTK_OBJECT( Button ), - "clicked", - GTK_SIGNAL_FUNC( ( GtkSignalFunc ) ButtonClick ), - GINT_TO_POINTER( ButtID ) - ); - - if( LayO ) - gtk_layout_put( LayO, Button, 0, 0 ); - - hb_retnl( GPOINTER_TO_UINT( Button ) ); - } - else - hb_retnl( GPOINTER_TO_UINT( NULL ) ); -} - -/* ********************************************************************* */ - -HB_FUNC( HB_GTKBUTTONGETTEXT ) -{ - GtkButton *Button = ( GtkButton * )GPOINTER_TO_UINT( hb_parnl( 1 ) ); - if( Button ) - { - GtkLabel *Label = ( GtkLabel * )( GTK_BIN( Button )->child ); - if( Label ) - hb_retc( ( char * )Label->label ); - else - hb_retc_null(); - } - else - hb_retc_null(); -} - -/* ********************************************************************* */ - -HB_FUNC( HB_GTKBUTTONSETTEXT ) -{ - GtkButton *Button = ( GtkButton * )GPOINTER_TO_UINT( hb_parnl( 1 ) ); - if( Button ) - { - GtkLabel *Label = ( GtkLabel * )( GTK_BIN( Button )->child ); - if( Label ) - gtk_label_set_text( Label, hb_parc( 2 ) ); - } -} - -/* ********************************************************************* */ diff --git a/harbour/examples/hbgf/hbgfgtk/creamenu.c b/harbour/examples/hbgf/hbgfgtk/creamenu.c deleted file mode 100644 index 864a3903fb..0000000000 --- a/harbour/examples/hbgf/hbgfgtk/creamenu.c +++ /dev/null @@ -1,171 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour GUI framework for Gtk - * - * Copyright 2001 Marek Paliwoda - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -/* ********************************************************************* */ - -#include "harbgtk.h" - -/* ********************************************************************* */ - -#include "shared.ch" - -/* ********************************************************************* */ - -HB_FUNC( HB_GTKCREATEMENU ) -{ - GtkWidget *Menu = gtk_menu_new(); - hb_retnl( GPOINTER_TO_UINT( Menu ) ); -} - -/* ********************************************************************* */ - -HB_FUNC( HB_GTKCREATEMENUBAR ) -{ - GtkBox *Box = ( GtkBox * )GUINT_TO_POINTER( hb_parnl( 1 ) ); - if( Box ) - { - GtkWidget *MenuBar = gtk_menu_bar_new(); - gtk_box_pack_start( Box, MenuBar, FALSE, FALSE, 0 ); - gtk_box_reorder_child( Box, MenuBar, 0 ); - - hb_retnl( GPOINTER_TO_UINT( MenuBar ) ); - } - else - hb_retnl( GPOINTER_TO_UINT( NULL ) ); -} - -/* ********************************************************************* */ - -static void ActivateMenuItem( GtkWidget *Widget, gpointer Data ) -{ - GtkWidget *Form = ( GtkWidget * )gtk_object_get_data( GTK_OBJECT( Widget ), "Form" ); - if( !( GTK_MENU_ITEM( Widget )->submenu ) ) - CallHarbour( Form, Widget, HGF_EV_MENU, GPOINTER_TO_INT( Data ), ( PHB_ITEM )NULL ); -} - -/* ********************************************************************* */ - -HB_FUNC( HB_GTKBARADDMENUITEM ) -{ - GtkMenuBar *Bar = ( GtkMenuBar * )GUINT_TO_POINTER( hb_parnl( 1 ) ); - - if( Bar ) - { - gchar *Caption = ( gchar * )hb_parc( 2 ); - gint ItemID = ( gint )hb_parni( 3 ); - gboolean Enabled = ( gboolean )hb_parl( 4 ); - GtkWidget *Form = ( GtkWidget * )GUINT_TO_POINTER( hb_parnl( 5 ) ); - - GtkWidget *Item = gtk_menu_item_new_with_label( Caption ); - - gtk_widget_set_sensitive( Item, Enabled ); - gtk_object_set_data( GTK_OBJECT( Item ), "Form", ( gpointer )Form ); - - gtk_signal_connect - ( - GTK_OBJECT( Item ), - "activate", - GTK_SIGNAL_FUNC( ( GtkSignalFunc ) ActivateMenuItem ), - GINT_TO_POINTER( ItemID ) - ); - - gtk_menu_bar_append( GTK_MENU_BAR( Bar ), Item ); - hb_retnl( GPOINTER_TO_UINT( Item ) ); - } - else - hb_retnl( GPOINTER_TO_UINT( NULL ) ); -} - -/* ********************************************************************* */ - -HB_FUNC( HB_GTKADDMENUITEM ) -{ - GtkWidget *Menu = ( GtkWidget * )GUINT_TO_POINTER( hb_parnl( 1 ) ); - GtkMenuItem *Curr = ( GtkMenuItem * )GUINT_TO_POINTER( hb_parnl( 2 ) ); - - if( !Menu ) - { - Menu = gtk_menu_new(); - gtk_menu_item_set_submenu( Curr, Menu ); - hb_stornl( GPOINTER_TO_UINT( Menu ), 1 ); - } - - if( Curr ) - { - GtkWidget *Item = ( GtkWidget * )GUINT_TO_POINTER( hb_parnl( 3 ) ); - gchar *Caption = ( gchar * )hb_parc( 4 ); - gint ItemID = ( gint )hb_parni( 5 ); - gboolean Enabled = ( gboolean )hb_parl( 6 ); - GtkWidget *Form = ( GtkWidget * )GUINT_TO_POINTER( hb_parnl( 7 ) ); - - if( !Item ) - Item = gtk_menu_item_new_with_label( Caption ); - - gtk_widget_set_sensitive( Item, Enabled ); - gtk_object_set_data( GTK_OBJECT( Item ), "Form", ( gpointer )Form ); - - gtk_signal_connect - ( - GTK_OBJECT( Item ), - "activate", - GTK_SIGNAL_FUNC( ( GtkSignalFunc ) ActivateMenuItem ), - GINT_TO_POINTER( ItemID ) - ); - - gtk_menu_append( GTK_MENU( Menu ), Item ); - hb_retnl( GPOINTER_TO_UINT( Item ) ); - } - else - hb_retnl( GPOINTER_TO_UINT( NULL ) ); -} - -/* ********************************************************************* */ diff --git a/harbour/examples/hbgf/hbgfgtk/creawin.c b/harbour/examples/hbgf/hbgfgtk/creawin.c deleted file mode 100644 index 4236b9cbea..0000000000 --- a/harbour/examples/hbgf/hbgfgtk/creawin.c +++ /dev/null @@ -1,280 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour GUI framework for Gtk - * - * Copyright 2001 Marek Paliwoda - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -/* ********************************************************************* */ - -#include "harbgtk.h" - -/* ********************************************************************* */ - -#include "shared.ch" - -/* ********************************************************************* */ - -static gint DeleteEventWindowCallback( GtkWidget *Widget, GdkEventAny *Event, gpointer Data ) -{ - HB_SYMBOL_UNUSED( Event ); - - return( CallHarbour( Widget, Widget, HGF_EV_CLOSE, GPOINTER_TO_INT( Data ), ( PHB_ITEM ) NULL ) ); -} - -/* ********************************************************************* */ - -static gint DestroyWindowCallback( GtkWidget *Widget, gpointer Data ) -{ - gint Propagate = CallHarbour( Widget, Widget, HGF_EV_DESTROY, GPOINTER_TO_INT( Data ), ( PHB_ITEM )NULL ); - - if( !Propagate ) - { - /* the code needs to be added here in the future ? */ - - if( Widget == gtk_widget_get_toplevel( Widget ) ) - gtk_main_quit(); - } - - return ( Propagate ); -} - -/* ********************************************************************* */ - -static gint ButtonPressCallback( GtkWidget *Widget, GdkEventButton *Event, gpointer Data ) -{ - GtkWidget *Form = ( GtkWidget * )gtk_object_get_data( GTK_OBJECT( Widget ), "Form" ); - gint Propagate = FALSE, ButtonNO = Event->button; - - PHB_ITEM ReturnArray = hb_itemArrayNew( HGF_EVENTDATA_MAXLEN ); - PHB_ITEM ArrayItem = hb_itemNew( NULL ); - - if( !Form ) - Form = Widget; - - hb_itemPutND( ArrayItem, ( double ) Event->y ); - hb_itemArrayPut( ReturnArray, 1, ArrayItem ); - - hb_itemPutND( ArrayItem, ( double ) Event->x ); - hb_itemArrayPut( ReturnArray, 2, ArrayItem ); - - hb_itemPutNL( ArrayItem, ( long ) Event->state & 0xFF ); - hb_itemArrayPut( ReturnArray, 3, ArrayItem ); - - switch ( ButtonNO ) - { - case 1 : - Propagate = CallHarbour( Form, Widget, HGF_EV_LBUTTONPRESSED, GPOINTER_TO_INT( Data ), ReturnArray ); - break; - case 2 : - Propagate = CallHarbour( Form, Widget, HGF_EV_RBUTTONPRESSED, GPOINTER_TO_INT( Data ), ReturnArray ); - break; - default : - Propagate = CallHarbour( Form, Widget, HGF_EV_MBUTTONPRESSED, GPOINTER_TO_INT( Data ), ReturnArray ); - break; - } - - hb_itemRelease( ReturnArray ); - hb_itemRelease( ArrayItem ); - - return( Propagate ); -} - -/* ************************************************************************* */ - -HB_FUNC( HB_GTKWINDOWCREATE ) -{ - GtkWidget *MainWin, *VBox, *MoveBar, *MenuBar, - *ScrlWin, *LayoutW, *Current; - GtkTooltips *ToolTip = NULL; - - /* for the future enhancements */ - gint YSize=400, XSize=500; - - gint WinID = ( gint ) hb_parni( 1 ); - - MainWin = gtk_window_new( GTK_WINDOW_TOPLEVEL ); - gtk_window_set_default_size( GTK_WINDOW( MainWin ), XSize, YSize ); - gtk_window_set_policy( GTK_WINDOW( MainWin ), TRUE, TRUE, FALSE ); - - VBox = gtk_vbox_new( FALSE, 1 ); - gtk_container_add( GTK_CONTAINER( MainWin ), VBox ); - - /* for the future enhancements */ - Current = VBox; - - LayoutW = gtk_layout_new( NULL, NULL ); - /* gtk_layout_set_size( GTK_LAYOUT( LayoutW ), XSize, YSize ); */ - gtk_box_pack_start( GTK_BOX( Current ), LayoutW, TRUE, TRUE, 0 ); - - gtk_signal_connect - ( - GTK_OBJECT( MainWin ), - "delete_event", - GTK_SIGNAL_FUNC( ( GtkSignalFunc ) DeleteEventWindowCallback ), - GINT_TO_POINTER( WinID ) - ); - - gtk_signal_connect - ( - GTK_OBJECT( MainWin ), - "destroy", - GTK_SIGNAL_FUNC( ( GtkSignalFunc ) DestroyWindowCallback ), - GINT_TO_POINTER( WinID ) - ); - - gtk_widget_add_events( MainWin, GDK_BUTTON_PRESS_MASK ); - gtk_signal_connect - ( - GTK_OBJECT( MainWin ), - "button_press_event", - GTK_SIGNAL_FUNC( ButtonPressCallback ), - GINT_TO_POINTER( WinID ) - ); - - ScrlWin = MoveBar = MenuBar = NULL; - - { - PHB_ITEM ReturnArray, ArrayItem; - - ReturnArray = hb_itemArrayNew( 7 ); - ArrayItem = hb_itemNew( NULL ); - - hb_itemPutNL( ArrayItem, GPOINTER_TO_UINT( MainWin ) ); - hb_itemArrayPut( ReturnArray, 1, ArrayItem ); - - hb_itemPutNL( ArrayItem, GPOINTER_TO_UINT( VBox ) ); - hb_itemArrayPut( ReturnArray, 2, ArrayItem ); - - hb_itemPutNL( ArrayItem, GPOINTER_TO_UINT( ScrlWin ) ); - hb_itemArrayPut( ReturnArray, 3, ArrayItem ); - - hb_itemPutNL( ArrayItem, GPOINTER_TO_UINT( LayoutW ) ); - hb_itemArrayPut( ReturnArray, 4, ArrayItem ); - - hb_itemPutNL( ArrayItem, GPOINTER_TO_UINT( MoveBar ) ); - hb_itemArrayPut( ReturnArray, 5, ArrayItem ); - - hb_itemPutNL( ArrayItem, GPOINTER_TO_UINT( MenuBar ) ); - hb_itemArrayPut( ReturnArray, 6, ArrayItem ); - - hb_itemPutNL( ArrayItem, GPOINTER_TO_UINT( ToolTip ) ); - hb_itemArrayPut( ReturnArray, 7, ArrayItem ); - - hb_itemReturn( ReturnArray ); - hb_itemRelease( ReturnArray ); - hb_itemRelease( ArrayItem ); - } -} - -/* ********************************************************************* */ - -HB_FUNC( HB_GTKWINDOWGETTEXT ) -{ - PHB_ITEM hWnd = hb_param( 1, HB_IT_ARRAY ); - - if( hWnd ) - { - GtkWindow *Win = ( GtkWindow * )GUINT_TO_POINTER( hb_arrayGetNL( hWnd, 1 ) ); - hb_retc( ( char * )Win->title ); - } - else - hb_retc_null(); -} - -/* ********************************************************************* */ - -HB_FUNC( HB_GTKWINDOWSETTEXT ) -{ - PHB_ITEM hWnd = hb_param( 1, HB_IT_ARRAY ); - - if( hWnd ) - { - gchar *Title = hb_parc( 2 ); - GtkWindow *Win = ( GtkWindow * )GUINT_TO_POINTER( hb_arrayGetNL( hWnd, 1 ) ); - gtk_window_set_title( Win, Title ); - } -} - -/* ********************************************************************* */ - -HB_FUNC( HB_GTKSHOWMODAL ) -{ - PHB_ITEM hWnd = hb_param( 1, HB_IT_ARRAY ); - - if( hWnd ) - { - GtkWidget *Win = ( GtkWidget * )GUINT_TO_POINTER( hb_arrayGetNL( hWnd, 1 ) ); - gtk_widget_show_all( Win ); - /* NOTE : this does not make any sense. It is only an example */ - gtk_main(); - } -} - -/* ********************************************************************* */ - -HB_FUNC( HB_GTKWINDOWREQUESTDELETE ) -{ - GtkWidget *Widget; - PHB_ITEM hWnd = hb_param( 1, HB_IT_ARRAY ); - - if( hWnd ) - Widget = ( GtkWidget * )GUINT_TO_POINTER( hb_arrayGetNL( hWnd, 1 ) ); - else - Widget = ( GtkWidget * )GUINT_TO_POINTER( hb_parnl( 1 ) ); - - if( Widget ) - { - GdkEvent Event; - Event.type = GDK_DELETE; - Event.any.window = Widget->window; - gdk_event_put( &Event ); - } -} - -/* ********************************************************************* */ diff --git a/harbour/examples/hbgf/hbgfgtk/dispatch.c b/harbour/examples/hbgf/hbgfgtk/dispatch.c deleted file mode 100644 index 0023e7b450..0000000000 --- a/harbour/examples/hbgf/hbgfgtk/dispatch.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour GUI framework for Gtk - * - * Copyright 2001 Marek Paliwoda - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -/* ************************************************************************* */ - -#include "harbgtk.h" - -/* ********************************************************************* */ - -#include "shared.ch" - -/* ********************************************************************* */ - -glong CallHarbour( GtkWidget *hWnd, GtkWidget *Widget, glong Command, gint ObjId, PHB_ITEM aParam ) -{ - PHB_DYNS pDynSym = hb_dynsymFind( "HB_GUI" ); - - if( pDynSym ) - { - hb_vmPushDynSym( pDynSym ); - hb_vmPushNil(); - hb_vmPushLong( GPOINTER_TO_UINT( hWnd ) ); - hb_vmPushLong( GPOINTER_TO_UINT( Widget ) ); - hb_vmPushLong( Command ); - hb_vmPushInteger( ObjId ); - if( aParam ) - hb_vmPush( aParam ); - else - hb_vmPushNil(); - hb_vmDo( 5 ); - - return hb_parni( -1 ); - } - else - return( 0 ); -} - -/* ********************************************************************* */ diff --git a/harbour/examples/hbgf/hbgfgtk/form.prg b/harbour/examples/hbgf/hbgfgtk/form.prg deleted file mode 100644 index 3f8b099268..0000000000 --- a/harbour/examples/hbgf/hbgfgtk/form.prg +++ /dev/null @@ -1,223 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour GUI framework for Gtk - * Class HBForm - * - * Copyright 2001 Antonio Linares - * Copyright 2001 Alexander Kresin - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - * Additional Copyright notes : - * adapted for Hgf Gtk by Marek Paliwoda - */ - -/* ********************************************************************* */ - -#include "common.ch" -#include "hbclass.ch" -#include "harbgtk.ch" - -/* ********************************************************************* */ - -static aForms := {} - -/* ********************************************************************* */ - -CLASS HBForm FROM HBWinControl - - DATA oMainMenu - - DATA aControls INIT {} PROPERTY - DATA OnClick PROPERTY - - CLASSDATA lRegistered INIT .T. - - ACCESS Caption() INLINE hb_GtkWindowGetText( ::hWnd ) PROPERTY - ASSIGN Caption( cNewCaption ) INLINE ; - hb_GtkWindowSetText( ::hWnd, cNewCaption ) - - METHOD New() - /* NOTE: currently ::Close() probably does not work as in Hgf Win */ - METHOD Close() INLINE hb_GtkWindowRequestDelete( ::hWnd ) - METHOD Command( nCmd, nID, aEventData ) - METHOD CtrlCommand( nCmd, nID, aEventData ) - METHOD LButtonDown( nCmd, nID, aEventData ) - METHOD HandleEvent( nCmd, nID, aEventData ) - METHOD ShowModal() - - METHOD InsertControl( oControl ) - - ACCESS Menu() INLINE ::oMainMenu PROPERTY - ASSIGN Menu( oNewMenu ) - -ENDCLASS - -/* ********************************************************************* */ - -METHOD New() CLASS HBForm - /* HBForm is derived from HBWinControl so we should set its nID */ - ::hWnd := hb_GtkWindowCreate( ::GetNewID() ) - ::YSize := 400 - ::XSize := 500 - AAdd( aForms, Self ) -RETURN Self - -/* ********************************************************************* */ - -/* it is only for menu commands so it should be named MenuCommand() or so */ -METHOD Command( nCmd, nID, aEventData ) CLASS HBForm - LOCAL oMenuItem - - HB_SYMBOL_UNUSED( nCmd ) - HB_SYMBOL_UNUSED( aEventData ) - - IF ::Menu != nil - IF ( oMenuItem := ::Menu:FindItem( nId ) ) != nil - IF oMenuItem:OnClick != nil - __ObjSendMsg( Self, oMenuItem:OnClick, oMenuItem ) - ENDIF - ENDIF - ENDIF -RETURN nil - -/* ********************************************************************* */ - -METHOD CtrlCommand( nCmd, nID, aEventData ) CLASS HBForm - LOCAL nAt, oControl - - HB_SYMBOL_UNUSED( nCmd ) - HB_SYMBOL_UNUSED( aEventData ) - - IF ( nAt := AScan( ::aControls, { | o | o:nID == nID } ) ) != 0 - oControl := ::aControls[ nAt ] - IF oControl:OnClick != nil - __ObjSendMsg( Self, oControl:OnClick, oControl ) - ENDIF - ENDIF -/* NOTE: currently return value is not portable. Needs fixing */ -RETURN 1 - -/* ********************************************************************* */ - -METHOD LButtonDown( nCmd, nID, aEventData ) CLASS HBForm - - HB_SYMBOL_UNUSED( nCmd ) - HB_SYMBOL_UNUSED( nID ) - - IF ::OnClick != nil - /* NOTE: aEventData[ 1 ] conatins mouse y position */ - /* aEventData[ 2 ] conatins mouse x position */ - /* aEventData[ 3 ] conatins keyboard modifiers */ - __ObjSendMsg( Self, ::OnClick, Self, aEventData ) - ENDIF -/* NOTE: currently return value is not portable. Needs fixing */ -RETURN 1 - -/* ********************************************************************* */ - -/* NOTE: aEventData should be well defined because of portability reasons */ -/* it could be an array with additional parameters - like mouse x and y */ -/* position, keyboard state, time of the event, and so on */ -METHOD HandleEvent( nCmd, nID, aEventData ) CLASS HBForm - DO CASE - CASE nCmd == HGF_EV_MENU - RETURN ::Command( nCmd, nID, aEventData ) - - CASE nCmd == HGF_EV_CLICK - RETURN ::CtrlCommand( nCmd, nID, aEventData ) - - CASE nCmd == HGF_EV_LBUTTONPRESSED - RETURN ::LButtonDown( nCmd, nID, aEventData ) - - CASE nCmd == HGF_EV_RBUTTONPRESSED - /* NOTE: currently return value is not portable. Needs fixing */ - RETURN 1 - - CASE nCmd == HGF_EV_DESTROY - /* NOTE: currently return value is not portable. Needs fixing */ - RETURN 0 - - CASE nCmd == HGF_EV_CLOSE - /* NOTE: currently return value is not portable. Needs fixing */ - RETURN 0 - - ENDCASE -RETURN nil - -/* ********************************************************************* */ - -METHOD ShowModal() CLASS HBForm - hb_GtkShowModal( ::hWnd ) -RETURN nil - -/* ********************************************************************* */ - -METHOD InsertControl( oControl ) CLASS HBForm - AAdd( ::aControls, oControl ) - oControl:Show() -RETURN nil - -/* ********************************************************************* */ - -ASSIGN Menu( oNewMenu ) CLASS HBForm - ::oMainMenu := oNewMenu -RETURN nil - -/* ********************************************************************* */ - -// messages entry point - I think it can be different for different GUIs -FUNCTION HB_GUI( hWnd, Widget, nCmd, nID, aEventData ) - LOCAL aReturn := 0 - LOCAL nForm := AScan( aForms, { | oForm | oForm:hWnd[ 1 ] == hWnd } ) - - HB_SYMBOL_UNUSED( Widget ) - - IF nForm != 0 - aReturn := aForms[ nForm ]:HandleEvent( nCmd, nID, aEventData ) - ENDIF -RETURN aReturn - -/* ********************************************************************* */ diff --git a/harbour/examples/hbgf/hbgfgtk/general.c b/harbour/examples/hbgf/hbgfgtk/general.c deleted file mode 100644 index bbaf2cfae4..0000000000 --- a/harbour/examples/hbgf/hbgfgtk/general.c +++ /dev/null @@ -1,177 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour GUI framework for Gtk - * - * Copyright 2001 Marek Paliwoda - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -/* ********************************************************************* */ - -#include "harbgtk.h" - -/* ********************************************************************* */ - -#include "shared.ch" - -/* ********************************************************************* */ - -HB_FUNC( HB_GTKSHOWWIDGET ) -{ - GtkWidget *Widget; - PHB_ITEM hWnd = hb_param( 1, HB_IT_ARRAY ); - - if( hWnd ) - Widget = ( GtkWidget * )GUINT_TO_POINTER( hb_arrayGetNL( hWnd, 1 ) ); - else - Widget = ( GtkWidget * )GUINT_TO_POINTER( hb_parnl( 1 ) ); - - if( Widget ) - gtk_widget_show( Widget ); -} - -/* ********************************************************************* */ - -HB_FUNC( HB_GTKDESTROYWIDGET ) -{ - GtkWidget *Widget; - PHB_ITEM hWnd = hb_param( 1, HB_IT_ARRAY ); - - if( hWnd ) - Widget = ( GtkWidget * )GUINT_TO_POINTER( hb_arrayGetNL( hWnd, 1 ) ); - else - Widget = ( GtkWidget * )GUINT_TO_POINTER( hb_parnl( 1 ) ); - - if( Widget ) - gtk_widget_destroy( Widget ); -} - -/* ********************************************************************* */ - -HB_FUNC( HB_GTKWIDGETSETPOS ) -{ - GtkWidget *Widget; - PHB_ITEM hWnd = hb_param( 1, HB_IT_ARRAY ); - - if( hWnd ) - Widget = ( GtkWidget * )GUINT_TO_POINTER( hb_arrayGetNL( hWnd, 1 ) ); - else - Widget = ( GtkWidget * )GUINT_TO_POINTER( hb_parnl( 1 ) ); - - if( Widget ) - gtk_widget_set_uposition( Widget, hb_parni( 3 ), hb_parni( 2 ) ); -} - -/* ********************************************************************* */ - -HB_FUNC( HB_GTKWIDGETSETSIZE ) -{ - PHB_ITEM hWnd = hb_param( 1, HB_IT_ARRAY ); - GtkWidget *Widget; - - if( hWnd ) - { - Widget = ( GtkWidget * )GUINT_TO_POINTER( hb_arrayGetNL( hWnd, 1 ) ); - if( Widget ) - gtk_window_set_default_size( GTK_WINDOW( Widget ), hb_parni( 3 ), hb_parni( 2 ) ); - } - else - { - Widget = ( GtkWidget * )GUINT_TO_POINTER( hb_parnl( 1 ) ); - if( Widget ) - gtk_widget_set_usize( Widget, hb_parni( 3 ), hb_parni( 2 ) ); - } -} - -/* ********************************************************************* */ - -HB_FUNC( HB_GTKWIDGETGETGEOMETRY ) -{ - PHB_ITEM hWnd = hb_param( 1, HB_IT_ARRAY ); - GtkWidget *Widget; - - if( hWnd ) - { - Widget = ( GtkWidget * )GUINT_TO_POINTER( hb_arrayGetNL( hWnd, 1 ) ); - - if( Widget && GTK_WIDGET_REALIZED( Widget ) ) - { - gint x, y, w, h; - gdk_window_get_origin( Widget->window, &x, &y ); - gdk_window_get_size( Widget->window, &w, &h ); - - switch ( hb_parni( 2 ) ) - { - case 1: hb_retni( y ); break; - case 2: hb_retni( x ); break; - case 3: hb_retni( h ); break; - case 4: hb_retni( w ); break; - default: hb_retni( HGF_GTK_WIDGET_GEOMETRY_UNKNOWN ); - } - } - else - hb_retni( HGF_GTK_WIDGET_GEOMETRY_UNKNOWN ); - } - else - { - Widget = ( GtkWidget * )GUINT_TO_POINTER( hb_parnl( 1 ) ); - - if( Widget && GTK_WIDGET_REALIZED( Widget ) ) - switch ( hb_parni( 2 ) ) - { - case 1: hb_retni( Widget->allocation.y ); break; - case 2: hb_retni( Widget->allocation.x ); break; - case 3: hb_retni( Widget->allocation.height ); break; - case 4: hb_retni( Widget->allocation.width ); break; - default: hb_retni( HGF_GTK_WIDGET_GEOMETRY_UNKNOWN ); - } - else - hb_retni( HGF_GTK_WIDGET_GEOMETRY_UNKNOWN ); - } -} - -/* ********************************************************************* */ diff --git a/harbour/examples/hbgf/hbgfgtk/harbgtk.ch b/harbour/examples/hbgf/hbgfgtk/harbgtk.ch deleted file mode 100644 index ee247bbf67..0000000000 --- a/harbour/examples/hbgf/hbgfgtk/harbgtk.ch +++ /dev/null @@ -1,57 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour GUI framework for Gtk - * - * Copyright 2001 Marek Paliwoda - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -/* ********************************************************************* */ - -#include "shared.ch" - -/* ********************************************************************* */ diff --git a/harbour/examples/hbgf/hbgfgtk/harbgtk.h b/harbour/examples/hbgf/hbgfgtk/harbgtk.h deleted file mode 100644 index 0af09fd685..0000000000 --- a/harbour/examples/hbgf/hbgfgtk/harbgtk.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour GUI framework for Gtk - * - * Copyright 2001 Marek Paliwoda - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -/* ************************************************************************* */ - -#include -#include - -#include -#include -#include -#include - -#include "shared.ch" - -/* ************************************************************************* */ - -/* default MultiLine delimiters - they allow to divide */ -/* single string into MultiLine string by putting these */ -/* delimiters into it */ -extern const gchar *MultiLineDelimiters; - -/* ************************************************************************* */ - -/* calls Harbour level dispatcher */ -glong CallHarbour( GtkWidget *hWnd, GtkWidget *Widget, glong Command, gint ObjId, PHB_ITEM aParam ); - -/* ************************************************************************* */ diff --git a/harbour/examples/hbgf/hbgfgtk/hbgfgtk.hbp b/harbour/examples/hbgf/hbgfgtk/hbgfgtk.hbp deleted file mode 100644 index f7e7576f7f..0000000000 --- a/harbour/examples/hbgf/hbgfgtk/hbgfgtk.hbp +++ /dev/null @@ -1,28 +0,0 @@ -# -# $Id$ -# - --hblib --ohbgfgtk --inc --q0 -w3 -es2 -l --i${HB_INC_GTK} - --inctrypath={linux}/usr/include --inctrypath={linux}/usr/include/glib-2.0 - -"-cflag=`pkg-config --cflags gtk+-2.0`" - -creawin.c -general.c -creamenu.c -creabutt.c -dispatch.c -msginfo.c -mainlgtk.c - -form.prg -menu.prg -button.prg -menuitem.prg -winctrl.prg diff --git a/harbour/examples/hbgf/hbgfgtk/mainlgtk.c b/harbour/examples/hbgf/hbgfgtk/mainlgtk.c deleted file mode 100644 index 4c2dfc85ff..0000000000 --- a/harbour/examples/hbgf/hbgfgtk/mainlgtk.c +++ /dev/null @@ -1,76 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Linux GTK application entry point - * - * Copyright 2001 Marek Paliwoda - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#include - -#include "hbapi.h" -#include "hbvm.h" - -int main( int argc, char * argv[] ) -{ - HB_TRACE(HB_TR_DEBUG, ("main(%d, %p)", argc, argv)); - - gtk_set_locale(); - - if( gtk_init_check( &argc, &argv ) ) - { - hb_cmdargInit( argc, argv ); - hb_vmInit( TRUE ); - return hb_vmQuit(); - } - else - { - fprintf( stderr, "%s\n", "Could not initialize GTK++ subsystem" ); - } - - return 1; -} diff --git a/harbour/examples/hbgf/hbgfgtk/menu.prg b/harbour/examples/hbgf/hbgfgtk/menu.prg deleted file mode 100644 index 7a85ef28df..0000000000 --- a/harbour/examples/hbgf/hbgfgtk/menu.prg +++ /dev/null @@ -1,136 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour GUI framework for Gtk - * Class HBMenu - * - * Copyright 2001 Antonio Linares - * Copyright 2001 Maurilio Longo - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - * Additional Copyright notes : - * adapted for Hgf Gtk by Marek Paliwoda - */ - -/* ********************************************************************* */ - -#include "hbclass.ch" -#include "harbgtk.ch" - -/* ********************************************************************* */ - -CLASS HBMenu FROM HBPersistent - - DATA nHandle - DATA Items PROPERTY INIT {} - - DATA Container - - METHOD New( oForm ) - METHOD Add( oMenuItem ) - METHOD FindItem( nId ) // Searches for a sub menuitem given its id - -HIDDEN: - DATA nType - -ENDCLASS - -/* ********************************************************************* */ - -METHOD New( oForm ) CLASS HBMenu - IF oForm != nil - ::Container := oForm - ::nHandle := hb_GtkCreateMenuBar( oForm:hWnd[ 2 ] ) - oForm:hWnd[ 6 ] := ::nHandle - ::nType := HBGTKMENUTYPEBAR - ELSE - ::nHandle := hb_GtkCreateMenu() - ::nType := HBGTKMENUTYPEPOP - ENDIF -RETURN Self - -/* ********************************************************************* */ - -METHOD Add( oMenuItem ) CLASS HBMenu - /* required because of a stupid Harbour compiler error */ - LOCAL nHandle := ::nHandle - - IF oMenuItem != nil - IF ::nType == HBGTKMENUTYPEBAR - oMenuItem:hMenuItem := hb_GtkBarAddMenuItem( ::nHandle, ; - oMenuItem:Caption, oMenuItem:nId, oMenuItem:Enabled, ; - ::Container:hWnd[ 1 ] ) - ELSE - oMenuItem:hMenuItem := hb_GtkAddMenuItem( @nHandle, ::nHandle, ; - oMenuItem:hMenuItem, oMenuItem:Caption, oMenuItem:nId, ; - oMenuItem:Enabled, ::Container:hWnd[ 1 ] ) - - //::nHandle := nHandle - ENDIF - - oMenuItem:oParent := Self - AAdd( ::Items, oMenuItem ) - ENDIF -RETURN nil - -/* ********************************************************************* */ - -METHOD FindItem( nId ) CLASS HBMenu - LOCAL oMenuItem, n - - FOR n := 1 TO Len( ::Items ) - IF ( oMenuItem := ::Items[ n ] ):nId == nId - RETURN oMenuItem - ELSE - IF oMenuItem:Items != nil - IF ( oMenuItem := oMenuItem:FindItem( nId ) ) != nil - RETURN oMenuItem - ENDIF - ENDIF - ENDIF - NEXT -RETURN oMenuItem - -/* ********************************************************************* */ diff --git a/harbour/examples/hbgf/hbgfgtk/menuitem.prg b/harbour/examples/hbgf/hbgfgtk/menuitem.prg deleted file mode 100644 index d7a6814a68..0000000000 --- a/harbour/examples/hbgf/hbgfgtk/menuitem.prg +++ /dev/null @@ -1,134 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour GUI framework for Gtk - * Class HGFMenuItem - * - * Copyright 2001 Antonio Linares - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - * Additional Copyright notes : - * adapted for Hgf Gtk by Marek Paliwoda - */ - -/* ********************************************************************* */ - -#include "common.ch" -#include "hbclass.ch" -#include "harbgtk.ch" - -/* ********************************************************************* */ - -CLASS HGFMenuItem FROM HBPersistent - - DATA Caption INIT "" PROPERTY // Specifies the text of the menu item - DATA Name PROPERTY // The name of this component - DATA OnClick PROPERTY // A character description of the method to invoke - DATA Enabled INIT .T. PROPERTY // Specifies whether the menu item is enabled - DATA Items INIT {} PROPERTY // Contains the menu items in the submenu of the menu item - - DATA nId // Command value to send to the container form - DATA oParent // Identifies the parent menu item of this menu item - DATA Container - - DATA nHandle INIT 0 // The handle of the submenu of this menu item - DATA hMenuItem INIT 0 // The handle of this menu item - - CLASSDATA nIdStart INIT 110 // start value for commands value to assign to menu items - - METHOD New( oOwner ) // Creates a new menu item - METHOD Add( oMenuItem ) // Adds a new drop down menu item - METHOD FindItem( nId ) // Searches for a sub menuitem given its id - -ENDCLASS - -/* ********************************************************************* */ - -METHOD New( oOwner ) CLASS HGFMenuItem - - ::nId := ::nIdStart++ - IF oOwner != nil - ::Container := oOwner:Container - ENDIF - ::oParent := oOwner - - // NOTE : physical creation is delayed until MenuItem is added to a parent -RETURN Self - -/* ********************************************************************* */ - -METHOD Add( oMenuItem ) CLASS HGFMenuItem - /* required because of a stupid Harbour compiler error */ - LOCAL nHandle := ::nHandle - - oMenuItem:hMenuItem := hb_GtkAddMenuItem( @nHandle, ::hMenuItem, ; - oMenuItem:hMenuItem, oMenuItem:Caption, oMenuItem:nId, ; - oMenuItem:Enabled, ::Container:hWnd[ 1 ] ) - - ::nHandle := nHandle - - oMenuItem:oParent := Self - AAdd( ::Items, oMenuItem ) -RETURN nil - -/* ********************************************************************* */ - -METHOD FindItem( nId ) CLASS HGFMenuItem - LOCAL oMenuItem, n - - FOR n := 1 TO Len( ::Items ) - IF ( oMenuItem := ::Items[ n ] ):nId == nId - RETURN oMenuItem - ELSE - IF oMenuItem:Items != nil - IF ( oMenuItem := oMenuItem:FindItem( nId ) ) != nil - RETURN oMenuItem - ENDIF - ENDIF - ENDIF - NEXT -RETURN oMenuItem - -/* ********************************************************************* */ diff --git a/harbour/examples/hbgf/hbgfgtk/msginfo.c b/harbour/examples/hbgf/hbgfgtk/msginfo.c deleted file mode 100644 index d03f9998bc..0000000000 --- a/harbour/examples/hbgf/hbgfgtk/msginfo.c +++ /dev/null @@ -1,130 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour GUI framework for Gtk - * - * Copyright 2001 Marek Paliwoda - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -/* ********************************************************************* */ - -#include "harbgtk.h" - -/* ********************************************************************* */ - -#include "shared.ch" - -/* ********************************************************************* */ - -const gchar * MultiLineDelimiters = "\n\r"; - -static void GtkMsgInfoCallback( GtkWidget *Widget, gpointer Data ) -{ - HB_SYMBOL_UNUSED( Widget ); - - if( GTK_IS_WIDGET( ( GtkWidget * ) Data ) ) - gtk_widget_destroy( ( GtkWidget * ) Data ); - - gtk_main_quit(); -} - -/* ********************************************************************* */ - -HB_FUNC( MSGINFO ) -{ - gchar *Message = g_strdelimit( - ( gchar * ) hb_parc( 1 ), - MultiLineDelimiters, '\n' - ); - GtkWidget *InfoWin = gtk_dialog_new(); - GtkWidget *Label = gtk_label_new( Message ); - GtkWidget *BtnOK = gtk_button_new_with_label( "Ok" ); - - gtk_window_set_title( GTK_WINDOW( InfoWin ), "Message" ); - gtk_window_set_position( GTK_WINDOW( InfoWin ), GTK_WIN_POS_CENTER ); - gtk_container_border_width( GTK_CONTAINER( InfoWin ), 0 ); - gtk_container_border_width - ( - GTK_CONTAINER( GTK_BOX( GTK_DIALOG( InfoWin )->vbox ) ), 5 - ); - - gtk_window_set_modal( GTK_WINDOW( InfoWin ), TRUE ); - gtk_window_set_policy( GTK_WINDOW( InfoWin ), FALSE, FALSE, FALSE ); - - gtk_signal_connect - ( - GTK_OBJECT( InfoWin ), - "destroy", - GTK_SIGNAL_FUNC( ( GtkSignalFunc ) GtkMsgInfoCallback ), - NULL - ); - - gtk_signal_connect - ( - GTK_OBJECT( BtnOK ), - "clicked", - GTK_SIGNAL_FUNC( ( GtkSignalFunc ) GtkMsgInfoCallback ), - ( gpointer ) InfoWin - ); - - gtk_box_pack_start - ( - GTK_BOX( GTK_BOX( GTK_DIALOG( InfoWin )->vbox ) ), - Label, TRUE, TRUE, 10 - ); - - gtk_box_pack_start - ( - GTK_BOX( GTK_BOX( GTK_DIALOG( InfoWin )->action_area ) ), - BtnOK, TRUE, TRUE, 10 - ); - - gtk_widget_show_all( InfoWin ); - gtk_main(); -} - -/* ********************************************************************* */ diff --git a/harbour/examples/hbgf/hbgfgtk/shared.ch b/harbour/examples/hbgf/hbgfgtk/shared.ch deleted file mode 100644 index a05842cfb2..0000000000 --- a/harbour/examples/hbgf/hbgfgtk/shared.ch +++ /dev/null @@ -1,77 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour GUI framework for Gtk - * - * Copyright 2001 Marek Paliwoda - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -/* ************************************************************************* */ - -#define HGF_EV_MENU 0x0001 -#define HGF_EV_CLICK 0x0002 -#define HGF_EV_CLOSE 0x0003 -#define HGF_EV_DESTROY 0x0004 -#define HGF_EV_LBUTTONPRESSED 0x0005 -#define HGF_EV_RBUTTONPRESSED 0x0006 -#define HGF_EV_MBUTTONPRESSED 0x0007 - -/* ************************************************************************* */ - -#define HGF_EVENTDATA_MAXLEN 3 - -/* ************************************************************************* */ - -/* These are for HGF GTK only */ - -/* Harbour equivalent menu types of GTK+ menu types */ -#define HBGTKMENUTYPEBAR 0 -#define HBGTKMENUTYPEPOP 1 - -#define HGF_GTK_WIDGET_GEOMETRY_UNKNOWN -99999 - -/* ************************************************************************* */ diff --git a/harbour/examples/hbgf/hbgfgtk/winctrl.prg b/harbour/examples/hbgf/hbgfgtk/winctrl.prg deleted file mode 100644 index d0196aaa8d..0000000000 --- a/harbour/examples/hbgf/hbgfgtk/winctrl.prg +++ /dev/null @@ -1,144 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour GUI framework for Gtk - * Class HBWinControl - * - * Copyright 2001 Antonio Linares - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - * Additional Copyright notes : - * adapted for Hgf Gtk by Marek Paliwoda - */ - -/* ********************************************************************* */ - -#include "common.ch" -#include "hbclass.ch" -#include "harbgtk.ch" - -/* ********************************************************************* */ - -CLASS HBWinControl FROM HBPersistent - -//PROTECTED: -/* should be PROTECTED */ -EXPORTED: - /* NOTE: because I didn't find a way to set Top and Left or Width */ - /* and Height individualy, and because Widget geometry is unknown */ - /* until it is realized I had to introduce these vars */ - DATA YPos INIT 0 - DATA XPos INIT 0 - DATA YSize INIT 1 - DATA XSize INIT 1 - -EXPORTED: - DATA hWnd - DATA nId - DATA Container - - CLASSDATA nInitId INIT 1 - - ACCESS Caption() INLINE "" PROPERTY // should be virtual for Gtk - ASSIGN Caption( cNewCaption ) INLINE cNewCaption // should be virtual for Gtk - - ACCESS Top() PROPERTY - ASSIGN Top( nNewTop ) INLINE ::YPos := nNewTop, ; - hb_GtkWidgetSetPos( ::hWnd, ::YPos, ::XPos ) - - ACCESS Left() PROPERTY - ASSIGN Left( nNewLeft ) INLINE ::XPos := nNewLeft, ; - hb_GtkWidgetSetPos( ::hWnd, ::YPos, ::XPos ) - - ACCESS Height() PROPERTY - ASSIGN Height( nNewHeight ) INLINE ::YSize := nNewHeight, ; - hb_GtkWidgetSetSize( ::hWnd, ::YSize, ::XSize ) - - ACCESS Width() PROPERTY - ASSIGN Width( nNewWidth ) INLINE ::XSize := nNewWidth, ; - hb_GtkWidgetSetSize( ::hWnd, ::YSize, ::XSize ) - - METHOD GetNewID() INLINE ::nId := ::nInitId++ - - METHOD Show() INLINE hb_GtkShowWidget( ::hWnd ) -ENDCLASS - -/* ********************************************************************* */ - -ACCESS Top() CLASS HBWinControl - LOCAL PosY := hb_GtkWidgetGetGeometry( ::hWnd, 1 ) - IF PosY != HGF_GTK_WIDGET_GEOMETRY_UNKNOWN - ::YPos := PosY - ENDIF -RETURN ::YPos - -/* ********************************************************************* */ - -ACCESS Left() CLASS HBWinControl - LOCAL PosX := hb_GtkWidgetGetGeometry( ::hWnd, 2 ) - IF PosX != HGF_GTK_WIDGET_GEOMETRY_UNKNOWN - ::XPos := PosX - ENDIF -RETURN ::XPos - -/* ********************************************************************* */ - -ACCESS Height() CLASS HBWinControl - LOCAL SizeY := hb_GtkWidgetGetGeometry( ::hWnd, 3 ) - IF SizeY != HGF_GTK_WIDGET_GEOMETRY_UNKNOWN - ::YSize := SizeY - ENDIF -RETURN ::YSize - -/* ********************************************************************* */ - -ACCESS Width() CLASS HBWinControl - LOCAL SizeX := hb_GtkWidgetGetGeometry( ::hWnd, 4 ) - IF SizeX != HGF_GTK_WIDGET_GEOMETRY_UNKNOWN - ::XSize := SizeX - ENDIF -RETURN ::XSize - -/* ********************************************************************* */ diff --git a/harbour/examples/hbgf/hbgfos2/button.prg b/harbour/examples/hbgf/hbgfos2/button.prg deleted file mode 100644 index 904f268107..0000000000 --- a/harbour/examples/hbgf/hbgfos2/button.prg +++ /dev/null @@ -1,93 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour GUI framework for IBM OS/2 Presentation Manager - * Class HBButton - * - * Copyright 2001 Antonio Linares - * Copyright 2001 Maurilio Longo - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#include "common.ch" -#include "hbclass.ch" -#include "os2pm.ch" - - -// NOTE: Be sure they are the same -#define WS_CHILD WS_DISABLED //0x40000000 - - -CLASS HBButton FROM HBWinControl - - DATA OnClick PROPERTY - - METHOD New( oContainer ) - -ENDCLASS - - -METHOD New( oContainer ) CLASS HBButton - - ::hWnd := WinCreateWindow(oContainer:hWndClient,; /* Parent window */ - WC_BUTTON,; /* Class window */ - "",; /* Button text */ - WS_VISIBLE + WS_TABSTOP+; /* Visible style */ - BS_PUSHBUTTON + BS_AUTOSIZE,; /* Button style */ - 0, 0,; /* x, y */ - 80, 30,; /* cx, cy */ - oContainer:hWndClient,; /* Owner window */ - HWND_TOP,; /* Top of z-order */ - ::GetNewId(),; /* Identifier */ - nil,; /* Control data */ - nil) /* parameters */ - - // NOTE: There is no need to modify it later since I can give it an initial - // size during window creartion - //::Width := 80 - //::Height := 25 - -return Self diff --git a/harbour/examples/hbgf/hbgfos2/edit.prg b/harbour/examples/hbgf/hbgfos2/edit.prg deleted file mode 100644 index c1d1b617e9..0000000000 --- a/harbour/examples/hbgf/hbgfos2/edit.prg +++ /dev/null @@ -1,83 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour GUI framework for IBM OS/2 Presentation Manager - * Class HBEdit - * - * Copyright 2001 Antonio Linares - * Copyright 2001 Maurilio Longo - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#include "common.ch" -#include "hbclass.ch" -#include "os2pm.ch" - -CLASS HBEdit FROM HBWinControl - - METHOD New( oContainer ) - -ENDCLASS - -METHOD New( oContainer ) CLASS HBEdit - - ::hWnd := WinCreateWindow(oContainer:hWndClient,; /* Parent window */ - WC_ENTRYFIELD,; /* Class window */ - "",; /* Button text */ - WS_VISIBLE + WS_TABSTOP+; /* Visible style */ - ES_MARGIN,; /* window style */ - 0, 0,; /* x, y */ - 121, 21,; /* cx, cy */ - oContainer:hWndClient,; /* Owner window */ - HWND_TOP,; /* Top of z-order */ - ::GetNewId(),; /* Identifier */ - nil,; /* Control data */ - nil) /* parameters */ - - //::Width := 121 - //::Height := 21 - -return Self diff --git a/harbour/examples/hbgf/hbgfos2/hbgfos2.hbp b/harbour/examples/hbgf/hbgfos2/hbgfos2.hbp deleted file mode 100644 index 079ce57a2f..0000000000 --- a/harbour/examples/hbgf/hbgfos2/hbgfos2.hbp +++ /dev/null @@ -1,20 +0,0 @@ -# -# $Id$ -# - --hblib --ohbgfos2 --inc --q0 -w3 -es2 -l - -"-echo={!os2}This library builds on os2 only." --stop{!os2} - -os2pm.c - -tform.prg -tmenu.prg -tmenuit.prg -winctrl.prg -button.prg -edit.prg diff --git a/harbour/examples/hbgf/hbgfos2/os2pm.c b/harbour/examples/hbgf/hbgfos2/os2pm.c deleted file mode 100644 index d301f2a003..0000000000 --- a/harbour/examples/hbgf/hbgfos2/os2pm.c +++ /dev/null @@ -1,417 +0,0 @@ -/* - * $Id$ - */ - - -/* - * Harbour Project source code: - * Harbour GUI framework for IBM OS/2 Presentation Manager - * - * Copyright 2001 Antonio Linares - * Copyright 2001 Maurilio Longo - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#define INCL_BASE -#define INCL_PM -#include - -#include "hbapi.h" -#include "hbvm.h" - -#define LOWORD(l) ((USHORT)l) -#define HIWORD(l) ((USHORT)((ULONG)l >> 16)) - -HAB hb_pm_GetHab( void ); -MRESULT EXPENTRY WndProc( HWND, ULONG, MPARAM, MPARAM ); - - -MRESULT EXPENTRY WndProc( HWND hWnd, ULONG Msg, MPARAM mp1, MPARAM mp2 ) -{ - static PHB_DYNS s_pDynSym = 0; - - MRESULT mResult; - HPS hps; - - if( ! s_pDynSym ) - s_pDynSym = hb_dynsymFind( "HB_GUI" ); - - switch (Msg) - { - case WM_PAINT: - hps = WinBeginPaint( hWnd, 0L, NULL ); - GpiErase( hps ); - WinEndPaint( hps ); - return 0; - - default: - hb_vmPushState(); - hb_vmPushDynSym( s_pDynSym ); - hb_vmPushNil(); - hb_vmPushLong( ( long ) hWnd ); - hb_vmPushLong( ( long ) Msg ); - hb_vmPushLong( ( long ) mp1 ); - hb_vmPushLong( ( long ) mp2 ); - hb_vmDo( 4 ); - if( hb_arrayGetType( hb_param( -1, HB_IT_ANY ), 1 ) == HB_IT_NIL ) - mResult = ( MRESULT ) WinDefWindowProc( hWnd, Msg, mp1, mp2 ); - else - mResult = ( MRESULT ) hb_parnl( -1, 1 ); - hb_vmPopState(); - - return mResult; - } -} - - -HB_FUNC( WINREGISTERCLASS ) -{ - hb_retl( WinRegisterClass( hb_pm_GetHab(), /* anchor block handle */ - ( PCSZ ) hb_parc( 1 ), /* Class Name */ - ( PFNWP ) WndProc, /* default Class procedure */ - hb_parnl( 2 ), /* style */ - hb_parnl( 3 ) ) ); /* extra bytes */ -} - - -HB_FUNC(WINCREATEWINDOW) -{ - hb_retnl( (LONG) WinCreateWindow( (HWND) hb_parnl(1), /* hWnd parent */ - (PCSZ) hb_parc(2), /* pszClass */ - (PCSZ) hb_parc(3), /* pszName */ - (ULONG) hb_parnl(4), /* flStyle */ - (LONG) hb_parnl(5), /* x */ - (LONG) hb_parnl(6), /* y */ - (LONG) hb_parnl(7), /* cx */ - (LONG) hb_parnl(8), /* cy */ - (HWND) hb_parnl(9), /* hwndOwner */ - (HWND) hb_parnl(10), /* hwndInsertBehind */ - (ULONG) hb_parnl(11), /* id */ - (PVOID) hb_parnl(12), /* pCtlData, */ - (PVOID) hb_parnl(13))); /* pPresParams */ -} - - -HB_FUNC( WINCREATESTDWINDOW ) -{ - ULONG lFrame = hb_parnl( 3 ); - HWND hWndClient; - - hb_retnl( (LONG) WinCreateStdWindow( ( HWND ) hb_parnl( 1 ), /* hWndParent */ - hb_parnl( 2 ), /* style */ - &lFrame, /* lFrame */ - ( PCSZ ) hb_parc( 4 ), /* cClassName */ - ( PCSZ ) hb_parc( 5 ), /* cCaption */ - hb_parnl( 6 ), /* lStyleClient */ - hb_parnl( 7 ), /* hModule */ - hb_parnl( 8 ), /* nId */ - ( PHWND ) &hWndClient )); /* Window client handle */ - - hb_stornl( ( LONG ) hWndClient, 9 ); -} - - -HB_FUNC( HB_FORMSHOWMODAL ) -{ - QMSG qmsg; - HAB hab = hb_pm_GetHab(); - - WinShowWindow( ( HWND ) hb_parnl( 1 ), 1 ); - while( WinGetMsg( hab, &qmsg, 0, 0, 0 ) ) - WinDispatchMsg( hab, &qmsg ); -} - - -/* nOr() is a very used function */ -HB_FUNC( NOR ) -{ - LONG lRet = 0; - USHORT i = 0; - - while( i < hb_pcount() ) - lRet = lRet | hb_parnl( ++i ); - - hb_retnl( lRet ); -} - - -HB_FUNC( WINSETWINDOWTEXT ) -{ - hb_retl( WinSetWindowText( ( HWND ) hb_parnl( 1 ), ( PCSZ ) hb_parc( 2 ) ) ); -} - - -HB_FUNC( WINGETTEXT ) -{ - char bBuffer[ 255 ]; - - WinQueryWindowText( ( HWND ) hb_parnl( 1 ), sizeof( bBuffer ) - 1, ( PSZ ) bBuffer ); - hb_retc( bBuffer ); -} - - -HB_FUNC( MSGINFO ) -{ - HWND hWnd = WinQueryActiveWindow( HWND_DESKTOP); - PCSZ szCaption = HB_ISCHAR( 2 ) ? ( PCSZ ) hb_parc( 2 ) : ( PCSZ ) "Information"; - - hb_retnl( WinMessageBox( HWND_DESKTOP, hWnd, ( PCSZ ) hb_parc( 1 ), szCaption, - 0, MB_INFORMATION | MB_OK | MB_MOVEABLE | MB_APPLMODAL ) ); -} - - -HAB hb_pm_GetHab() -{ - return WinQueryAnchorBlock( WinQueryActiveWindow( HWND_DESKTOP ) ); -} - - -HB_FUNC( GETHAB ) -{ - hb_retnl( ( LONG ) hb_pm_GetHab() ); -} - - -HB_FUNC( WINCREATEMENU ) -{ - hb_retnl( (LONG) WinCreateMenu((HWND) hb_parnl(1), (PVOID) NULL)); - -} - - -/* Some xBase for C language */ -#define IIF(x,y,z) ((x)?(y):(z)) - - -HB_FUNC( WINADDMENUITEM ) -{ - MENUITEM mit; - - mit.iPosition = hb_parni( 3 ); - mit.afStyle = IIF( HB_ISCHAR( 2 ), MIS_TEXT, MIS_SEPARATOR ); - mit.afAttribute = IIF( ! hb_parl( 6 ), MIA_DISABLED, 0 ); - mit.id = hb_parni( 5 ); - mit.hwndSubMenu = hb_parnl( 4 ); - mit.hItem = 0; - - hb_retni( ( LONG ) WinSendMsg( ( HWND ) hb_parnl( 1 ), MM_INSERTITEM, - &mit, ( MPARAM ) hb_parc( 2 ) ) ); -} - - -/* Given an id of a menuitem changes it to a MIS_SUBMENU type of menu item - NOTE: You have to delete and reinsert a menu item if you want to change it from - a MIS_TEXT to a MIS_SUBMENU type of menuitem */ -HB_FUNC( WINMAKESUBMENUITEM ) -{ - MENUITEM mit; - MRESULT rc; - char text[ 100 ]; - - rc = WinSendMsg((HWND) hb_parnl(1), MM_QUERYITEM, MPFROM2SHORT(hb_parni(2), FALSE ), &mit ); - if ((BOOL)rc) { - WinSendMsg((HWND) hb_parnl(1), MM_QUERYITEMTEXT, MPFROM2SHORT(hb_parni(2), sizeof( text ) ), &text ); - WinSendMsg((HWND) hb_parnl(1), MM_DELETEITEM, MPFROM2SHORT(hb_parni(2), FALSE ), 0L ); - - mit.hwndSubMenu = hb_parnl(3); - mit.afStyle |= MIS_SUBMENU; - - /* re-insert the menuitem */ - WinSendMsg((HWND) hb_parnl(1), MM_INSERTITEM, &mit, &text); - } - hb_retnl(0); -} - - -HB_FUNC( WINSETPARENT ) -{ - hb_retl( WinSetParent( ( HWND ) hb_parnl( 1 ), ( HWND ) hb_parnl( 2 ), - hb_parl( 3 ) ) ); -} - - -HB_FUNC( WINSETOWNER ) -{ - hb_retl( WinSetOwner( ( HWND ) hb_parnl( 1 ), ( HWND ) hb_parnl( 2 ) ) ); -} - - -HB_FUNC( WINSENDMSG ) -{ - hb_retnl( ( LONG ) WinSendMsg( ( HWND ) hb_parnl( 1 ), hb_parnl( 2 ), - ( MPARAM ) IIF( HB_ISCHAR( 3 ), (ULONG) hb_parc( 3 ), (ULONG) hb_parnl( 3 ) ), - ( MPARAM ) IIF( HB_ISCHAR( 4 ), (ULONG) hb_parc( 4 ), (ULONG) hb_parnl( 4 ) ) ) ); -} - - -HB_FUNC( WINGETWIDTH ) -{ - HWND hWnd = ( HWND ) hb_parnl( 1 ); - RECTL rcWnd; - - WinQueryWindowRect( hWnd, &rcWnd ); - hb_retnl( rcWnd.xRight - rcWnd.xLeft ); -} - - -HB_FUNC( WINSETWIDTH ) -{ - HWND hWnd = ( HWND ) hb_parnl( 1 ); - SWP swp; - - WinQueryWindowPos( hWnd, &swp ); - WinSetWindowPos( hWnd, HWND_TOP, swp.x, - swp.y, (LONG) hb_parnl( 2 ), swp.cy, - SWP_MOVE | SWP_SIZE | SWP_SHOW | SWP_ZORDER ); -} - - -HB_FUNC( SENDMESSAGE ) -{ - hb_retnl( (LONG) WinSendMsg( - (HWND) hb_parnl( 1 ), /* handle of destination window */ - (ULONG) hb_parnl( 2 ), /* message to send */ - (MPARAM) hb_parnl( 3 ), /* first message parameter */ - (MPARAM) hb_parnl( 4 ) /* second message parameter */ - ) ); -} - - -HB_FUNC( NLOWORD ) -{ - hb_retnl( LOWORD( hb_parnl( 1 ) ) ); -} - - -HB_FUNC( NHIWORD ) -{ - hb_retnl( HIWORD( hb_parnl( 1 ) ) ); -} - - -HB_FUNC( WINGETHEIGHT ) -{ - HWND hWnd = ( HWND ) hb_parnl( 1 ); - RECTL rct; - - WinQueryWindowRect( hWnd, &rct ); - - hb_retnl( rct.yBottom - rct.yTop ); -} - - -HB_FUNC( WINSETHEIGHT ) -{ - HWND hWnd = ( HWND ) hb_parnl( 1 ); - SWP swp; - - WinQueryWindowPos( hWnd, &swp ); - WinSetWindowPos( hWnd, HWND_TOP, swp.x, - swp.y, swp.cx, hb_parnl( 2 ), - SWP_MOVE | SWP_SIZE | SWP_SHOW | SWP_ZORDER ); -} - - -HB_FUNC( WINGETTOP ) -{ - HWND hWnd = ( HWND ) hb_parnl( 1 ); - RECTL rct; - - WinQueryWindowRect( hWnd, &rct ); - - hb_retnl( rct.yTop ); -} - - -HB_FUNC( WINSETTOP ) -{ - HWND hWnd = ( HWND ) hb_parnl( 1 ); - SWP swp; - - WinQueryWindowPos( hWnd, &swp ); - WinSetWindowPos( hWnd, HWND_TOP, hb_parnl( 2 ), - swp.y, swp.cx, swp.cy, - SWP_MOVE | SWP_SIZE | SWP_SHOW | SWP_ZORDER ); -} - - -HB_FUNC( WINGETLEFT ) -{ - HWND hWnd = ( HWND ) hb_parnl( 1 ); - RECTL rct; - - WinQueryWindowRect( hWnd, &rct ); - - hb_retnl( rct.xLeft ); -} - - -HB_FUNC( WINSETLEFT ) -{ - HWND hWnd = ( HWND ) hb_parnl( 1 ); - SWP swp; - - WinQueryWindowPos( hWnd, &swp ); - WinSetWindowPos( hWnd, HWND_TOP, swp.x, - hb_parnl( 2 ), swp.cx, swp.cy, - SWP_MOVE | SWP_SIZE | SWP_SHOW | SWP_ZORDER ); -} - - -HB_FUNC( POSTQUITMESSAGE ) -{ - WinPostMsg((HWND) hb_parnl( 1 ), WM_QUIT, 0L, 0L); - /*PostQuitMessage( hb_parnl( 1 ) );*/ -} - - -HB_FUNC( SHOWWINDOW ) -{ - hb_retl( WinShowWindow( ( HWND ) hb_parnl( 1 ), hb_parl( 2 ) ) ); -} - - -HB_FUNC( WINGETLASTERROR ) -{ - hb_retnl((LONG) WinGetLastError( hb_pm_GetHab() ) ); -} diff --git a/harbour/examples/hbgf/hbgfos2/os2pm.ch b/harbour/examples/hbgf/hbgfos2/os2pm.ch deleted file mode 100644 index af1117e86b..0000000000 --- a/harbour/examples/hbgf/hbgfos2/os2pm.ch +++ /dev/null @@ -1,867 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour GUI framework for IBM OS/2 Presentation Manager - * - * Copyright 2001 Antonio Linares - * Copyright 2001 Maurilio Longo - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - - - -#define WC_FRAME "#1" //0xffff0001 -#define WC_COMBOBOX "#2" //0xffff0002 -#define WC_BUTTON "#3" //0xffff0003 -#define WC_MENU "#4" //0xffff0004 -#define WC_STATIC "#5" //0xffff0005 -#define WC_ENTRYFIELD "#6" //0xffff0006 -#define WC_LISTBOX "#7" //0xffff0007 -#define WC_SCROLLBAR "#8" //0xffff0008 -#define WC_TITLEBAR "#9" //0xffff0009 -#define WC_MLE "#10" //0xffff000a -#define WC_APPSTAT "#16" //0xffff0010 -#define WC_KBDSTAT "#17" //0xffff0011 -#define WC_PECIC "#18" //0xffff0012 -#define WC_DBE_KKPOPUP "#19" //0xffff0013 -#define WC_SPINBUTTON "#32" //0xffff0020 -#define WC_CONTAINER "#37" //0xffff0025 -#define WC_SLIDER "#38" //0xffff0026 -#define WC_VALUESET "#39" //0xffff0027 -#define WC_NOTEBOOK "#40" //0xffff0028 -#define WC_PENFIRST "#41" //0xffff0029 -#define WC_PENLAST "#44" //0xffff002c -#define WC_MMPMFIRST "#64" //0xffff0040 -#define WC_CIRCULARSLIDER "#65" //0xffff0041 -#define WC_MMPMLAST "#79" //0xffff004f - -#define WS_VISIBLE 0x80000000 -#define WS_DISABLED 0x40000000 -#define WS_CLIPCHILDREN 0x20000000 -#define WS_CLIPSIBLINGS 0x10000000 -#define WS_PARENTCLIP 0x08000000 -#define WS_SAVEBITS 0x04000000 -#define WS_SYNCPAINT 0x02000000 -#define WS_MINIMIZED 0x01000000 -#define WS_MAXIMIZED 0x00800000 -#define WS_ANIMATE 0x00400000 -#define WS_GROUP 0x00010000 -#define WS_TABSTOP 0x00020000 -#define WS_MULTISELECT 0x00040000 - -#define CS_MOVENOTIFY 0x00000001 -#define CS_SIZEREDRAW 0x00000004 -#define CS_HITTEST 0x00000008 -#define CS_PUBLIC 0x00000010 -#define CS_FRAME 0x00000020 -#define CS_CLIPCHILDREN 0x20000000 -#define CS_CLIPSIBLINGS 0x10000000 -#define CS_PARENTCLIP 0x08000000 -#define CS_SAVEBITS 0x04000000 -#define CS_SYNCPAINT 0x02000000 - -#define WM_NULL 0x0000 -#define WM_CREATE 0x0001 -#define WM_DESTROY 0x0002 -#define WM_ENABLE 0x0004 -#define WM_SHOW 0x0005 -#define WM_MOVE 0x0006 -#define WM_SIZE 0x0007 -#define WM_ADJUSTWINDOWPOS 0x0008 -#define WM_CALCVALIDRECTS 0x0009 -#define WM_SETWINDOWPARAMS 0x000a -#define WM_QUERYWINDOWPARAMS 0x000b -#define WM_HITTEST 0x000c -#define WM_ACTIVATE 0x000d -#define WM_SETFOCUS 0x000f -#define WM_SETSELECTION 0x0010 -#define WM_PPAINT 0x0011 -#define WM_PSETFOCUS 0x0012 -#define WM_PSYSCOLORCHANGE 0x0013 -#define WM_PSIZE 0x0014 -#define WM_PACTIVATE 0x0015 -#define WM_PCONTROL 0x0016 -#define WM_COMMAND 0x0020 -#define WM_SYSCOMMAND 0x0021 -#define WM_HELP 0x0022 -#define WM_PAINT 0x0023 -#define WM_TIMER 0x0024 -#define WM_SEM1 0x0025 -#define WM_SEM2 0x0026 -#define WM_SEM3 0x0027 -#define WM_SEM4 0x0028 -#define WM_CLOSE 0x0029 -#define WM_QUIT 0x002a -#define WM_SYSCOLORCHANGE 0x002b -#define WM_SYSVALUECHANGED 0x002d -#define WM_APPTERMINATENOTIFY 0x002e -#define WM_PRESPARAMCHANGED 0x002f -#define WM_CONTROL 0x0030 -#define WM_VSCROLL 0x0031 -#define WM_HSCROLL 0x0032 -#define WM_INITMENU 0x0033 -#define WM_MENUSELECT 0x0034 -#define WM_MENUEND 0x0035 -#define WM_DRAWITEM 0x0036 -#define WM_MEASUREITEM 0x0037 -#define WM_CONTROLPOINTER 0x0038 -#define WM_QUERYDLGCODE 0x003a -#define WM_INITDLG 0x003b -#define WM_SUBSTITUTESTRING 0x003c -#define WM_MATCHMNEMONIC 0x003d -#define WM_SAVEAPPLICATION 0x003e -#define WM_HELPBASE 0x0f00 -#define WM_HELPTOP 0x0fff -#define WM_USER 0x1000 -#define WM_FLASHWINDOW 0x0040 -#define WM_FORMATFRAME 0x0041 -#define WM_UPDATEFRAME 0x0042 -#define WM_FOCUSCHANGE 0x0043 -#define WM_SETBORDERSIZE 0x0044 -#define WM_TRACKFRAME 0x0045 -#define WM_MINMAXFRAME 0x0046 -#define WM_SETICON 0x0047 -#define WM_QUERYICON 0x0048 -#define WM_SETACCELTABLE 0x0049 -#define WM_QUERYACCELTABLE 0x004a -#define WM_TRANSLATEACCEL 0x004b -#define WM_QUERYTRACKINFO 0x004c -#define WM_QUERYBORDERSIZE 0x004d -#define WM_NEXTMENU 0x004e -#define WM_ERASEBACKGROUND 0x004f -#define WM_QUERYFRAMEINFO 0x0050 -#define WM_QUERYFOCUSCHAIN 0x0051 -#define WM_OWNERPOSCHANGE 0x0052 -#define WM_CALCFRAMERECT 0x0053 -#define WM_WINDOWPOSCHANGED 0x0055 -#define WM_ADJUSTFRAMEPOS 0x0056 -#define WM_QUERYFRAMECTLCOUNT 0x0059 -#define WM_QUERYHELPINFO 0x005b -#define WM_SETHELPINFO 0x005c -#define WM_ERROR 0x005d -#define WM_REALIZEPALETTE 0x005e -#define WM_QUERYCONVERTPOS 0x00b0 -#define WM_RENDERFMT 0x0060 -#define WM_RENDERALLFMTS 0x0061 -#define WM_DESTROYCLIPBOARD 0x0062 -#define WM_PAINTCLIPBOARD 0x0063 -#define WM_SIZECLIPBOARD 0x0064 -#define WM_HSCROLLCLIPBOARD 0x0065 -#define WM_VSCROLLCLIPBOARD 0x0066 -#define WM_MOUSEFIRST 0x0070 -#define WM_MOUSEMOVE 0x0070 -#define WM_BUTTONCLICKFIRST 0x0071 -#define WM_BUTTON1DOWN 0x0071 -#define WM_BUTTON1UP 0x0072 -#define WM_BUTTON1DBLCLK 0x0073 -#define WM_BUTTON2DOWN 0x0074 -#define WM_BUTTON2UP 0x0075 -#define WM_BUTTON2DBLCLK 0x0076 -#define WM_BUTTON3DOWN 0x0077 -#define WM_BUTTON3UP 0x0078 -#define WM_BUTTON3DBLCLK 0x0079 -#define WM_BUTTONCLICKLAST 0x0079 -#define WM_MOUSELAST 0x0079 -#define WM_CHAR 0x007a -#define WM_VIOCHAR 0x007b -#define WM_JOURNALNOTIFY 0x007c -#define WM_MOUSEMAP 0x007d -#define WM_VRNDISABLED 0x007e -#define WM_VRNENABLED 0x007f -#define WM_EXTMOUSEFIRST 0x0410 -#define WM_CHORD 0x0410 -#define WM_BUTTON1MOTIONSTART 0x0411 -#define WM_BUTTON1MOTIONEND 0x0412 -#define WM_BUTTON1CLICK 0x0413 -#define WM_BUTTON2MOTIONSTART 0x0414 -#define WM_BUTTON2MOTIONEND 0x0415 -#define WM_BUTTON2CLICK 0x0416 -#define WM_BUTTON3MOTIONSTART 0x0417 -#define WM_BUTTON3MOTIONEND 0x0418 -#define WM_BUTTON3CLICK 0x0419 -#define WM_EXTMOUSELAST 0x0419 -#define WM_MOUSETRANSLATEFIRST 0x0420 -#define WM_BEGINDRAG 0x0420 -#define WM_ENDDRAG 0x0421 -#define WM_SINGLESELECT 0x0422 -#define WM_OPEN 0x0423 -#define WM_CONTEXTMENU 0x0424 -#define WM_CONTEXTHELP 0x0425 -#define WM_TEXTEDIT 0x0426 -#define WM_BEGINSELECT 0x0427 -#define WM_ENDSELECT 0x0428 -#define WM_MOUSETRANSLATELAST 0x0428 -#define WM_PICKUP 0x0429 -#define WM_PENFIRST 0x0481 -#define WM_PENLAST 0x049f -#define WM_MMPMFIRST 0x0500 -#define WM_MMPMLAST 0x05ff -#define WM_BIDI_FIRST 0x0bd0 -#define WM_BIDI_LAST 0x0bff -#define WM_MSGBOXINIT 0x010e -#define WM_MSGBOXDISMISS 0x010f -#define WM_CTLCOLORCHANGE 0x0129 -#define WM_QUERYCTLTYPE 0x0130 /*0x012a?*/ -#define WM_DRAGFIRST 0x0310 -#define WM_DRAGLAST 0x032f - -#define HWND_DESKTOP 1 -#define HWND_OBJECT 2 -#define HWND_TOP 3 -#define HWND_BOTTOM 4 -#define HWND_THREADCAPTURE 5 -#define HWND_PARENT NIL - -#define FCF_TITLEBAR 0x00000001 -#define FCF_SYSMENU 0x00000002 -#define FCF_MENU 0x00000004 -#define FCF_SIZEBORDER 0x00000008 -#define FCF_MINBUTTON 0x00000010 -#define FCF_MAXBUTTON 0x00000020 -#define FCF_MINMAX (FCF_MINBUTTON + FCF_MAXBUTTON) -#define FCF_VERTSCROLL 0x00000040 -#define FCF_HORZSCROLL 0x00000080 -#define FCF_DLGBORDER 0x00000100 -#define FCF_BORDER 0x00000200 -#define FCF_SHELLPOSITION 0x00000400 -#define FCF_TASKLIST 0x00000800 -#define FCF_NOBYTEALIGN 0x00001000 -#define FCF_NOMOVEWITHOWNER 0x00002000 -#define FCF_ICON 0x00004000 -#define FCF_ACCELTABLE 0x00008000 -#define FCF_SYSMODAL 0x00010000 -#define FCF_SCREENALIGN 0x00020000 -#define FCF_MOUSEALIGN 0x00040000 -#define FCF_PALETTE_NORMAL 0x00080000 -#define FCF_PALETTE_HELP 0x00100000 -#define FCF_PALETTE_POPUPODD 0x00200000 -#define FCF_PALETTE_POPUPEVEN 0x00400000 -#define FCF_HIDEBUTTON 0x01000000 -#define FCF_HIDEMAX 0x01000020 -#define FCF_AUTOICON 0x40000000 -#define FCF_DBE_APPSTAT 0x80000000 -#define FCF_STANDARD 0x0000cc3f - -#define MIA_NODISMISS 0x0020 -#define MIA_FRAMED 0x1000 -#define MIA_CHECKED 0x2000 -#define MIA_DISABLED 0x4000 -#define MIA_HILITED 0x8000 -#define MIS_TEXT 0x0001 -#define MIS_BITMAP 0x0002 -#define MIS_SEPARATOR 0x0004 -#define MIS_OWNERDRAW 0x0008 -#define MIS_SUBMENU 0x0010 -#define MIS_MULTMENU 0x0020 -#define MIS_SYSCOMMAND 0x0040 -#define MIS_HELP 0x0080 -#define MIS_STATIC 0x0100 -#define MIS_BUTTONSEPARATOR 0x0200 -#define MIS_BREAK 0x0400 -#define MIS_BREAKSEPARATOR 0x0800 -#define MIS_GROUP 0x1000 -#define MIS_SINGLE 0x2000 -#define MIT_END (-1) -#define MIT_NONE (-1) -#define MIT_MEMERROR (-1) -#define MIT_ERROR (-1) -#define MIT_FIRST (-2) -#define MIT_LAST (-3) - -#define BS_PUSHBUTTON 0 -#define BS_CHECKBOX 1 -#define BS_AUTOCHECKBOX 2 -#define BS_RADIOBUTTON 3 -#define BS_AUTORADIOBUTTON 4 -#define BS_3STATE 5 -#define BS_AUTO3STATE 6 -#define BS_USERBUTTON 7 -#define BS_PRIMARYSTYLES 0x000f -#define BS_TEXT 0x0010 -#define BS_MINIICON 0x0020 -#define BS_BITMAP 0x0040 -#define BS_ICON 0x0080 -#define BS_HELP 0x0100 -#define BS_SYSCOMMAND 0x0200 -#define BS_DEFAULT 0x0400 -#define BS_NOPOINTERFOCUS 0x0800 -#define BS_NOBORDER 0x1000 -#define BS_NOCURSORSELECT 0x2000 -#define BS_AUTOSIZE 0x4000 - -#define MLS_WORDWRAP 0x0001 -#define MLS_BORDER 0x0002 -#define MLS_VSCROLL 0x0004 -#define MLS_HSCROLL 0x0008 -#define MLS_READONLY 0x0010 -#define MLS_IGNORETAB 0x0020 -#define MLS_DISABLEUNDO 0x0040 - -#define ES_LEFT 0x0000 -#define ES_CENTER 0x0001 -#define ES_RIGHT 0x0002 -#define ES_AUTOSCROLL 0x0004 -#define ES_MARGIN 0x0008 -#define ES_AUTOTAB 0x0010 -#define ES_READONLY 0x0020 -#define ES_COMMAND 0x0040 -#define ES_UNREADABLE 0x0080 -#define ES_AUTOSIZE 0x0200 -#define ES_ANY 0x0000 -#define ES_SBCS 0x1000 -#define ES_DBCS 0x2000 -#define ES_MIXED 0x3000 - -#define CMDSRC_OTHER 0 -#define CMDSRC_PUSHBUTTON 1 -#define CMDSRC_MENU 2 -#define CMDSRC_ACCELERATOR 3 -#define CMDSRC_FONTDLG 4 -#define CMDSRC_FILEDLG 5 -#define CMDSRC_PRINTDLG 6 -#define CMDSRC_COLORDLG 7 - - -#define PMERR_INVALID_HWND 0x1001 -#define PMERR_INVALID_HMQ 0x1002 -#define PMERR_PARAMETER_OUT_OF_RANGE 0x1003 -#define PMERR_WINDOW_LOCK_UNDERFLOW 0x1004 -#define PMERR_WINDOW_LOCK_OVERFLOW 0x1005 -#define PMERR_BAD_WINDOW_LOCK_COUNT 0x1006 -#define PMERR_WINDOW_NOT_LOCKED 0x1007 -#define PMERR_INVALID_SELECTOR 0x1008 -#define PMERR_CALL_FROM_WRONG_THREAD 0x1009 -#define PMERR_RESOURCE_NOT_FOUND 0x100a -#define PMERR_INVALID_STRING_PARM 0x100b -#define PMERR_INVALID_HHEAP 0x100c -#define PMERR_INVALID_HEAP_POINTER 0x100d -#define PMERR_INVALID_HEAP_SIZE_PARM 0x100e -#define PMERR_INVALID_HEAP_SIZE 0x100f -#define PMERR_INVALID_HEAP_SIZE_WORD 0x1010 -#define PMERR_HEAP_OUT_OF_MEMORY 0x1011 -#define PMERR_HEAP_MAX_SIZE_REACHED 0x1012 -#define PMERR_INVALID_HATOMTBL 0x1013 -#define PMERR_INVALID_ATOM 0x1014 -#define PMERR_INVALID_ATOM_NAME 0x1015 -#define PMERR_INVALID_INTEGER_ATOM 0x1016 -#define PMERR_ATOM_NAME_NOT_FOUND 0x1017 -#define PMERR_QUEUE_TOO_LARGE 0x1018 -#define PMERR_INVALID_FLAG 0x1019 -#define PMERR_INVALID_HACCEL 0x101a -#define PMERR_INVALID_HPTR 0x101b -#define PMERR_INVALID_HENUM 0x101c -#define PMERR_INVALID_SRC_CODEPAGE 0x101d -#define PMERR_INVALID_DST_CODEPAGE 0x101e -#define PMERR_UNKNOWN_COMPONENT_ID 0x101f -#define PMERR_UNKNOWN_ERROR_CODE 0x1020 -#define PMERR_SEVERITY_LEVELS 0x1021 -#define PMERR_INVALID_RESOURCE_FORMAT 0x1034 -#define PMERR_NO_MSG_QUEUE 0x1036 -#define PMERR_CANNOT_SET_FOCUS 0x1037 -#define PMERR_QUEUE_FULL 0x1038 -#define PMERR_LIBRARY_LOAD_FAILED 0x1039 -#define PMERR_PROCEDURE_LOAD_FAILED 0x103a -#define PMERR_LIBRARY_DELETE_FAILED 0x103b -#define PMERR_PROCEDURE_DELETE_FAILED 0x103c -#define PMERR_ARRAY_TOO_LARGE 0x103d -#define PMERR_ARRAY_TOO_SMALL 0x103e -#define PMERR_DATATYPE_ENTRY_BAD_INDEX 0x103f -#define PMERR_DATATYPE_ENTRY_CTL_BAD 0x1040 -#define PMERR_DATATYPE_ENTRY_CTL_MISS 0x1041 -#define PMERR_DATATYPE_ENTRY_INVALID 0x1042 -#define PMERR_DATATYPE_ENTRY_NOT_NUM 0x1043 -#define PMERR_DATATYPE_ENTRY_NOT_OFF 0x1044 -#define PMERR_DATATYPE_INVALID 0x1045 -#define PMERR_DATATYPE_NOT_UNIQUE 0x1046 -#define PMERR_DATATYPE_TOO_LONG 0x1047 -#define PMERR_DATATYPE_TOO_SMALL 0x1048 -#define PMERR_DIRECTION_INVALID 0x1049 -#define PMERR_INVALID_HAB 0x104a -#define PMERR_INVALID_HSTRUCT 0x104d -#define PMERR_LENGTH_TOO_SMALL 0x104e -#define PMERR_MSGID_TOO_SMALL 0x104f -#define PMERR_NO_HANDLE_ALLOC 0x1050 -#define PMERR_NOT_IN_A_PM_SESSION 0x1051 -#define PMERR_MSG_QUEUE_ALREADY_EXISTS 0x1052 -#define PMERR_SEND_MSG_TIMEOUT 0x1053 -#define PMERROR_SEND_MSG_FAILED 0x1054 -#define PMERR_OLD_RESOURCE 0x1055 -#define PMERR_WPDSERVER_IS_ACTIVE 0x1056 -#define PMERR_WPDSERVER_NOT_STARTED 0x1057 -#define PMERR_SOMDD_IS_ACTIVE 0x1058 -#define PMERR_SOMDD_NOT_STARTED 0x1059 -#define PMERR_BIDI_FIRST 0x10f0 -#define PMERR_BIDI_LAST 0x10ff -#define PMERR_INVALID_PIB 0x1101 -#define PMERR_INSUFF_SPACE_TO_ADD 0x1102 -#define PMERR_INVALID_GROUP_HANDLE 0x1103 -#define PMERR_DUPLICATE_TITLE 0x1104 -#define PMERR_INVALID_TITLE 0x1105 -#define PMERR_HANDLE_NOT_IN_GROUP 0x1107 -#define PMERR_INVALID_TARGET_HANDLE 0x1106 -#define PMERR_INVALID_PATH_STATEMENT 0x1108 -#define PMERR_NO_PROGRAM_FOUND 0x1109 -#define PMERR_INVALID_BUFFER_SIZE 0x110a -#define PMERR_BUFFER_TOO_SMALL 0x110b -#define PMERR_PL_INITIALISATION_FAIL 0x110c -#define PMERR_CANT_DESTROY_SYS_GROUP 0x110d -#define PMERR_INVALID_TYPE_CHANGE 0x110e -#define PMERR_INVALID_PROGRAM_HANDLE 0x110f -#define PMERR_NOT_CURRENT_PL_VERSION 0x1110 -#define PMERR_INVALID_CIRCULAR_REF 0x1111 -#define PMERR_MEMORY_ALLOCATION_ERR 0x1112 -#define PMERR_MEMORY_DEALLOCATION_ERR 0x1113 -#define PMERR_TASK_HEADER_TOO_BIG 0x1114 -#define PMERR_INVALID_INI_FILE_HANDLE 0x1115 -#define PMERR_MEMORY_SHARE 0x1116 -#define PMERR_OPEN_QUEUE 0x1117 -#define PMERR_CREATE_QUEUE 0x1118 -#define PMERR_WRITE_QUEUE 0x1119 -#define PMERR_READ_QUEUE 0x111a -#define PMERR_CALL_NOT_EXECUTED 0x111b -#define PMERR_UNKNOWN_APIPKT 0x111c -#define PMERR_INITHREAD_EXISTS 0x111d -#define PMERR_CREATE_THREAD 0x111e -#define PMERR_NO_HK_PROFILE_INSTALLED 0x111f -#define PMERR_INVALID_DIRECTORY 0x1120 -#define PMERR_WILDCARD_IN_FILENAME 0x1121 -#define PMERR_FILENAME_BUFFER_FULL 0x1122 -#define PMERR_FILENAME_TOO_LONG 0x1123 -#define PMERR_INI_FILE_IS_SYS_OR_USER 0x1124 -#define PMERR_BROADCAST_PLMSG 0x1125 -#define PMERR_190_INIT_DONE 0x1126 -#define PMERR_HMOD_FOR_PMSHAPI 0x1127 -#define PMERR_SET_HK_PROFILE 0x1128 -#define PMERR_API_NOT_ALLOWED 0x1129 -#define PMERR_INI_STILL_OPEN 0x112a -#define PMERR_PROGDETAILS_NOT_IN_INI 0x112b -#define PMERR_PIBSTRUCT_NOT_IN_INI 0x112c -#define PMERR_INVALID_DISKPROGDETAILS 0x112d -#define PMERR_PROGDETAILS_READ_FAILURE 0x112e -#define PMERR_PROGDETAILS_WRITE_FAILURE 0x112f -#define PMERR_PROGDETAILS_QSIZE_FAILURE 0x1130 -#define PMERR_INVALID_PROGDETAILS 0x1131 -#define PMERR_SHEPROFILEHOOK_NOT_FOUND 0x1132 -#define PMERR_190PLCONVERTED 0x1133 -#define PMERR_FAILED_TO_CONVERT_INI_PL 0x1134 -#define PMERR_PMSHAPI_NOT_INITIALISED 0x1135 -#define PMERR_INVALID_SHELL_API_HOOK_ID 0x1136 -#define PMERR_DOS_ERROR 0x1200 -#define PMERR_NO_SPACE 0x1201 -#define PMERR_INVALID_SWITCH_HANDLE 0x1202 -#define PMERR_NO_HANDLE 0x1203 -#define PMERR_INVALID_PROCESS_ID 0x1204 -#define PMERR_NOT_SHELL 0x1205 -#define PMERR_INVALID_WINDOW 0x1206 -#define PMERR_INVALID_POST_MSG 0x1207 -#define PMERR_INVALID_PARAMETERS 0x1208 -#define PMERR_INVALID_PROGRAM_TYPE 0x1209 -#define PMERR_NOT_EXTENDED_FOCUS 0x120a -#define PMERR_INVALID_SESSION_ID 0x120b -#define PMERR_SMG_INVALID_ICON_FILE 0x120c -#define PMERR_SMG_ICON_NOT_CREATED 0x120d -#define PMERR_SHL_DEBUG 0x120e -#define PMERR_OPENING_INI_FILE 0x1301 -#define PMERR_INI_FILE_CORRUPT 0x1302 -#define PMERR_INVALID_PARM 0x1303 -#define PMERR_NOT_IN_IDX 0x1304 -#define PMERR_NO_ENTRIES_IN_GROUP 0x1305 -#define PMERR_INI_WRITE_FAIL 0x1306 -#define PMERR_IDX_FULL 0x1307 -#define PMERR_INI_PROTECTED 0x1308 -#define PMERR_MEMORY_ALLOC 0x1309 -#define PMERR_INI_INIT_ALREADY_DONE 0x130a -#define PMERR_INVALID_INTEGER 0x130b -#define PMERR_INVALID_ASCIIZ 0x130c -#define PMERR_CAN_NOT_CALL_SPOOLER 0x130d -#define PMERR_VALIDATION_REJECTED 0x130d /*!*/ -#define PMERR_WARNING_WINDOW_NOT_KILLED 0x1401 -#define PMERR_ERROR_INVALID_WINDOW 0x1402 -#define PMERR_ALREADY_INITIALIZED 0x1403 -#define PMERR_MSG_PROG_NO_MOU 0x1405 -#define PMERR_MSG_PROG_NON_RECOV 0x1406 -#define PMERR_WINCONV_INVALID_PATH 0x1407 -#define PMERR_PI_NOT_INITIALISED 0x1408 -#define PMERR_PL_NOT_INITIALISED 0x1409 -#define PMERR_NO_TASK_MANAGER 0x140a -#define PMERR_SAVE_NOT_IN_PROGRESS 0x140b -#define PMERR_NO_STACK_SPACE 0x140c -#define PMERR_INVALID_COLR_FIELD 0x140d -#define PMERR_INVALID_COLR_VALUE 0x140e -#define PMERR_COLR_WRITE 0x140f -#define PMERR_TARGET_FILE_EXISTS 0x1501 -#define PMERR_SOURCE_SAME_AS_TARGET 0x1502 -#define PMERR_SOURCE_FILE_NOT_FOUND 0x1503 -#define PMERR_INVALID_NEW_PATH 0x1504 -#define PMERR_TARGET_FILE_NOT_FOUND 0x1505 -#define PMERR_INVALID_DRIVE_NUMBER 0x1506 -#define PMERR_NAME_TOO_LONG 0x1507 -#define PMERR_NOT_ENOUGH_ROOM_ON_DISK 0x1508 -#define PMERR_NOT_ENOUGH_MEM 0x1509 -#define PMERR_LOG_DRV_DOES_NOT_EXIST 0x150b -#define PMERR_INVALID_DRIVE 0x150c -#define PMERR_ACCESS_DENIED 0x150d -#define PMERR_NO_FIRST_SLASH 0x150e -#define PMERR_READ_ONLY_FILE 0x150f -#define PMERR_GROUP_PROTECTED 0x151f -#define PMERR_INVALID_PROGRAM_CATEGORY 0x152f -#define PMERR_INVALID_APPL 0x1530 -#define PMERR_CANNOT_START 0x1531 -#define PMERR_STARTED_IN_BACKGROUND 0x1532 -#define PMERR_INVALID_HAPP 0x1533 -#define PMERR_CANNOT_STOP 0x1534 -#define PMERR_INVALID_FREE_MESSAGE_ID 0x1630 -#define PMERR_FUNCTION_NOT_SUPPORTED 0x1641 -#define PMERR_INVALID_ARRAY_COUNT 0x1642 -#define PMERR_INVALID_LENGTH 0x1643 -#define PMERR_INVALID_BUNDLE_TYPE 0x1644 -#define PMERR_INVALID_PARAMETER 0x1645 -#define PMERR_INVALID_NUMBER_OF_PARMS 0x1646 -#define PMERR_GREATER_THAN_64K 0x1647 -#define PMERR_INVALID_PARAMETER_TYPE 0x1648 -#define PMERR_NEGATIVE_STRCOND_DIM 0x1649 -#define PMERR_INVALID_NUMBER_OF_TYPES 0x164a -#define PMERR_INCORRECT_HSTRUCT 0x164b -#define PMERR_INVALID_ARRAY_SIZE 0x164c -#define PMERR_INVALID_CONTROL_DATATYPE 0x164d -#define PMERR_INCOMPLETE_CONTROL_SEQU 0x164e -#define PMERR_INVALID_DATATYPE 0x164f -#define PMERR_INCORRECT_DATATYPE 0x1650 -#define PMERR_NOT_SELF_DESCRIBING_DTYP 0x1651 -#define PMERR_INVALID_CTRL_SEQ_INDEX 0x1652 -#define PMERR_INVALID_TYPE_FOR_LENGTH 0x1653 -#define PMERR_INVALID_TYPE_FOR_OFFSET 0x1654 -#define PMERR_INVALID_TYPE_FOR_MPARAM 0x1655 -#define PMERR_INVALID_MESSAGE_ID 0x1656 -#define PMERR_C_LENGTH_TOO_SMALL 0x1657 -#define PMERR_APPL_STRUCTURE_TOO_SMALL 0x1658 -#define PMERR_INVALID_ERRORINFO_HANDLE 0x1659 -#define PMERR_INVALID_CHARACTER_INDEX 0x165a -#define PMERR_OK 0x0000 -#define PMERR_ALREADY_IN_AREA 0x2001 -#define PMERR_ALREADY_IN_ELEMENT 0x2002 -#define PMERR_ALREADY_IN_PATH 0x2003 -#define PMERR_ALREADY_IN_SEG 0x2004 -#define PMERR_AREA_INCOMPLETE 0x2005 -#define PMERR_BASE_ERROR 0x2006 -#define PMERR_BITBLT_LENGTH_EXCEEDED 0x2007 -#define PMERR_BITMAP_IN_USE 0x2008 -#define PMERR_BITMAP_IS_SELECTED 0x2009 -#define PMERR_BITMAP_NOT_FOUND 0x200a -#define PMERR_BITMAP_NOT_SELECTED 0x200b -#define PMERR_BOUNDS_OVERFLOW 0x200c -#define PMERR_CALLED_SEG_IS_CHAINED 0x200d -#define PMERR_CALLED_SEG_IS_CURRENT 0x200e -#define PMERR_CALLED_SEG_NOT_FOUND 0x200f -#define PMERR_CANNOT_DELETE_ALL_DATA 0x2010 -#define PMERR_CANNOT_REPLACE_ELEMENT_0 0x2011 -#define PMERR_COL_TABLE_NOT_REALIZABLE 0x2012 -#define PMERR_COL_TABLE_NOT_REALIZED 0x2013 -#define PMERR_COORDINATE_OVERFLOW 0x2014 -#define PMERR_CORR_FORMAT_MISMATCH 0x2015 -#define PMERR_DATA_TOO_LONG 0x2016 -#define PMERR_DC_IS_ASSOCIATED 0x2017 -#define PMERR_DESC_STRING_TRUNCATED 0x2018 -#define PMERR_DEVICE_DRIVER_ERROR_1 0x2019 -#define PMERR_DEVICE_DRIVER_ERROR_2 0x201a -#define PMERR_DEVICE_DRIVER_ERROR_3 0x201b -#define PMERR_DEVICE_DRIVER_ERROR_4 0x201c -#define PMERR_DEVICE_DRIVER_ERROR_5 0x201d -#define PMERR_DEVICE_DRIVER_ERROR_6 0x201e -#define PMERR_DEVICE_DRIVER_ERROR_7 0x201f -#define PMERR_DEVICE_DRIVER_ERROR_8 0x2020 -#define PMERR_DEVICE_DRIVER_ERROR_9 0x2021 -#define PMERR_DEVICE_DRIVER_ERROR_10 0x2022 -#define PMERR_DEV_FUNC_NOT_INSTALLED 0x2023 -#define PMERR_DOSOPEN_FAILURE 0x2024 -#define PMERR_DOSREAD_FAILURE 0x2025 -#define PMERR_DRIVER_NOT_FOUND 0x2026 -#define PMERR_DUP_SEG 0x2027 -#define PMERR_DYNAMIC_SEG_SEQ_ERROR 0x2028 -#define PMERR_DYNAMIC_SEG_ZERO_INV 0x2029 -#define PMERR_ELEMENT_INCOMPLETE 0x202a -#define PMERR_ESC_CODE_NOT_SUPPORTED 0x202b -#define PMERR_EXCEEDS_MAX_SEG_LENGTH 0x202c -#define PMERR_FONT_AND_MODE_MISMATCH 0x202d -#define PMERR_FONT_FILE_NOT_LOADED 0x202e -#define PMERR_FONT_NOT_LOADED 0x202f -#define PMERR_FONT_TOO_BIG 0x2030 -#define PMERR_HARDWARE_INIT_FAILURE 0x2031 -#define PMERR_HBITMAP_BUSY 0x2032 -#define PMERR_HDC_BUSY 0x2033 -#define PMERR_HRGN_BUSY 0x2034 -#define PMERR_HUGE_FONTS_NOT_SUPPORTED 0x2035 -#define PMERR_ID_HAS_NO_BITMAP 0x2036 -#define PMERR_IMAGE_INCOMPLETE 0x2037 -#define PMERR_INCOMPAT_COLOR_FORMAT 0x2038 -#define PMERR_INCOMPAT_COLOR_OPTIONS 0x2039 -#define PMERR_INCOMPATIBLE_BITMAP 0x203a -#define PMERR_INCOMPATIBLE_METAFILE 0x203b -#define PMERR_INCORRECT_DC_TYPE 0x203c -#define PMERR_INSUFFICIENT_DISK_SPACE 0x203d -#define PMERR_INSUFFICIENT_MEMORY 0x203e -#define PMERR_INV_ANGLE_PARM 0x203f -#define PMERR_INV_ARC_CONTROL 0x2040 -#define PMERR_INV_AREA_CONTROL 0x2041 -#define PMERR_INV_ARC_POINTS 0x2042 -#define PMERR_INV_ATTR_MODE 0x2043 -#define PMERR_INV_BACKGROUND_COL_ATTR 0x2044 -#define PMERR_INV_BACKGROUND_MIX_ATTR 0x2045 -#define PMERR_INV_BITBLT_MIX 0x2046 -#define PMERR_INV_BITBLT_STYLE 0x2047 -#define PMERR_INV_BITMAP_DIMENSION 0x2048 -#define PMERR_INV_BOX_CONTROL 0x2049 -#define PMERR_INV_BOX_ROUNDING_PARM 0x204a -#define PMERR_INV_CHAR_ANGLE_ATTR 0x204b -#define PMERR_INV_CHAR_DIRECTION_ATTR 0x204c -#define PMERR_INV_CHAR_MODE_ATTR 0x204d -#define PMERR_INV_CHAR_POS_OPTIONS 0x204e -#define PMERR_INV_CHAR_SET_ATTR 0x204f -#define PMERR_INV_CHAR_SHEAR_ATTR 0x2050 -#define PMERR_INV_CLIP_PATH_OPTIONS 0x2051 -#define PMERR_INV_CODEPAGE 0x2052 -#define PMERR_INV_COLOR_ATTR 0x2053 -#define PMERR_INV_COLOR_DATA 0x2054 -#define PMERR_INV_COLOR_FORMAT 0x2055 -#define PMERR_INV_COLOR_INDEX 0x2056 -#define PMERR_INV_COLOR_OPTIONS 0x2057 -#define PMERR_INV_COLOR_START_INDEX 0x2058 -#define PMERR_INV_COORD_OFFSET 0x2059 -#define PMERR_INV_COORD_SPACE 0x205a -#define PMERR_INV_COORDINATE 0x205b -#define PMERR_INV_CORRELATE_DEPTH 0x205c -#define PMERR_INV_CORRELATE_TYPE 0x205d -#define PMERR_INV_CURSOR_BITMAP 0x205e -#define PMERR_INV_DC_DATA 0x205f -#define PMERR_INV_DC_TYPE 0x2060 -#define PMERR_INV_DEVICE_NAME 0x2061 -#define PMERR_INV_DEV_MODES_OPTIONS 0x2062 -#define PMERR_INV_DRAW_CONTROL 0x2063 -#define PMERR_INV_DRAW_VALUE 0x2064 -#define PMERR_INV_DRAWING_MODE 0x2065 -#define PMERR_INV_DRIVER_DATA 0x2066 -#define PMERR_INV_DRIVER_NAME 0x2067 -#define PMERR_INV_DRAW_BORDER_OPTION 0x2068 -#define PMERR_INV_EDIT_MODE 0x2069 -#define PMERR_INV_ELEMENT_OFFSET 0x206a -#define PMERR_INV_ELEMENT_POINTER 0x206b -#define PMERR_INV_END_PATH_OPTIONS 0x206c -#define PMERR_INV_ESC_CODE 0x206d -#define PMERR_INV_ESCAPE_DATA 0x206e -#define PMERR_INV_EXTENDED_LCID 0x206f -#define PMERR_INV_FILL_PATH_OPTIONS 0x2070 -#define PMERR_INV_FIRST_CHAR 0x2071 -#define PMERR_INV_FONT_ATTRS 0x2072 -#define PMERR_INV_FONT_FILE_DATA 0x2073 -#define PMERR_INV_FOR_THIS_DC_TYPE 0x2074 -#define PMERR_INV_FORMAT_CONTROL 0x2075 -#define PMERR_INV_FORMS_CODE 0x2076 -#define PMERR_INV_FONTDEF 0x2077 -#define PMERR_INV_GEOM_LINE_WIDTH_ATTR 0x2078 -#define PMERR_INV_GETDATA_CONTROL 0x2079 -#define PMERR_INV_GRAPHICS_FIELD 0x207a -#define PMERR_INV_HBITMAP 0x207b -#define PMERR_INV_HDC 0x207c -#define PMERR_INV_HJOURNAL 0x207d -#define PMERR_INV_HMF 0x207e -#define PMERR_INV_HPS 0x207f -#define PMERR_INV_HRGN 0x2080 -#define PMERR_INV_ID 0x2081 -#define PMERR_INV_IMAGE_DATA_LENGTH 0x2082 -#define PMERR_INV_IMAGE_DIMENSION 0x2083 -#define PMERR_INV_IMAGE_FORMAT 0x2084 -#define PMERR_INV_IN_AREA 0x2085 -#define PMERR_INV_IN_CALLED_SEG 0x2086 -#define PMERR_INV_IN_CURRENT_EDIT_MODE 0x2087 -#define PMERR_INV_IN_DRAW_MODE 0x2088 -#define PMERR_INV_IN_ELEMENT 0x2089 -#define PMERR_INV_IN_IMAGE 0x208a -#define PMERR_INV_IN_PATH 0x208b -#define PMERR_INV_IN_RETAIN_MODE 0x208c -#define PMERR_INV_IN_SEG 0x208d -#define PMERR_INV_IN_VECTOR_SYMBOL 0x208e -#define PMERR_INV_INFO_TABLE 0x208f -#define PMERR_INV_JOURNAL_OPTION 0x2090 -#define PMERR_INV_KERNING_FLAGS 0x2091 -#define PMERR_INV_LENGTH_OR_COUNT 0x2092 -#define PMERR_INV_LINE_END_ATTR 0x2093 -#define PMERR_INV_LINE_JOIN_ATTR 0x2094 -#define PMERR_INV_LINE_TYPE_ATTR 0x2095 -#define PMERR_INV_LINE_WIDTH_ATTR 0x2096 -#define PMERR_INV_LOGICAL_ADDRESS 0x2097 -#define PMERR_INV_MARKER_BOX_ATTR 0x2098 -#define PMERR_INV_MARKER_SET_ATTR 0x2099 -#define PMERR_INV_MARKER_SYMBOL_ATTR 0x209a -#define PMERR_INV_MATRIX_ELEMENT 0x209b -#define PMERR_INV_MAX_HITS 0x209c -#define PMERR_INV_METAFILE 0x209d -#define PMERR_INV_METAFILE_LENGTH 0x209e -#define PMERR_INV_METAFILE_OFFSET 0x209f -#define PMERR_INV_MICROPS_DRAW_CONTROL 0x20a0 -#define PMERR_INV_MICROPS_FUNCTION 0x20a1 -#define PMERR_INV_MICROPS_ORDER 0x20a2 -#define PMERR_INV_MIX_ATTR 0x20a3 -#define PMERR_INV_MODE_FOR_OPEN_DYN 0x20a4 -#define PMERR_INV_MODE_FOR_REOPEN_SEG 0x20a5 -#define PMERR_INV_MODIFY_PATH_MODE 0x20a6 -#define PMERR_INV_MULTIPLIER 0x20a7 -#define PMERR_INV_NESTED_FIGURES 0x20a8 -#define PMERR_INV_OR_INCOMPAT_OPTIONS 0x20a9 -#define PMERR_INV_ORDER_LENGTH 0x20aa -#define PMERR_INV_ORDERING_PARM 0x20ab -#define PMERR_INV_OUTSIDE_DRAW_MODE 0x20ac -#define PMERR_INV_PAGE_VIEWPORT 0x20ad -#define PMERR_INV_PATH_ID 0x20ae -#define PMERR_INV_PATH_MODE 0x20af -#define PMERR_INV_PATTERN_ATTR 0x20b0 -#define PMERR_INV_PATTERN_REF_PT_ATTR 0x20b1 -#define PMERR_INV_PATTERN_SET_ATTR 0x20b2 -#define PMERR_INV_PATTERN_SET_FONT 0x20b3 -#define PMERR_INV_PICK_APERTURE_OPTION 0x20b4 -#define PMERR_INV_PICK_APERTURE_POSN 0x20b5 -#define PMERR_INV_PICK_APERTURE_SIZE 0x20b6 -#define PMERR_INV_PICK_NUMBER 0x20b7 -#define PMERR_INV_PLAY_METAFILE_OPTION 0x20b8 -#define PMERR_INV_PRIMITIVE_TYPE 0x20b9 -#define PMERR_INV_PS_SIZE 0x20ba -#define PMERR_INV_PUTDATA_FORMAT 0x20bb -#define PMERR_INV_QUERY_ELEMENT_NO 0x20bc -#define PMERR_INV_RECT 0x20bd -#define PMERR_INV_REGION_CONTROL 0x20be -#define PMERR_INV_REGION_MIX_MODE 0x20bf -#define PMERR_INV_REPLACE_MODE_FUNC 0x20c0 -#define PMERR_INV_RESERVED_FIELD 0x20c1 -#define PMERR_INV_RESET_OPTIONS 0x20c2 -#define PMERR_INV_RGBCOLOR 0x20c3 -#define PMERR_INV_SCAN_START 0x20c4 -#define PMERR_INV_SEG_ATTR 0x20c5 -#define PMERR_INV_SEG_ATTR_VALUE 0x20c6 -#define PMERR_INV_SEG_CH_LENGTH 0x20c7 -#define PMERR_INV_SEG_NAME 0x20c8 -#define PMERR_INV_SEG_OFFSET 0x20c9 -#define PMERR_INV_SETID 0x20ca -#define PMERR_INV_SETID_TYPE 0x20cb -#define PMERR_INV_SET_VIEWPORT_OPTION 0x20cc -#define PMERR_INV_SHARPNESS_PARM 0x20cd -#define PMERR_INV_SOURCE_OFFSET 0x20ce -#define PMERR_INV_STOP_DRAW_VALUE 0x20cf -#define PMERR_INV_TRANSFORM_TYPE 0x20d0 -#define PMERR_INV_USAGE_PARM 0x20d1 -#define PMERR_INV_VIEWING_LIMITS 0x20d2 -#define PMERR_JFILE_BUSY 0x20d3 -#define PMERR_JNL_FUNC_DATA_TOO_LONG 0x20d4 -#define PMERR_KERNING_NOT_SUPPORTED 0x20d5 -#define PMERR_LABEL_NOT_FOUND 0x20d6 -#define PMERR_MATRIX_OVERFLOW 0x20d7 -#define PMERR_METAFILE_INTERNAL_ERROR 0x20d8 -#define PMERR_METAFILE_IN_USE 0x20d9 -#define PMERR_METAFILE_LIMIT_EXCEEDED 0x20da -#define PMERR_NAME_STACK_FULL 0x20db -#define PMERR_NOT_CREATED_BY_DEVOPENDC 0x20dc -#define PMERR_NOT_IN_AREA 0x20dd -#define PMERR_NOT_IN_DRAW_MODE 0x20de -#define PMERR_NOT_IN_ELEMENT 0x20df -#define PMERR_NOT_IN_IMAGE 0x20e0 -#define PMERR_NOT_IN_PATH 0x20e1 -#define PMERR_NOT_IN_RETAIN_MODE 0x20e2 -#define PMERR_NOT_IN_SEG 0x20e3 -#define PMERR_NO_BITMAP_SELECTED 0x20e4 -#define PMERR_NO_CURRENT_ELEMENT 0x20e5 -#define PMERR_NO_CURRENT_SEG 0x20e6 -#define PMERR_NO_METAFILE_RECORD_HANDLE 0x20e7 -#define PMERR_ORDER_TOO_BIG 0x20e8 -#define PMERR_OTHER_SET_ID_REFS 0x20e9 -#define PMERR_OVERRAN_SEG 0x20ea -#define PMERR_OWN_SET_ID_REFS 0x20eb -#define PMERR_PATH_INCOMPLETE 0x20ec -#define PMERR_PATH_LIMIT_EXCEEDED 0x20ed -#define PMERR_PATH_UNKNOWN 0x20ee -#define PMERR_PEL_IS_CLIPPED 0x20ef -#define PMERR_PEL_NOT_AVAILABLE 0x20f0 -#define PMERR_PRIMITIVE_STACK_EMPTY 0x20f1 -#define PMERR_PROLOG_ERROR 0x20f2 -#define PMERR_PROLOG_SEG_ATTR_NOT_SET 0x20f3 -#define PMERR_PS_BUSY 0x20f4 -#define PMERR_PS_IS_ASSOCIATED 0x20f5 -#define PMERR_RAM_JNL_FILE_TOO_SMALL 0x20f6 -#define PMERR_REALIZE_NOT_SUPPORTED 0x20f7 -#define PMERR_REGION_IS_CLIP_REGION 0x20f8 -#define PMERR_RESOURCE_DEPLETION 0x20f9 -#define PMERR_SEG_AND_REFSEG_ARE_SAME 0x20fa -#define PMERR_SEG_CALL_RECURSIVE 0x20fb -#define PMERR_SEG_CALL_STACK_EMPTY 0x20fc -#define PMERR_SEG_CALL_STACK_FULL 0x20fd -#define PMERR_SEG_IS_CURRENT 0x20fe -#define PMERR_SEG_NOT_CHAINED 0x20ff -#define PMERR_SEG_NOT_FOUND 0x2100 -#define PMERR_SEG_STORE_LIMIT_EXCEEDED 0x2101 -#define PMERR_SETID_IN_USE 0x2102 -#define PMERR_SETID_NOT_FOUND 0x2103 -#define PMERR_STARTDOC_NOT_ISSUED 0x2104 -#define PMERR_STOP_DRAW_OCCURRED 0x2105 -#define PMERR_TOO_MANY_METAFILES_IN_USE 0x2106 -#define PMERR_TRUNCATED_ORDER 0x2107 -#define PMERR_UNCHAINED_SEG_ZERO_INV 0x2108 -#define PMERR_UNSUPPORTED_ATTR 0x2109 -#define PMERR_UNSUPPORTED_ATTR_VALUE 0x210a -#define PMERR_ENDDOC_NOT_ISSUED 0x210b -#define PMERR_PS_NOT_ASSOCIATED 0x210c -#define PMERR_INV_FLOOD_FILL_OPTIONS 0x210d -#define PMERR_INV_FACENAME 0x210e -#define PMERR_PALETTE_SELECTED 0x210f -#define PMERR_NO_PALETTE_SELECTED 0x2110 -#define PMERR_INV_HPAL 0x2111 -#define PMERR_PALETTE_BUSY 0x2112 -#define PMERR_START_POINT_CLIPPED 0x2113 -#define PMERR_NO_FILL 0x2114 -#define PMERR_INV_FACENAMEDESC 0x2115 -#define PMERR_INV_BITMAP_DATA 0x2116 -#define PMERR_INV_CHAR_ALIGN_ATTR 0x2117 -#define PMERR_INV_HFONT 0x2118 -#define PMERR_HFONT_IS_SELECTED 0x2119 -#define PMERR_DRVR_NOT_SUPPORTED 0x2120 -#define PMERR_INV_INKPS_FUNCTION 0x2121 - diff --git a/harbour/examples/hbgf/hbgfos2/tform.prg b/harbour/examples/hbgf/hbgfos2/tform.prg deleted file mode 100644 index ca19932159..0000000000 --- a/harbour/examples/hbgf/hbgfos2/tform.prg +++ /dev/null @@ -1,236 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour GUI framework for IBM OS/2 Presentation Manager - * - * Copyright 2001 Antonio Linares - * Copyright 2001 Maurilio Longo - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - - - -#include "common.ch" -#include "hbclass.ch" -#include "os2pm.ch" // Needed to store some OS/2 PM constant values - - -// Windows compatibility Message redefinition -#define WM_LBUTTONDOWN WM_BUTTON1DOWN - - -static aForms := {} - - -CLASS HBForm FROM HBWinControl - - DATA oMainMenu - DATA OnClick PROPERTY - DATA aControls PROPERTY - - CLASSDATA lRegistered - - METHOD New() - METHOD Close() INLINE SendMessage( ::hWnd, WM_CLOSE ) - METHOD Command( nNotifyCode, nId, hWndCtl ) - METHOD HandleEvent( nMsg, nParam1, nParam2 ) - METHOD InsertControl( oControl ) - METHOD LButtonDown( nKeyFlags, nXPos, nYPos ) - METHOD ShowModal() - - ACCESS Menu() INLINE ::oMainMenu PROPERTY - ASSIGN Menu( oNewMenu ) - -ENDCLASS - - -METHOD New() CLASS HBForm - - local hWC - - DEFAULT ::lRegistered TO .f. - - - if ! ::lRegistered - // Notice that this code may be moved to a method Register() - // so we hide again the OS API details - WinRegisterClass("HB_HBForm", CS_SIZEREDRAW, 0, 0 ) - ::lRegistered := .t. - endif - - // Again this code may be moved to a method Create() to hide the - // OS API details - ::hWnd := WinCreateStdWindow( HWND_DESKTOP,; - WS_VISIBLE,; - (FCF_TITLEBAR + FCF_SYSMENU +; - FCF_SIZEBORDER + FCF_TASKLIST +; - FCF_MINMAX + FCF_SHELLPOSITION ),; - "HB_HBForm", "Harbour HBForm",; - (WS_SYNCPAINT + WS_VISIBLE ),,,; - @hWC ) - - ::hWndClient := hWC - - AAdd(aForms, Self) -return Self - - -METHOD Command( nNotifyCode, nId, hWndCtl ) CLASS HBForm - - local oMenuItem, nAt, oControl - - HB_SYMBOL_UNUSED( hWndCtl ) - - do case - case nNotifyCode == CMDSRC_MENU // Menu command - if ::Menu != nil - if ( oMenuItem := ::Menu:FindItem( nId ) ) != nil - if oMenuItem:OnClick != nil - __ObjSendMsg( Self, oMenuItem:OnClick, oMenuItem ) - endif - endif - endif - - case nNotifyCode == CMDSRC_PUSHBUTTON - nAt := AScan( ::aControls, { | o | o:nId == nId } ) - if nAt != 0 - oControl := ::aControls[ nAt ] - if oControl:OnClick != nil - __ObjSendMsg( Self, oControl:OnClick, oControl ) - endif - endif - - otherwise - endcase - -return nil - - -METHOD InsertControl( oControl ) CLASS HBForm - - DEFAULT ::aControls TO {} - - AAdd( ::aControls, oControl ) - oControl:Show() - -return nil - - -METHOD LButtonDown( nKeyFlags, nXPos, nYPos ) CLASS HBForm - - HB_SYMBOL_UNUSED( nKeyFlags ) - - if ::OnClick != nil - return __ObjSendMsg( Self, ::OnClick, Self, nXPos, nYPos ) - endif - -return nil - - -METHOD HandleEvent( nMsg, nParam1, nParam2 ) CLASS HBForm - - do case - case nMsg == WM_COMMAND - /* - param1 - USHORT uscmd // Command value. - param2 - USHORT ussource // Source type. - USHORT uspointer // Pointer-device indicator. - returns - ULONG ulReserved // Reserved value, should be 0. - */ - ::Command( nLoWord( nParam2 ), nLoWord( nParam1 ), nil ) - return 0 - - case nMsg == WM_LBUTTONDOWN - /* - param1 - POINTS ptspointerpos // Pointer position. - param2 - USHORT fsHitTestres // Hit-test result. - USHORT fsflags // Keyboard control codes. - returns - BOOL rc // Processed indicator. - */ - return ::LButtonDown( nHiWord(nParam2), nLoWord( nParam1 ), nHiWord( nParam1 ) ) - - case nMsg == WM_DESTROY - PostQuitMessage( 0 ) - return 0 - endcase - -return nil - -METHOD ShowModal() CLASS HBForm - - HB_FormShowModal(::hWnd) - -return nil - - -ASSIGN Menu( oNewMenu ) CLASS HBForm - - ::oMainMenu := oNewMenu - - WinSetParent( oNewMenu:nHandle, ::hWnd, .t. ) - WinSetOwner( oNewMenu:nHandle, ::hWnd ) - WinSendMsg( ::hWnd, WM_UPDATEFRAME, FCF_MENU, 0 ) - -return nil - - -function HB_GUI( hWnd, nMsg, nParam1, nParam2 ) // messages entry point - - static aReturn := { nil, nil } - - local nForm := AScan( aForms, { | oForm | oForm:hWndClient == hWnd } ) - - if nForm != 0 - aReturn[ 1 ] := aForms[ nForm ]:HandleEvent( nMsg, nParam1, nParam2 ) - endif - -return aReturn diff --git a/harbour/examples/hbgf/hbgfos2/tmenu.prg b/harbour/examples/hbgf/hbgfos2/tmenu.prg deleted file mode 100644 index 134adb4c29..0000000000 --- a/harbour/examples/hbgf/hbgfos2/tmenu.prg +++ /dev/null @@ -1,109 +0,0 @@ -/* - * $Id$ - */ - - -/* - * Harbour Project source code: - * Harbour GUI framework for IBM OS/2 Presentation Manager - * - * Copyright 2001 Antonio Linares - * Copyright 2001 Maurilio Longo - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - - -#include "hbclass.ch" -#include "os2pm.ch" - - -CLASS HBMenu FROM HBPersistent - - DATA nHandle // Handle of MIS_ACTIONBAR - DATA Items PROPERTY // Items inside this menu - - METHOD New(oForm) - METHOD Add(oMenuItem) - METHOD FindItem( nId ) // Searches for a sub menuitem given its id - -ENDCLASS - - -METHOD New( oForm ) CLASS HBMenu - - ::Items := {} - - if oForm != nil - ::nHandle := WinCreateMenu( oForm:hWnd ) - endif - -return Self - - -METHOD Add( oMenuItem ) CLASS HBMenu - - WinAddMenuItem( ::nHandle, oMenuItem:Caption, MIT_END,; - nil, oMenuItem:nId, oMenuItem:Enabled ) - - AAdd( ::Items, oMenuItem ) - -return nil - - -METHOD FindItem( nId ) CLASS HBMenu - - local oMenuItem, n - - for n := 1 to Len( ::Items ) - if ( oMenuItem := ::Items[ n ] ):nId == nId - return oMenuItem - else - if oMenuItem:Items != nil - if ( oMenuItem := oMenuItem:FindItem( nId ) ) != nil - return oMenuItem - endif - endif - endif - next - -return oMenuItem diff --git a/harbour/examples/hbgf/hbgfos2/tmenuit.prg b/harbour/examples/hbgf/hbgfos2/tmenuit.prg deleted file mode 100644 index 43f41357bd..0000000000 --- a/harbour/examples/hbgf/hbgfos2/tmenuit.prg +++ /dev/null @@ -1,128 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour GUI framework for IBM OS/2 Presentation Manager - * - * Copyright 2001 Antonio Linares - * Copyright 2001 Maurilio Longo - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - - -#include "common.ch" -#include "hbclass.ch" -#include "os2pm.ch" - - -CLASS HGFMenuItem FROM HBPersistent - - DATA Caption PROPERTY // Specifies the text of the menu item - DATA Name PROPERTY // The name of this component - DATA OnClick PROPERTY // A character description of the method to invoke - DATA Enabled PROPERTY // Specifies whether the menu item is enabled - DATA Items PROPERTY // Contains the menu items in the submenu of the menu item - - DATA nId // Command value to send to the container form - DATA oParent // Identifies the parent menu item of this menu item - DATA nHandle // The handle of the submenu of this menu item - - CLASSDATA nIdStart // start value for commands value to assign to menu items - - METHOD New( oOwner ) // Creates a new menu item - METHOD Add( oMenuItem ) // Adds a new drop down menu item - METHOD FindItem( nId ) // Searches for a sub menuitem given its id - -ENDCLASS - - -METHOD New( oOwner ) CLASS HGFMenuItem - - DEFAULT ::nIdStart TO 110 - - ::Caption := "" - ::nId := ::nIdStart++ - ::Enabled := .t. - ::oParent := oOwner - ::nHandle := nil - -return Self - - -METHOD Add( oMenuItem ) CLASS HGFMenuItem - - DEFAULT ::Items TO {} - - if ::nHandle == nil - ::nHandle := WinCreateMenu( ::oParent:nHandle ) - WinMakeSubMenuItem(::oParent:nHandle, ::nId, ::nHandle) - - endif - - WinAddMenuItem(::nHandle, oMenuItem:Caption, MIT_END,; - nil, oMenuItem:nId, oMenuItem:Enabled ) - - AAdd( ::Items, oMenuItem ) - -return nil - - -METHOD FindItem( nId ) CLASS HGFMenuItem - - local oMenuItem, n - - for n := 1 to Len( ::Items ) - if ( oMenuItem := ::Items[ n ] ):nId == nId - return oMenuItem - else - if oMenuItem:Items != nil - if ( oMenuItem := oMenuItem:FindItem( nId ) ) != nil - return oMenuItem - endif - endif - endif - next - -return oMenuItem diff --git a/harbour/examples/hbgf/hbgfos2/winctrl.prg b/harbour/examples/hbgf/hbgfos2/winctrl.prg deleted file mode 100644 index 70e8d06873..0000000000 --- a/harbour/examples/hbgf/hbgfos2/winctrl.prg +++ /dev/null @@ -1,95 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour GUI framework for IBM OS/2 Presentation Manager - * Class HBWinControl - * - * Copyright 2001 Antonio Linares - * Copyright 2001 Maurilio Longo - * www - http://www.harbour-project.org - * - * Copyright 2001 Antonio Linares - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#include "common.ch" -#include "hbclass.ch" - -// NOTE: What does this define do under Windows? -#define SW_SHOWNA 8 - - -CLASS HBWinControl FROM HBPersistent - - DATA hWnd // Frame Window Handle - DATA hWndClient // Client Window Handle - - DATA nId - - CLASSDATA nInitId - - ACCESS Caption() INLINE WinGetText( ::hWnd ) PROPERTY - ASSIGN Caption( cNewCaption ) INLINE ; - WinSetWindowText( ::hWnd, cNewCaption ) - - ACCESS Top() INLINE WinGetTop( ::hWnd ) PROPERTY - ASSIGN Top( nNewTop ) INLINE WinSetTop( ::hWnd, nNewTop ) - - ACCESS Left() INLINE WinGetLeft( ::hWnd ) PROPERTY - ASSIGN Left( nNewLeft ) INLINE WinSetLeft( ::hWnd, nNewLeft ) - - ACCESS Height() INLINE WinGetHeight( ::hWnd ) PROPERTY - ASSIGN Height( nNewHeight ) INLINE WinSetHeight( ::hWnd, nNewHeight ) - - ACCESS Width() INLINE WinGetWidth( ::hWnd ) PROPERTY - ASSIGN Width( nNewWidth ) INLINE WinSetWidth( ::hWnd, nNewWidth ) - - METHOD GetNewId() INLINE ::nId := iif( ::nInitId == NIL, ::nInitId := 1,; - ++::nInitId ) - - METHOD Show() INLINE ShowWindow( ::hWnd, .T. /*SW_SHOWNA*/ ) - -ENDCLASS diff --git a/harbour/examples/hbgf/hbgfwin/button.prg b/harbour/examples/hbgf/hbgfwin/button.prg deleted file mode 100644 index 93a01b0078..0000000000 --- a/harbour/examples/hbgf/hbgfwin/button.prg +++ /dev/null @@ -1,73 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour GUI framework for Windows - * Class HBButton - * - * Copyright 2001 Antonio Linares - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#include "common.ch" -#include "hbclass.ch" -#include "hbgfwin.ch" - -CLASS HBButton FROM HBWinControl - - DATA OnClick PROPERTY - - METHOD New( oContainer ) - -ENDCLASS - -METHOD New( oContainer ) CLASS HBButton - - ::hWnd := WinCreateStdWindow( , nOr( WS_CHILD, WS_TABSTOP ),, "BUTTON", "",,; - oContainer:hWnd, ::GetNewId() ) - ::Width := 80 - ::Height := 25 - -return Self diff --git a/harbour/examples/hbgf/hbgfwin/edit.prg b/harbour/examples/hbgf/hbgfwin/edit.prg deleted file mode 100644 index d98c550625..0000000000 --- a/harbour/examples/hbgf/hbgfwin/edit.prg +++ /dev/null @@ -1,71 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour GUI framework for Windows - * Class HBEdit - * - * Copyright 2001 Antonio Linares - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#include "common.ch" -#include "hbclass.ch" -#include "hbgfwin.ch" - -CLASS HBEdit FROM HBWinControl - - METHOD New( oContainer ) - -ENDCLASS - -METHOD New( oContainer ) CLASS HBEdit - - ::hWnd := WinCreateStdWindow( , nOr( WS_BORDER, WS_CHILD, WS_TABSTOP ),,; - "EDIT", "",, oContainer:hWnd, ::GetNewId() ) - ::Width := 121 - ::Height := 21 - -return Self diff --git a/harbour/examples/hbgf/hbgfwin/form.prg b/harbour/examples/hbgf/hbgfwin/form.prg deleted file mode 100644 index 30f0436e62..0000000000 --- a/harbour/examples/hbgf/hbgfwin/form.prg +++ /dev/null @@ -1,184 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour GUI framework for Windows - * Class HBForm - * - * Copyright 2001 Antonio Linares - * Copyright 2001 Alexander Kresin - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#include "common.ch" -#include "hbclass.ch" -#include "hbgfwin.ch" - -static aForms := {} - -CLASS HBForm FROM HBWinControl - - DATA oMainMenu - - DATA aControls PROPERTY - DATA OnClick PROPERTY - - CLASSDATA lRegistered - - METHOD New() - METHOD Close() INLINE SendMessage( ::hWnd, WM_CLOSE ) - METHOD Command( nNotifyCode, nId, hWndCtl ) - METHOD HandleEvent( nMsg, nParam1, nParam2 ) - METHOD InsertControl( oControl ) - METHOD LButtonDown( nKeyFlags, nXPos, nYPos ) - METHOD ShowModal() - - ACCESS Menu() INLINE ::oMainMenu PROPERTY - ASSIGN Menu( oNewMenu ) - -ENDCLASS - - -METHOD New() CLASS HBForm - - DEFAULT ::lRegistered TO .f. - - if ! ::lRegistered - WinRegisterClass( "HB_TFORM" ) - ::lRegistered := .t. - endif - - ::hWnd := WinCreateStdWindow( , nOr( WS_OVERLAPPEDWINDOW ),,; - "HB_TFORM", "Harbour TForm" ) - - AAdd( aForms, Self ) - -return Self - -METHOD Command( nNotifyCode, nId, hWndCtl ) CLASS HBForm - - local oMenuItem, nAt, oControl - - if nNotifyCode == 0 // Menu command - if ::Menu != nil - if ( oMenuItem := ::Menu:FindItem( nId ) ) != nil - if oMenuItem:OnClick != nil - __ObjSendMsg( Self, oMenuItem:OnClick, oMenuItem ) - endif - endif - else // Control command - nAt := AScan( ::aControls, { | o | o:hWnd == hWndCtl } ) - if nAt != 0 - oControl := ::aControls[ nAt ] - if oControl:OnClick != nil - __ObjSendMsg( Self, oControl:OnClick, oControl ) - endif - endif - endif - endif - -return nil - -METHOD InsertControl( oControl ) CLASS HBForm - - DEFAULT ::aControls TO {} - - AAdd( ::aControls, oControl ) - oControl:Show() - -return nil - -METHOD LButtonDown( nKeyFlags, nXPos, nYPos ) CLASS HBForm - - HB_SYMBOL_UNUSED( nKeyFlags ) - - if ::OnClick != nil - return __ObjSendMsg( Self, ::OnClick, Self, nXPos, nYPos ) - endif - -return nil - -METHOD HandleEvent( nMsg, nParam1, nParam2 ) CLASS HBForm - - do case - case nMsg == WM_COMMAND - return ::Command( nHiWord( nParam1 ), nLoWord( nParam1 ), nParam2 ) - - case nMsg == WM_LBUTTONDOWN - return ::LButtonDown( nParam1, nLoWord( nParam2 ), nHiWord( nParam2 ) ) - - case nMsg == WM_DESTROY - PostQuitMessage( 0 ) - return 0 - endcase - -return nil - -METHOD ShowModal() CLASS HBForm - - HB_FormShowModal( ::hWnd ) - -return nil - - -ASSIGN Menu( oNewMenu ) CLASS HBForm - - ::oMainMenu := oNewMenu - - SetMenu( ::hWnd, oNewMenu:nHandle ) - -return nil - -function HB_GUI( hWnd, nMsg, nParam1, nParam2 ) // messages entry point - - local nForm := AScan( aForms, { | oForm | oForm:hWnd == hWnd } ) - - static aReturn := { nil, nil } - - if nForm != 0 - aReturn[ 1 ] := aForms[ nForm ]:HandleEvent( nMsg, nParam1, nParam2 ) - endif - -return aReturn diff --git a/harbour/examples/hbgf/hbgfwin/hbgfwin.ch b/harbour/examples/hbgf/hbgfwin/hbgfwin.ch deleted file mode 100644 index de8c93ef67..0000000000 --- a/harbour/examples/hbgf/hbgfwin/hbgfwin.ch +++ /dev/null @@ -1,80 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour GUI framework for Windows - * Constants definitions header file - * - * Copyright 2001 Antonio Linares - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#ifndef HB_GFWIN_CH_ -#define HB_GFWIN_CH_ - -#define WM_CLOSE 0x0010 -#define WM_COMMAND 0x0111 -#define WM_DESTROY 0x0002 -#define WM_LBUTTONDOWN 0x0201 - -#define WS_VISIBLE 0x10000000 -#define WS_OVERLAPPED 0x00000000 -#define WS_MINIMIZE 0x20000000 -#define WS_MAXIMIZE 0x01000000 -#define WS_CAPTION 0x00C00000 -#define WS_BORDER 0x00800000 -#define WS_SYSMENU 0x00080000 -#define WS_THICKFRAME 0x00040000 -#define WS_MINIMIZEBOX 0x00020000 -#define WS_MAXIMIZEBOX 0x00010000 - -#define WS_OVERLAPPEDWINDOW ( WS_OVERLAPPED + WS_CAPTION + ; - WS_SYSMENU + WS_THICKFRAME + WS_MINIMIZEBOX + ; - WS_MAXIMIZEBOX) - -#define WS_CHILD 0x40000000 -#define WS_TABSTOP 0x00010000 - -#endif diff --git a/harbour/examples/hbgf/hbgfwin/hbgfwin.hbp b/harbour/examples/hbgf/hbgfwin/hbgfwin.hbp deleted file mode 100644 index 2162033083..0000000000 --- a/harbour/examples/hbgf/hbgfwin/hbgfwin.hbp +++ /dev/null @@ -1,20 +0,0 @@ -# -# $Id$ -# - --hblib --ohbgfwin --inc --q0 -w3 -es2 -l - -"-echo={!allwin}This library builds on win/wce only." --stop{!allwin} - -winapi.c - -button.prg -edit.prg -form.prg -menu.prg -menuitem.prg -winctrl.prg diff --git a/harbour/examples/hbgf/hbgfwin/menu.prg b/harbour/examples/hbgf/hbgfwin/menu.prg deleted file mode 100644 index c912aebf84..0000000000 --- a/harbour/examples/hbgf/hbgfwin/menu.prg +++ /dev/null @@ -1,104 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour GUI framework for Windows - * Class HBMenu - * - * Copyright 2001 Antonio Linares - * Copyright 2001 Maurilio Longo - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#include "hbclass.ch" - -CLASS HBMenu FROM HBPersistent - - DATA nHandle - DATA Items PROPERTY - - METHOD New( oForm ) // Creates a new menu - METHOD Add( oMenuItem ) // Adds a menuitem - METHOD FindItem( nId ) // Searches for a sub menuitem given its id - -ENDCLASS - -METHOD New( oForm ) CLASS HBMenu - - ::Items := {} - - if oForm != nil - ::nHandle := WinCreateMenu( oForm:hWnd ) - endif - -return Self - -METHOD Add( oMenuItem ) CLASS HBMenu - - WinAddMenuItem( ::nHandle, oMenuItem:Caption, Len( ::Items ),; - nil, oMenuItem:nId, oMenuItem:Enabled ) - - oMenuItem:oParent := Self - AAdd( ::Items, oMenuItem ) - -return nil - -METHOD FindItem( nId ) CLASS HBMenu - - local oMenuItem, n - - for n := 1 to Len( ::Items ) - if ( oMenuItem := ::Items[ n ] ):nId == nId - return oMenuItem - else - if oMenuItem:Items != nil - if ( oMenuItem := oMenuItem:FindItem( nId ) ) != nil - return oMenuItem - endif - endif - endif - next - -return oMenuItem diff --git a/harbour/examples/hbgf/hbgfwin/menuitem.prg b/harbour/examples/hbgf/hbgfwin/menuitem.prg deleted file mode 100644 index 20aa5cd1d5..0000000000 --- a/harbour/examples/hbgf/hbgfwin/menuitem.prg +++ /dev/null @@ -1,117 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour GUI framework for Windows - * Class HGFMenuItem - * - * Copyright 2001 Antonio Linares - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#include "common.ch" -#include "hbclass.ch" - -CLASS HGFMenuItem FROM HBPersistent - - DATA Caption PROPERTY // Specifies the text of the menu item - DATA Name PROPERTY // The name of this component - DATA OnClick PROPERTY // A character description of the method to invoke - DATA Enabled PROPERTY // Specifies whether the menu item is enabled - DATA Items PROPERTY // Contains the menu items in the submenu of the menu item - - DATA nId // Command value to send to the container form - DATA oParent // Identifies the parent menu item of this menu item - DATA nHandle // The handle of the submenu of this menu item - - CLASSDATA nIdStart // start value for commands value to assign to menu items - - METHOD New( oOwner ) // Creates a new menu item - METHOD Add( oMenuItem ) // Adds a new drop down menu item - METHOD FindItem( nId ) // Searches for a sub menuitem given its id - -ENDCLASS - -METHOD New( oOwner ) CLASS HGFMenuItem - - DEFAULT ::nIdStart TO 110 - - ::Caption := "" - ::Enabled := .t. - ::nId := ::nIdStart++ - ::oParent := oOwner - -return Self - -METHOD Add( oMenuItem ) CLASS HGFMenuItem - - DEFAULT ::Items TO {} - DEFAULT ::nHandle TO WinCreateSubMenu( ::oParent:nHandle, ::nId ) - - WinAddMenuItem( ::nHandle, oMenuItem:Caption, Len( ::Items ),; - nil, oMenuItem:nId, oMenuItem:Enabled ) - - oMenuItem:oParent := Self - AAdd( ::Items, oMenuItem ) - -return nil - -METHOD FindItem( nId ) CLASS HGFMenuItem - - local oMenuItem, n - - for n := 1 to Len( ::Items ) - if ( oMenuItem := ::Items[ n ] ):nId == nId - return oMenuItem - else - if oMenuItem:Items != nil - if ( oMenuItem := oMenuItem:FindItem( nId ) ) != nil - return oMenuItem - endif - endif - endif - next - -return oMenuItem diff --git a/harbour/examples/hbgf/hbgfwin/winapi.c b/harbour/examples/hbgf/hbgfwin/winapi.c deleted file mode 100644 index 876c891fcc..0000000000 --- a/harbour/examples/hbgf/hbgfwin/winapi.c +++ /dev/null @@ -1,421 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour GUI framework for Windows - * - * Copyright 2001 Alexander S.Kresin - * Copyright 2001 Antonio Linares - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#define _WIN32_WINNT 0x0400 - -#define HB_OS_WIN_USED - -#include "hbapi.h" -#include "hbvm.h" -#include "hbstack.h" - -LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM ); - -HB_FUNC( WINREGISTERCLASS ) -{ - WNDCLASS wndclass; - LPTSTR lpszClassName = HB_TCHAR_CONVTO( hb_parcx( 1 ) ); - - wndclass.lpszClassName = lpszClassName; - wndclass.style = CS_OWNDC | CS_VREDRAW | CS_HREDRAW; /* hb_parnl( 2 ); */ - wndclass.cbClsExtra = hb_parnl( 3 ); - wndclass.cbWndExtra = 0; - wndclass.lpfnWndProc = WndProc; - wndclass.hInstance = GetModuleHandle( NULL ); - wndclass.hIcon = LoadIcon( NULL, IDI_APPLICATION ); - wndclass.hCursor = LoadCursor( NULL, IDC_ARROW ); - wndclass.hbrBackground = ( HBRUSH ) ( COLOR_BTNFACE + 1 ); - wndclass.lpszMenuName = NULL; - - hb_retl( RegisterClass( &wndclass ) ); - - HB_TCHAR_FREE( lpszClassName ); -} - -HB_FUNC( WINCREATESTDWINDOW ) -{ - LPTSTR lpszClassName = HB_TCHAR_CONVTO( hb_parcx( 4 ) ); - LPTSTR lpszCaption = HB_TCHAR_CONVTO( hb_parcx( 5 ) ); - - hb_retptr( CreateWindow( lpszClassName, - lpszCaption, - hb_parnl( 2 ), /* style */ - CW_USEDEFAULT, CW_USEDEFAULT, - CW_USEDEFAULT, CW_USEDEFAULT, - ( HWND ) hb_parptr( 7 ), /* hWndParent */ - ( HMENU ) hb_parptr( 8 ), /* hMenu or nId */ - GetModuleHandle( NULL ), NULL ) ); - - HB_TCHAR_FREE( lpszClassName ); - HB_TCHAR_FREE( lpszCaption ); -} - -HB_FUNC( HB_FORMSHOWMODAL ) -{ - MSG msg; - - ShowWindow( ( HWND ) hb_parptr( 1 ), 1 ); - while( GetMessage( &msg, NULL, 0, 0 ) ) - { - TranslateMessage( &msg ); - DispatchMessage( &msg ); - } -} - -/* nOr() is a very used function */ - -HB_FUNC( NOR ) -{ - LONG lRet = 0; - USHORT i = 0; - - while( i < hb_pcount() ) - lRet = lRet | hb_parnl( ++i ); - - hb_retnl( lRet ); -} - -HB_FUNC( WINSETWINDOWTEXT ) -{ - LPTSTR lpszText = HB_TCHAR_CONVTO( hb_parcx( 1 ) ); - - hb_retl( SetWindowText( ( HWND ) hb_parptr( 1 ), lpszText ) ); - - HB_TCHAR_FREE( lpszText ); -} - - -HB_FUNC( WINGETTEXT ) -{ - TCHAR bBuffer[ 256 ]; - char * szText; - - GetWindowText( ( HWND ) hb_parptr( 1 ), bBuffer, sizeof( bBuffer ) - 1 ); - - szText = HB_TCHAR_CONVFROM( bBuffer ); - hb_retc( szText ); - HB_TCHAR_FREE( szText ); -} - - -HB_FUNC( MSGINFO ) -{ - LPCTSTR lpStr1 = HB_TCHAR_CONVTO( hb_parcx( 2 ) ), - lpStr2 = HB_TCHAR_CONVTO( HB_ISCHAR( 2 ) ? hb_parc( 3 ) : "Information" ); - - hb_retni( MessageBox( GetActiveWindow(), lpStr1, lpStr2, MB_OK | MB_ICONINFORMATION ) ); - - HB_TCHAR_FREE( lpStr1 ); - HB_TCHAR_FREE( lpStr2 ); -} - - -HB_FUNC( WINCREATEMENU ) -{ - hb_retptr( CreateMenu() ); -} - - -HB_FUNC( WINADDMENUITEM ) -{ - LPTSTR lpszText = NULL; - MENUITEMINFO mii; - HMENU hSubMenu = ( ! HB_ISNIL( 4 ) ) ? ( HMENU ) hb_parptr( 4 ) : 0; - - mii.cbSize = sizeof( MENUITEMINFO ); - mii.fMask = MIIM_TYPE | MIIM_STATE | MIIM_ID | ( hSubMenu ? MIIM_SUBMENU : 0 ); - mii.fState = ! hb_parl( 6 ) ? MFS_DISABLED : 0; - mii.wID = hb_parni( 5 ); - mii.hSubMenu = hSubMenu; - if( HB_ISCHAR( 2 ) ) - { - lpszText = HB_TCHAR_CONVTO( hb_parc( 1 ) ); - mii.dwTypeData = lpszText; - mii.cch = lstrlen( lpszText ); - mii.fType = MFT_STRING; - } - else - mii.fType = MFT_SEPARATOR; - - hb_retl( InsertMenuItem( ( HMENU ) hb_parptr( 1 ), hb_parni( 3 ), 1, &mii ) ); - if( lpszText ) - HB_TCHAR_FREE( lpszText ); -} - -HB_FUNC( WINCREATESUBMENU ) -{ - - MENUITEMINFO mii; - HMENU hSubMenu = CreateMenu(); - - mii.cbSize = sizeof( MENUITEMINFO ); - mii.fMask = MIIM_SUBMENU; - mii.hSubMenu = hSubMenu; - - SetMenuItemInfo( ( HMENU ) hb_parptr( 1 ), - hb_parni( 2 ), - 0, - &mii ); - - hb_retptr( hSubMenu ); -} - -HB_FUNC( SETMENU ) -{ - hb_retl( SetMenu( ( HWND ) hb_parptr( 1 ), ( HMENU ) hb_parptr( 2 ) ) ); -} - -HB_FUNC( SENDMESSAGE ) -{ - hb_retnl( ( LONG ) SendMessage( - ( HWND ) hb_parptr( 1 ), /* handle of destination window */ - ( UINT ) hb_parni( 2 ), /* message to send */ - ( WPARAM ) hb_parnint( 3 ), /* first message parameter */ - ( LPARAM ) hb_parnint( 4 ) /* second message parameter */ - ) ); -} - - -LRESULT CALLBACK WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) -{ - static PHB_DYNS pDynSym = NULL; - - if( ! pDynSym ) - pDynSym = hb_dynsymFindName( "HB_GUI" ); - - if( pDynSym ) - { - hb_vmPushDynSym( pDynSym ); - hb_vmPushNil(); - hb_vmPushPointer( hWnd ); - hb_vmPushLong( message ); - hb_vmPushNumInt( ( HB_LONG ) wParam ); - hb_vmPushNumInt( ( HB_LONG ) lParam ); - hb_vmDo( 4 ); - - if( hb_arrayGetType( hb_stackReturnItem(), 1 ) == HB_IT_NIL ) - return DefWindowProc( ( HWND ) hWnd, message, wParam, lParam ); - } - - return hb_parvnl( -1, 1 ); -} - -HB_FUNC( POSTQUITMESSAGE ) -{ - PostQuitMessage( hb_parnl( 1 ) ); -} - -HB_FUNC( NLOWORD ) -{ - hb_retnl( LOWORD( hb_parnl( 1 ) ) ); -} - -HB_FUNC( NHIWORD ) -{ - hb_retnl( HIWORD( hb_parnl( 1 ) ) ); -} - -HB_FUNC( WINGETWIDTH ) -{ - HWND hWnd = ( HWND ) hb_parptr( 1 ); - RECT rct; - - GetWindowRect( hWnd, &rct ); - - hb_retnl( rct.right - rct.left ); -} - -HB_FUNC( WINSETWIDTH ) -{ - HWND hWnd = ( HWND ) hb_parptr( 1 ); - RECT rct; - POINT pt; - WORD wHeight; - - GetWindowRect( hWnd, &rct ); - wHeight = ( WORD ) ( rct.bottom - rct.top ); - - if( GetWindowLong( hWnd, GWL_STYLE ) && WS_CHILD ) - { - pt.x = rct.left; - pt.y = rct.top; - ScreenToClient( GetParent( hWnd ), &pt ); - rct.left = pt.x; - rct.top = pt.y; - } - - MoveWindow( hWnd, rct.left, rct.top, hb_parnl( 2 ), wHeight, TRUE ); -} - -HB_FUNC( WINGETHEIGHT ) -{ - HWND hWnd = ( HWND ) hb_parptr( 1 ); - RECT rct; - - GetWindowRect( hWnd, &rct ); - - hb_retnl( rct.bottom - rct.top ); -} - -HB_FUNC( WINSETHEIGHT ) -{ - HWND hWnd = ( HWND ) hb_parptr( 1 ); - RECT rct; - POINT pt; - WORD wWidth; - - GetWindowRect( hWnd, &rct ); - wWidth = ( WORD ) ( rct.right - rct.left ); - - if( GetWindowLong( hWnd, GWL_STYLE ) && WS_CHILD ) - { - pt.x = rct.left; - pt.y = rct.top; - ScreenToClient( GetParent( hWnd ), &pt ); - rct.left = pt.x; - rct.top = pt.y; - } - - MoveWindow( hWnd, rct.left, rct.top, wWidth, hb_parnl( 2 ), TRUE ); -} - -HB_FUNC( WINGETTOP ) -{ - HWND hWnd = ( HWND ) hb_parptr( 1 ); - RECT rct; - POINT pt; - - GetWindowRect( hWnd, &rct ); - - if( GetWindowLong( hWnd, GWL_STYLE ) && WS_CHILD ) - { - pt.x = rct.left; - pt.y = rct.top; - ScreenToClient( GetParent( hWnd ), &pt ); - rct.left = pt.x; - rct.top = pt.y; - } - - hb_retnl( rct.top ); -} - -HB_FUNC( WINSETTOP ) -{ - HWND hWnd = ( HWND ) hb_parptr( 1 ); - RECT rct; - POINT pt; - WORD wHeight, wWidth; - - GetWindowRect( hWnd, &rct ); - wHeight = ( WORD ) ( rct.bottom - rct.top ); - wWidth = ( WORD ) ( rct.right - rct.left ); - - if( GetWindowLong( hWnd, GWL_STYLE ) && WS_CHILD ) - { - pt.x = rct.left; - pt.y = hb_parnl( 2 ); - ScreenToClient( GetParent( hWnd ), &pt ); - rct.left = pt.x; - rct.top = pt.y; - } - - MoveWindow( hWnd, rct.left, hb_parnl( 2 ), wWidth, wHeight, TRUE ); -} - -HB_FUNC( WINGETLEFT ) -{ - HWND hWnd = ( HWND ) hb_parptr( 1 ); - RECT rct; - POINT pt; - - GetWindowRect( hWnd, &rct ); - - if( GetWindowLong( hWnd, GWL_STYLE ) && WS_CHILD ) - { - pt.x = rct.left; - pt.y = rct.top; - ScreenToClient( GetParent( hWnd ), &pt ); - rct.left = pt.x; - rct.top = pt.y; - } - - hb_retnl( rct.left ); -} - -HB_FUNC( WINSETLEFT ) -{ - HWND hWnd = ( HWND ) hb_parptr( 1 ); - RECT rct; - POINT pt; - WORD wHeight, wWidth; - - GetWindowRect( hWnd, &rct ); - wHeight = ( WORD ) ( rct.bottom - rct.top ); - wWidth = ( WORD ) ( rct.right - rct.left ); - - if( GetWindowLong( hWnd, GWL_STYLE ) && WS_CHILD ) - { - pt.x = hb_parnl( 2 ); - pt.y = rct.top; - ScreenToClient( GetParent( hWnd ), &pt ); - rct.left = pt.x; - rct.top = pt.y; - } - - MoveWindow( hWnd, hb_parnl( 2 ), rct.top, wWidth, wHeight, TRUE ); -} - -HB_FUNC( SHOWWINDOW ) -{ - hb_retl( ShowWindow( ( HWND ) hb_parptr( 1 ), hb_parl( 2 ) ) ); -} diff --git a/harbour/examples/hbgf/hbgfwin/winctrl.prg b/harbour/examples/hbgf/hbgfwin/winctrl.prg deleted file mode 100644 index e99fd0594a..0000000000 --- a/harbour/examples/hbgf/hbgfwin/winctrl.prg +++ /dev/null @@ -1,88 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * Harbour GUI framework for Windows - * Class HBWinControl - * - * Copyright 2001 Antonio Linares - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#include "common.ch" -#include "hbclass.ch" - -#define SW_SHOWNA 8 - - -CLASS HBWinControl FROM HBPersistent - - DATA hWnd - DATA nId - - CLASSDATA nInitId - - ACCESS Caption() INLINE WinGetText( ::hWnd ) PROPERTY - ASSIGN Caption( cNewCaption ) INLINE ; - WinSetWindowText( ::hWnd, cNewCaption ) - - ACCESS Top() INLINE WinGetTop( ::hWnd ) PROPERTY - ASSIGN Top( nNewTop ) INLINE WinSetTop( ::hWnd, nNewTop ) - - ACCESS Left() INLINE WinGetLeft( ::hWnd ) PROPERTY - ASSIGN Left( nNewLeft ) INLINE WinSetLeft( ::hWnd, nNewLeft ) - - ACCESS Height() INLINE WinGetHeight( ::hWnd ) PROPERTY - ASSIGN Height( nNewHeight ) INLINE WinSetHeight( ::hWnd, nNewHeight ) - - ACCESS Width() INLINE WinGetWidth( ::hWnd ) PROPERTY - ASSIGN Width( nNewWidth ) INLINE WinSetWidth( ::hWnd, nNewWidth ) - - METHOD GetNewId() INLINE ::nId := iif( ::nInitId == nil, ::nInitId := 1,; - ++::nInitId ) - - METHOD Show() INLINE ShowWindow( ::hWnd, SW_SHOWNA ) - -ENDCLASS diff --git a/harbour/examples/hbgf/tests/form2.prg b/harbour/examples/hbgf/tests/form2.prg deleted file mode 100644 index c3cdcdc22a..0000000000 --- a/harbour/examples/hbgf/tests/form2.prg +++ /dev/null @@ -1,56 +0,0 @@ -// -// $Id$ -// -// Inheriting from Class HBForm sample - -#include "hbclass.ch" - -function Main() - - local oForm2 := HBForm2():New() - - oForm2:ShowModal() - -return nil - -CLASS HBForm2 FROM HBForm - - METHOD New() - - METHOD TestClick( oSender ) - METHOD ExitClick( oSender ) INLINE ::Close() - -ENDCLASS - -METHOD New() CLASS HBForm2 - - local oMenu, oMenuItem - - Super:New() - - ::Caption = "Harbour GUI demo" - - oMenu = HBMenu():New( Self ) - - oMenuItem = HGFMenuItem():New( oMenu ) - oMenuitem:Caption = "Test" - oMenuitem:Name = "Test" - oMenuItem:OnClick = "TestClick" // The container method to execute - oMenu:Add( oMenuItem ) - - oMenuItem = HGFMenuItem():New( oMenu ) - oMenuitem:Caption = "Exit" - oMenuitem:Name = "Exit" - oMenuItem:OnClick = "ExitClick" // The container method to execute - oMenu:Add( oMenuItem ) - - ::Menu = oMenu - -return Self - -METHOD TestClick( oSender ) CLASS HBForm2 - - MsgInfo( "This event has been fired by a " + oSender:ClassName() + " object",; - "Welcome to Harbour GUI power" ) - -return nil diff --git a/harbour/examples/hbgf/tests/form3.hbf b/harbour/examples/hbgf/tests/form3.hbf deleted file mode 100644 index 96e3af0150..0000000000 --- a/harbour/examples/hbgf/tests/form3.hbf +++ /dev/null @@ -1,10 +0,0 @@ -OBJECT oForm3 AS HBForm3 - - ::Caption = "Harbour GUI Framework power" - ::Top = 200 - ::Left = 150 - ::Width = 400 - ::Height = 250 - ::OnClick = "FormClick" - -ENDOBJECT diff --git a/harbour/examples/hbgf/tests/form3.prg b/harbour/examples/hbgf/tests/form3.prg deleted file mode 100644 index 58bad9a58b..0000000000 --- a/harbour/examples/hbgf/tests/form3.prg +++ /dev/null @@ -1,31 +0,0 @@ -// -// $Id$ -// -// Use of persistence files to build a form - -#include "hbclass.ch" -#include "hbpers.ch" - -function Main() - - local oForm3 := HBForm3():New() - - oForm3:ShowModal() - -return nil - -CLASS HBForm3 FROM HBForm - - METHOD New() - - METHOD FormClick( oSender, nX, nY ) INLINE MsgInfo( "Click" ) - -ENDCLASS - -METHOD New() CLASS HBForm3 - - Super:New() - - #include "form3.hbf" // Notice this is just a persistence ascii file - // renamed as .hbf = Harbour form -return Self diff --git a/harbour/examples/hbgf/tests/form3res.prg b/harbour/examples/hbgf/tests/form3res.prg deleted file mode 100644 index a0b1e543b0..0000000000 --- a/harbour/examples/hbgf/tests/form3res.prg +++ /dev/null @@ -1,22 +0,0 @@ -// -// $Id$ -// -// Loading persistence files at runtime sample - -#include "hbclass.ch" - -function Main() - - local oForm3 := HBForm3():New() - - oForm3:LoadFromFile( "form3.hbf" ) - - oForm3:ShowModal() - -return nil - -CLASS HBForm3 FROM HBForm - - METHOD FormClick( oSender, nX, nY ) INLINE MsgInfo( "Click" ) - -ENDCLASS diff --git a/harbour/examples/hbgf/tests/formtext.prg b/harbour/examples/hbgf/tests/formtext.prg deleted file mode 100644 index b6c1d5979f..0000000000 --- a/harbour/examples/hbgf/tests/formtext.prg +++ /dev/null @@ -1,60 +0,0 @@ -// -// $Id$ -// -// Testing forms persistence - -#include "hbclass.ch" - -function Main() - - local oForm2 := HBForm2():New() - - oForm2:OnClick := "Form2Click" - - oForm2:ShowModal() - -return nil - -CLASS HBForm2 FROM HBForm - - METHOD New() - - METHOD ViewAsTextClick( oSender ) INLINE MsgInfo( ::SaveToText() ) - METHOD ExitClick( oSender ) INLINE ::Close() - - METHOD Form2Click( oSender, nXPos, nYPos ) - -ENDCLASS - -METHOD New() CLASS HBForm2 - - local oMenu, oMenuItem - - Super:New() - - ::Caption := "Harbour GUI demo" - - oMenu := HBMenu():New( Self ) - - oMenuItem := HGFMenuItem():New( oMenu ) - oMenuitem:Caption := "View as Text" - oMenuitem:Name := "ViewAsText" - oMenuItem:OnClick := "ViewAsTextClick" // The container method to execute - oMenu:Add( oMenuItem ) - - oMenuItem := HGFMenuItem():New( oMenu ) - oMenuitem:Caption := "Exit" - oMenuitem:Name := "Exit" - oMenuItem:OnClick := "ExitClick" // The container method to execute - oMenu:Add( oMenuItem ) - - ::Menu := oMenu - -return Self - -METHOD Form2Click( oSender, nXPos, nYPos ) CLASS HBForm2 - - MsgInfo( "Click at " + AllTrim( Str( nXPos ) ) + ", " + ; - AllTrim( Str( nYPos ) ) ) - -return nil diff --git a/harbour/examples/hbgf/tests/hbgf.hbc b/harbour/examples/hbgf/tests/hbgf.hbc deleted file mode 100644 index d8bf721f0e..0000000000 --- a/harbour/examples/hbgf/tests/hbgf.hbc +++ /dev/null @@ -1,7 +0,0 @@ -# -# $Id$ -# - -{win}libs=hbgfwin -{os2}libs=hbgfos2 -{linux|darwin|bsd|sunos}libs=hbgfgtk diff --git a/harbour/examples/hbgf/tests/testctrl.prg b/harbour/examples/hbgf/tests/testctrl.prg deleted file mode 100644 index cee5c15176..0000000000 --- a/harbour/examples/hbgf/tests/testctrl.prg +++ /dev/null @@ -1,58 +0,0 @@ -// -// $Id$ -// -// Testing Harbour GUI framework controls - -#include "hbclass.ch" - -function Main() - - local oForm := HBFormControls():New() - local oEdit, oBtn - - oForm:Caption := "Harbour GUI Framework controls" - oForm:Top := 175 - oForm:Left := 197 - oForm:Width := 382 - oForm:Height := 249 - - oEdit := HBEdit():New( oForm ) - oEdit:Top := 30 - oEdit:Left := 100 - oEdit:Width := 200 - oEdit:Caption := "Edit control" - oForm:InsertControl( oEdit ) - - oBtn := HBButton():New( oForm ) - oBtn:Caption := "&View as text" - oBtn:Top := 150 - oBtn:Left := 10 - oBtn:Width := 100 - oBtn:OnClick := "BtnViewAsTextClick" - oForm:InsertControl( oBtn ) - - oBtn := HBButton():New( oForm ) - oBtn:Caption := "&Ok" - oBtn:Top := 150 - oBtn:Left := 180 - oBtn:OnClick := "BtnOkClick" - oForm:InsertControl( oBtn ) - - oBtn := HBButton():New( oForm ) - oBtn:Caption := "&Cancel" - oBtn:Top := 150 - oBtn:Left := 280 - oBtn:OnClick := "BtnCancelClick" - oForm:InsertControl( oBtn ) - - oForm:ShowModal() - -return nil - -CLASS HBFormControls FROM HBForm - - METHOD BtnViewAsTextClick( oSender ) INLINE MsgInfo( ::SaveToText() ) - METHOD BtnOkClick( oSender ) INLINE MsgInfo( "Ok was pressed" ) - METHOD BtnCancelClick( oSender ) INLINE MsgInfo( "Cancel was pressed" ) - -ENDCLASS diff --git a/harbour/examples/hbgf/tests/testform.prg b/harbour/examples/hbgf/tests/testform.prg deleted file mode 100644 index 9b0d5a7261..0000000000 --- a/harbour/examples/hbgf/tests/testform.prg +++ /dev/null @@ -1,47 +0,0 @@ -// -// $Id$ -// - -// Testing Harbour GUI framework - -function Main() - - local oForm := HBForm():New() - local oMenu := HBMenu():New( oForm ) - local oMenuItem, oSubItem, oSubItem2 - - oMenuItem := HGFMenuItem():New( oMenu ) - oMenuItem:Caption := "One" - oMenu:Add( oMenuItem ) - - oSubItem := HGFMenuItem():New( oMenuItem ) - oSubItem:Caption := "First" - oMenuItem:Add( oSubItem ) - - oSubItem := HGFMenuItem():New( oMenuItem ) - oSubItem:Caption := "Second" - oMenuItem:Add( oSubItem ) - - oSubItem2 := HGFMenuItem():New( oSubItem ) - oSubItem2:Caption := "Some" - oSubItem:Add( oSubItem2 ) - - oSubItem2 := HGFMenuItem():New( oSubItem ) - oSubItem2:Caption := "More" - oSubItem:Add( oSubItem2 ) - - oMenuItem := HGFMenuItem():New( oMenu ) - oMenuItem:Caption := "Two" - oMenu:Add( oMenuItem ) - - oMenuItem := HGFMenuItem():New( oMenu ) - oMenuItem:Caption := "Three" - oMenu:Add( oMenuItem ) - - oForm:Menu := oMenu - - oForm:Caption := "Harbour GUI Framework" - - oForm:ShowModal() - -return nil diff --git a/harbour/examples/hbmake/hbmake.hbp b/harbour/examples/hbmake/hbmake.hbp index c6343a265f..1fe5025e94 100644 --- a/harbour/examples/hbmake/hbmake.hbp +++ b/harbour/examples/hbmake/hbmake.hbp @@ -5,7 +5,6 @@ # To build hbmake, type: 'hbmk2 hbmake.hbp' hbmake.prg -hbmakec.c -lhbclipsm -lxhb diff --git a/harbour/examples/hbmake/hbmake.prg b/harbour/examples/hbmake/hbmake.prg index d0e1f60b21..05c95f36d3 100644 --- a/harbour/examples/hbmake/hbmake.prg +++ b/harbour/examples/hbmake/hbmake.prg @@ -6026,5 +6026,14 @@ FUNCTION CmdLineParam( cFile, cCmdParams ) RETURN xReturn +STATIC FUNCTION GETUSERLANG() + + SWITCH Upper( Left( hb_UserLang(), 2 ) ) + CASE "PT" ; RETURN 1 + CASE "ES" ; RETURN 3 + ENDSWITCH + + RETURN 2 /* EN */ + STATIC FUNCTION HBRawVersion() RETURN StrTran( Version(), "Harbour ", "" ) diff --git a/harbour/examples/hbmake/hbmakec.c b/harbour/examples/hbmake/hbmakec.c deleted file mode 100644 index f0fc37503d..0000000000 --- a/harbour/examples/hbmake/hbmakec.c +++ /dev/null @@ -1,116 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * hbmake C support code - * - * Copyright 2000,2001 Luiz Rafael Culik [GETUSERLANG()] - * Copyright 2003 Marcelo Lombardo - lombardo@uol.com.br [HB_FREADLINE()] - * www - http://www.harbour-project.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#define HB_OS_WIN_USED - -#include "hbapi.h" - -HB_FUNC( GETUSERLANG ) -{ - long lRet; - -#if defined(HB_OS_WIN) && (!defined(__RSXNT__)) && (!defined(__CYGWIN__)) - - switch( GetSystemDefaultLangID() ) - { - case 0x0416: - case 0x0816: - lRet = 1; - break; - - case 0x0409: - case 0x0809: - case 0x0C09: - case 0x1009: - case 0x1409: - case 0x1809: - case 0x1C09: - case 0x2009: - case 0x2409: - case 0x2809: - case 0x2C09: - lRet = 2; - break; - - case 0x040A: - case 0x080A: - case 0x0C0A: - case 0x100A: - case 0x140A: - case 0x180A: - case 0x1C0A: - case 0x200A: - case 0x240A: - case 0x280A: - case 0x2C0A: - case 0x300A: - case 0x340A: - case 0x380A: - case 0x3C0A: - case 0x400A: - case 0x440A: - case 0x480A: - case 0x4C0A: - case 0x500A: - lRet = 3; - break; - - default: - lRet = 2; - break; - } -#else - lRet = 2; -#endif - hb_retnl( lRet ); -} diff --git a/harbour/examples/hbmsql/msql.c b/harbour/examples/hbmsql/msql.c index ebb0dbeab5..000c6fe948 100644 --- a/harbour/examples/hbmsql/msql.c +++ b/harbour/examples/hbmsql/msql.c @@ -65,7 +65,7 @@ HB_FUNC( MSQLCONNEC ) /* int msqlConnect(char *) */ { - hb_retni( msqlConnect( hb_parc( 1 ) ) ); + hb_retni( msqlConnect( ( char * ) hb_parc( 1 ) ) ); } HB_FUNC( MSQLCLOSE ) /* void msqlClose(int) */ @@ -75,12 +75,12 @@ HB_FUNC( MSQLCLOSE ) /* void msqlClose(int) */ HB_FUNC( MSQLSELECT ) /* int msqlSelectDB(int, char *) */ { - hb_retni( msqlSelectDB( hb_parni( 1 ), hb_parc( 2 ) ) ); + hb_retni( msqlSelectDB( hb_parni( 1 ), ( char * ) hb_parc( 2 ) ) ); } HB_FUNC( MSQLQUERY ) /* int msqlQuery(int, char *) */ { - hb_retni( msqlQuery( hb_parni( 1 ), hb_parc( 2 ) ) ); + hb_retni( msqlQuery( hb_parni( 1 ), ( char * ) hb_parc( 2 ) ) ); } HB_FUNC( MSQLSTORER ) /* m_result *msqlStoreResult() */ @@ -107,7 +107,7 @@ HB_FUNC( MSQLFETCHR ) /* m_row msqlFetchRow(m_result *, int) */ hb_itemReturnRelease( aRow ); } - + HB_FUNC( MSQLDATASE ) /* void msqlDataSeek(m_result *, int) */ { msqlDataSeek( ( m_result * ) HB_PARPTR( 1 ), hb_parni( 2 ) ); @@ -147,7 +147,7 @@ HB_FUNC( MSQLNUMFIE ) /* int msqlNumFields(m_result *) */ HB_FUNC( MSQLLISTFI ) /* m_result *msqlListFields(int, char *); */ { - HB_RETPTR( ( void * ) msqlListFields( hb_parni( 1 ), hb_parc( 2 ) ) ); + HB_RETPTR( ( void * ) msqlListFields( hb_parni( 1 ), ( char * ) hb_parc( 2 ) ) ); } HB_FUNC( MSQLGETERR ) /* char *msqlGetErrMsg(char *); */ diff --git a/harbour/examples/hboleold/hboleold.hbp b/harbour/examples/hboleold/hboleold.hbp deleted file mode 100644 index b22723b8f2..0000000000 --- a/harbour/examples/hboleold/hboleold.hbp +++ /dev/null @@ -1,14 +0,0 @@ -# -# $Id$ -# - --hblib --olib/${hb_arch}/${hb_comp}/hboleold --inc --q0 -w3 -es2 -l - -"-echo={!allwin}This library builds on win/wce only." --stop{!allwin} - -win_ole.c -win_tole.prg diff --git a/harbour/examples/hboleold/tests/hbmk.hbm b/harbour/examples/hboleold/tests/hbmk.hbm deleted file mode 100644 index d1a9a4efba..0000000000 --- a/harbour/examples/hboleold/tests/hbmk.hbm +++ /dev/null @@ -1,5 +0,0 @@ -# -# $Id$ -# - -../hboleold.hbc diff --git a/harbour/examples/hboleold/tests/testole.prg b/harbour/examples/hboleold/tests/testole.prg deleted file mode 100644 index 959efae85b..0000000000 --- a/harbour/examples/hboleold/tests/testole.prg +++ /dev/null @@ -1,330 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * demonstration code for FOR EACH used for OLE objects - * this code needs hbwin library - * - * Copyright 2007 Enrico Maria Giordano e.m.giordano at emagsoftware.it - * www - http://www.harbour-project.org - * - */ - -/* Explicit usage of OLE DEFAULT Method when syntax implies it. */ -#xtranslate :( ) := => :( ):Value := - -PROCEDURE Main() - - LOCAL nOption - - CLS - SetColor("W+/R") - @ 6, 25 TO 19, 55 DOUBLE - @ 8, 28 SAY "Test Harbour OLE with..." - - While .t. - @ 10, 32 PROMPT "MS Excel" - @ 11, 32 PROMPT "MS Word" - @ 12, 32 PROMPT "MS Outlook (1)" - @ 13, 32 PROMPT "MS Outlook (2)" - @ 14, 32 PROMPT "Internet Explorer" - @ 15, 32 PROMPT "XP CDO" - @ 16, 32 PROMPT "OpenOffice" - @ 17, 32 PROMPT "Quit" - - MENU TO nOption - - IF nOption == 0 - nOption := 8 - ELSEIF nOption == 1 - Exm_MSExcel() - ELSEIF nOption == 2 - Exm_MSWord() - ELSEIF nOption == 3 - Exm_MSOutlook() - ELSEIF nOption == 4 - Exm_MSOutlook2() - ELSEIF nOption == 5 - Exm_IExplorer() - ELSEIF nOption == 6 - Exm_CDO() - ELSEIF nOption == 7 - Exm_OpenOffice() - ELSEIF nOption == 8 - EXIT - ENDIF - End - - SetColor("W/N") - CLS - - RETURN - -// ; Requires Windows XP - -STATIC PROCEDURE Exm_CDO() - - LOCAL oCDOMsg - LOCAL oCDOConf - - BEGIN SEQUENCE WITH {|oErr| Break( oErr )} - oCDOMsg := CreateObject( "CDO.Message" ) - BEGIN SEQUENCE WITH {|oErr| Break( oErr )} - - oCDOConf := CreateObject( "CDO.Configuration" ) - - oCDOConf:Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") := 2 // ; cdoSendUsingPort - oCDOConf:Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") := "localhost" - oCDOConf:Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") := 25 - oCDOConf:Fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") := 120 - oCDOConf:Fields:Update() - - oCDOMsg:Configuration := oCDOConf - oCDOMsg:BodyPart:Charset := "iso-8859-2" // "iso-8859-1" "utf-8" - oCDOMsg:To := "test@localhost" - oCDOMsg:From := "sender@localhost" - oCDOMsg:Subject := "Test message" - oCDOMsg:TextBody := "Test message body" - - BEGIN SEQUENCE WITH {|oErr| Break( oErr )} - oCDOMsg:Send() - RECOVER - Alert( "Error: CDO send error. [" + Ole2TxtError()+ "]" ) - END SEQUENCE - - oCDOConf := NIL - - END SEQUENCE - - oCDOMsg := NIL - - RECOVER - Alert( "Error: CDO subsystem not available. [" + Ole2TxtError()+ "]" ) - END SEQUENCE - - RETURN - -STATIC PROCEDURE Exm_IExplorer() - - LOCAL oIE - - BEGIN SEQUENCE WITH {|oErr| Break( oErr )} - oIE := CreateObject( "InternetExplorer.Application" ) - BEGIN SEQUENCE WITH {|oErr| Break( oErr )} - oIE:Visible := .T. - oIE:Navigate( "http://www.harbour-project.org" ) - END SEQUENCE - RECOVER - Alert( "Error: IExplorer not available. [" + Ole2TxtError()+ "]" ) - END SEQUENCE - - RETURN - -STATIC PROCEDURE Exm_MSExcel() - - LOCAL oExcel - LOCAL oWorkBook - LOCAL oWorkSheet - LOCAL oAS - - BEGIN SEQUENCE WITH {|oErr| Break( oErr )} - oExcel := CreateObject( "Excel.Application" ) - BEGIN SEQUENCE WITH {|oErr| Break( oErr )} - - oWorkBook := oExcel:WorkBooks:Add() - - FOR EACH oWorkSheet IN oWorkBook:WorkSheets - ? oWorkSheet:Name - NEXT - - oAS := oExcel:ActiveSheet() - - oAS:Cells:Font:Name := "Arial" - oAS:Cells:Font:Size := 12 - - // Explicit use of DEFAULT method by means of #xtranslate above!!! - oAS:Cells( 3, 1 ) := "Explict DEFAULT Method Text:" - - // Array notation seem to have REVERSED indexs for the Cells Collections!!! - // Implicitly using DEFAULT Method - oAS:Cells[ 2, 3 ] := "Implicit DEFAULT Method using *reversed* array index notation" - - // Operator overloading will attempt explict resolutin using :OleValue - oAS:Cells[ 2, 3 ] += "!" - - oAS:Cells( 4, 1 ):Value := "Numeric:" - oAS:Cells( 4, 2 ):NumberFormat := "#.##0,00" - - oAS:Cells[ 2, 4 ] := 1234.50 - oAS:Cells[ 2, 4 ] *= 4 - ? oAS:Cells[ 2, 4 ], oAS:Cells[ 2, 4 ]:Value - oAS:Cells[ 2, 4 ] /= 2 - ? oAS:Cells[ 2, 4 ], oAS:Cells[ 2, 4 ]:Value - - oAS:Cells[ 2, 4 ]++ - ? oAS:Cells[ 2, 4 ], oAS:Cells[ 2, 4 ]:Value - oAS:Cells[ 2, 4 ]-- - ? oAS:Cells[ 2, 4 ], oAS:Cells[ 2, 4 ]:Value - - oAS:Cells( 5, 1 ):Value := "Logical:" - oAS:Cells( 5, 2 ):Value := .T. - oAS:Cells( 6, 1 ):Value := "Date:" - oAS:Cells( 6, 2 ):Value := DATE() - - oAS:Columns( 1 ):Font:Bold := .T. - oAS:Columns( 2 ):HorizontalAlignment := -4152 // xlRight - - oAS:Columns( 1 ):AutoFit() - oAS:Columns( 2 ):AutoFit() - - oAS:Cells( 1, 1 ):Value := "OLE from Harbour" - oAS:Cells( 1, 1 ):Font:Size := 16 - oAS:Range( "A1:B1" ):HorizontalAlignment := 7 - - oAS:Cells( 1, 1 ):Select() - - oExcel:Visible := .T. - - oExcel:Quit() - - END SEQUENCE - RECOVER - Alert( "Error: MS Excel not available. [" + Ole2TxtError()+ "]" ) - END SEQUENCE - - RETURN - -STATIC PROCEDURE Exm_MSWord() - - LOCAL oWord - LOCAL oText - - BEGIN SEQUENCE WITH {|oErr| Break( oErr )} - oWord := CreateObject( "Word.Application" ) - BEGIN SEQUENCE WITH {|oErr| Break( oErr )} - - oWord:Documents:Add() - - oText := oWord:Selection() - - oText:Text := "OLE from Harbour" + hb_OSNewLine() - oText:Font:Name := "Arial" - oText:Font:Size := 48 - oText:Font:Bold := .T. - - oWord:Visible := .T. - oWord:WindowState := 1 // ; Maximize - - END SEQUENCE - RECOVER - Alert( "Error: MS Word not available. [" + Ole2TxtError()+ "]" ) - END SEQUENCE - - RETURN - -STATIC PROCEDURE Exm_MSOutlook() - - LOCAL oOL - LOCAL oList - - BEGIN SEQUENCE WITH {|oErr| Break( oErr )} - oOL := CreateObject( "Outlook.Application" ) - BEGIN SEQUENCE WITH {|oErr| Break( oErr )} - oList := oOL:CreateItem( 7 ) // ; olDistributionListItem - oList:DLName := "Distribution List" - oList:Display( .F. ) - END SEQUENCE - RECOVER - Alert( "Error: MS Outlook not available. [" + Ole2TxtError()+ "]" ) - END SEQUENCE - - RETURN - -STATIC PROCEDURE Exm_MSOutlook2() - - LOCAL oOL - LOCAL oLista - LOCAL oMail - LOCAL i - - oOL := TOleAuto():New( "Outlook.Application.9" ) - - IF Ole2TxtError() != "S_OK" - Alert("Outlook is not available", "Error") - ELSE - oMail := oOL:CreateItem( 0 ) // olMailItem - - FOR i := 1 TO 10 - oMail:Recipients:Add( "Contact" + LTRIM( STR( i, 2 ) ) + ; - "" ) - NEXT - - oLista := oOL:CreateItem( 7 ) // olDistributionListItem - oLista:DLName := "Test with distribution list" - oLista:Display( .F. ) - oLista:AddMembers( oMail:Recipients ) - oLista:Save() - oLista:Close( 0 ) - - oMail:End() - oLista:End() - oOL:End() - - ENDIF - - RETURN - -STATIC PROCEDURE Exm_OpenOffice() - - LOCAL oOO_ServiceManager - LOCAL oOO_Desktop - LOCAL oOO_PropVal01 - LOCAL oOO_Doc - - LOCAL cDir - - BEGIN SEQUENCE WITH {|oErr| Break( oErr )} - - oOO_ServiceManager := CreateObject( "com.sun.star.ServiceManager" ) - - BEGIN SEQUENCE WITH {|oErr| Break( oErr )} - - hb_FNameSplit( hb_ArgV( 0 ), @cDir ) - - oOO_Desktop := oOO_ServiceManager:createInstance( "com.sun.star.frame.Desktop" ) - oOO_PropVal01 := oOO_ServiceManager:Bridge_GetStruct( "com.sun.star.beans.PropertyValue" ) - oOO_Doc := oOO_Desktop:loadComponentFromURL( OO_ConvertToURL( hb_FNameMerge( cDir, "sample.odt" ) ), "_blank", 0, { oOO_PropVal01 } ) - - // ... - - oOO_Doc:Close( .T. ) - oOO_Doc := NIL - - oOO_Desktop:Terminate() - oOO_Desktop := NIL - oOO_PropVal01 := NIL - - END SEQUENCE - - oOO_ServiceManager := NIL - - RECOVER - Alert( "Error: OpenOffice not available. [" + Ole2TxtError()+ "]" ) - END SEQUENCE - - RETURN - -STATIC FUNCTION OO_ConvertToURL( cString ) - - // ; Handle UNC paths - IF !( Left( cString, 2 ) == "\\" ) - cString := StrTran( cString, ":", "|" ) - cString := "///" + cString - ENDIF - - cString := StrTran( cString, "\", "/" ) - cString := StrTran( cString, " ", "%20" ) - - RETURN "file:" + cString diff --git a/harbour/examples/hboleold/win_ole.c b/harbour/examples/hboleold/win_ole.c deleted file mode 100644 index aa6f7a21ba..0000000000 --- a/harbour/examples/hboleold/win_ole.c +++ /dev/null @@ -1,1992 +0,0 @@ -/* - * $Id$ - */ - -/* - * Copyright 2002 Jose F. Gimenez (JFG) - - * Ron Pinkas - - * - * www - http://www.xharbour.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the xHarbour Project gives permission for - * additional uses of the text contained in its release of xHarbour. - * - * The exception is that, if you link the xHarbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the xHarbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the xHarbour - * Project under the name xHarbour. If you copy code from other - * xHarbour Project or Free Software Foundation releases into a copy of - * xHarbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for xHarbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#define HB_OS_WIN_USED - -#ifndef CINTERFACE - #define CINTERFACE 1 -#endif - -#define NONAMELESSUNION - -#include - -#include "hbvmint.h" /* TOFIX: clean the code to not access any internal HVM structures */ -#include "hbapi.h" -#include "hbstack.h" -#include "hbapierr.h" -#include "hbapiitm.h" -#include "hbapicls.h" -#include "hbvm.h" -#include "hbdate.h" -#include "hboo.ch" - -#if ! defined( HB_OS_WIN_CE ) - -#include -#include -#include -#include - -#ifndef __MINGW32__ - /* Missing in Mingw V 2. */ - /* #include */ -#endif - -#include - -#ifdef __MINGW32__ - /* Missing in oleauto.h */ - WINOLEAUTAPI VarR8FromDec(DECIMAL *pdecIn, DOUBLE *pdblOut); -#endif - -#if ( defined( __DMC__ ) || defined( __MINGW32__ ) || ( defined( __WATCOMC__ ) && !defined( __FORCE_LONG_LONG__ ) ) ) - #define HB_LONG_LONG_OFF -#endif - -#if defined( __cplusplus ) && ( defined( __BORLANDC__ ) || defined( _MSC_VER ) || ( defined( __WATCOMC__ ) && ( __WATCOMC__ >= 1280 ) ) ) -# define HB_ID_REF( type, id ) id -#else -# define HB_ID_REF( type, id ) ( ( type ) &id ) -#endif - -static void RetValue( void ); - -static HRESULT s_nOleError; -static PHB_ITEM s_pOleAuto = NULL; - -static PHB_DYNS s_pSym_TOleAuto = NULL; -static PHB_DYNS s_pSym_hObj = NULL; -static PHB_DYNS s_pSym_New = NULL; -static PHB_DYNS s_pSym_cClassName = NULL; - -static PHB_DYNS s_pSym_VTWrapper = NULL; -static PHB_DYNS s_pSym_VTArrayWrapper = NULL; -static PHB_DYNS s_pSym_vt = NULL; -static PHB_DYNS s_pSym_Value = NULL; - -static DISPPARAMS s_EmptyDispParams; - -static VARIANTARG s_RetVal; -static VARIANTARG s_OleVal; - -static BOOL s_bInit = FALSE; - -/* ----------------------------------------------------------------------- */ - -#define EG_OLEEXCEPTION 1001 -#define HB_STRING_ALLOC( p, l ) hb_itemReSizeString( p, l ) - -static void hb_itemPushForward( PHB_ITEM pItem ) -{ - hb_itemMove( hb_stackAllocItem(), pItem ); -} - -static void hb_vmRequestReset( void ) -{ - hb_stackSetActionRequest( 0 ); /* TOFIX */ -} - -/* ----------------------------------------------------------------------- */ -static EXCEPINFO s_excep; - -static DISPID s_lPropPut = DISPID_PROPERTYPUT; -static UINT s_uArgErr; - -HRESULT hb_oleVariantToItem( PHB_ITEM pItem, VARIANT *pVariant ); -static PHB_ITEM SafeArrayToArray( SAFEARRAY * parray, UINT iDim, long * rgIndices, VARTYPE vt ); - -/* ----------------------------------------------------------------------- */ -BSTR hb_oleAnsiToSysString( const char * cString ) -{ - int nConvertedLen = MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, cString, -1, NULL, 0 ); - - if( nConvertedLen ) - { - BSTR bstrString = SysAllocStringLen( NULL, nConvertedLen - 1 ); - - if( MultiByteToWideChar( CP_ACP, 0, cString, -1, bstrString, nConvertedLen ) ) - return bstrString; - else - SysFreeString( bstrString ); - } - - return NULL; -} - -/* ----------------------------------------------------------------------- */ -LPWSTR hb_oleAnsiToWide( LPSTR cString ) -{ - int nConvertedLen = MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, cString, -1, NULL, 0 ); - - if( nConvertedLen ) - { - LPWSTR wString = ( LPWSTR ) hb_xgrab( nConvertedLen * 2 + 1 ); - - if( MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, cString, -1, wString, nConvertedLen ) ) - return wString; - else - hb_xfree( wString ); - } - - return NULL; -} - -/* This code is executed only once when HVM clears static variables - * inside hb_vmQuit() - so it's executed after all EXIT functions - * and allow to use OLE in object destructors - */ -static HB_GARBAGE_FUNC( hb_oleRelease ) -{ - HB_SYMBOL_UNUSED( Cargo ); - - if( s_bInit ) - { - OleUninitialize(); - s_bInit = FALSE; - if( s_pOleAuto ) - { - hb_itemRelease( s_pOleAuto ); - s_pOleAuto = NULL; - } - } -} - -/* ----------------------------------------------------------------------- */ - -HB_FUNC( __HB_OLE_INIT ) -{ - if( s_pSym_TOleAuto == NULL ) - { - s_pSym_TOleAuto = hb_dynsymFind( "TOLEAUTO" ); - s_pSym_New = hb_dynsymFind( "NEW" ); - s_pSym_hObj = hb_dynsymFind( "HOBJ" ); - s_pSym_cClassName = hb_dynsymFind( "CCLASSNAME" ); - - s_pSym_VTWrapper = hb_dynsymFind( "VTWRAPPER" ); - s_pSym_VTArrayWrapper = hb_dynsymFind( "VTARRAYWRAPPER" ); - s_pSym_vt = hb_dynsymGetCase( "VT" ); - s_pSym_Value = hb_dynsymFind( "VALUE" ); - - s_EmptyDispParams.rgvarg = NULL; - s_EmptyDispParams.cArgs = 0; - s_EmptyDispParams.rgdispidNamedArgs = 0; - s_EmptyDispParams.cNamedArgs = 0; - - if( ! s_bInit ) - { - OleInitialize( NULL ); - hb_retptrGC( hb_gcAlloc( 1, hb_oleRelease ) ); - s_bInit = TRUE; - } - - VariantInit( &s_RetVal ); - VariantInit( &s_OleVal ); - } -} - -/* ----------------------------------------------------------------------- */ - -HB_FUNC( ANSITOWIDE ) /* ( cAnsiStr ) -> cWideStr */ -{ - char *cString = hb_parc( 1 ); - - if( cString ) - { - BSTR wString = hb_oleAnsiToWide( cString ); - - if( wString ) - hb_retclen_buffer( ( char * ) wString, SysStringLen( wString ) ); - } -} - -/* ----------------------------------------------------------------------- */ -LPSTR hb_oleWideToAnsi( BSTR wString ) -{ - int nConvertedLen = WideCharToMultiByte( CP_ACP, 0, wString, -1, NULL, 0, NULL, NULL ); - - if( nConvertedLen ) - { - char * cString = ( char * ) hb_xgrab( nConvertedLen + 1 ); - - if( WideCharToMultiByte( CP_ACP, 0, wString, -1, cString, nConvertedLen + 1, NULL, NULL ) ) - return cString; - else - hb_xfree( cString ); - } - -#if 0 - wprintf( L"\nWide: '%s'\n", wString ); - printf( "\nAnsi: '%s'\n", cString ); -#endif - - return NULL; -} - -/* ----------------------------------------------------------------------- */ -HB_FUNC( WIDETOANSI ) /* ( cWideStr, nLen ) -> cAnsiStr */ -{ - BSTR wString = ( BSTR ) hb_parc( 1 ); - - if( wString ) - { - char *cString = hb_oleWideToAnsi( wString ); - - if( cString ) - hb_retclen_buffer( cString, strlen( cString ) ); - } -} - -/* ----------------------------------------------------------------------- */ -void hb_oleItemToVariant( VARIANT *pVariant, PHB_ITEM pItem ) -{ - BOOL bByRef; - VARIANT mVariant; - VARTYPE vt; - SAFEARRAYBOUND rgsabound; - void *pSource;/* = NULL;*/ - unsigned long i; - char *sString; - - if( HB_IS_BYREF( pItem ) ) - { - pItem = hb_itemUnRef( pItem ); - bByRef = TRUE; - } - else - bByRef = FALSE; - - VariantClear( pVariant ); - - switch( hb_itemType( pItem ) ) - { - case HB_IT_NIL: - /*pVariant->n1.n2.vt = VT_EMPTY;*/ - break; - - case HB_IT_STRING: - case HB_IT_MEMO: - { - ULONG ulLen = hb_itemGetCLen( pItem ); - - sString = hb_itemGetCPtr( pItem ); - - /* Check for hidden signature of SafeArrayToArray(). */ - if( ( int ) ( pItem->item.asString.allocated - ulLen ) >= 5 && /* TOFIX */ - sString[ ulLen ] == 0x7A && sString[ ulLen + 1 ] == 0x7B && sString[ ulLen + 2 ] == 0x7C && sString[ ulLen + 3 ] == 0x7D ) - { - vt = ( VARTYPE ) sString[ ulLen + 4 ]; - goto ItemToVariant_StringArray; - } - - if( bByRef ) - { - hb_itemPutCLConst( pItem, ( char * ) hb_oleAnsiToSysString( sString ), ulLen * 2 + 1 ); - - pVariant->n1.n2.vt = VT_BYREF | VT_BSTR; - pVariant->n1.n2.n3.pbstrVal = ( BSTR * ) &( pItem->item.asString.value ); /* TOFIX */ - /*wprintf( L"*** BYREF >%s<\n", *pVariant->n1.n2.n3.bstrVal );*/ - } - else - { - pVariant->n1.n2.vt = VT_BSTR; - pVariant->n1.n2.n3.bstrVal = hb_oleAnsiToSysString( sString ); - /*wprintf( L"*** >%s<\n", pVariant->n1.n2.n3.bstrVal );*/ - } - break; - } - - case HB_IT_LOGICAL: - if( bByRef ) - { - pVariant->n1.n2.vt = VT_BYREF | VT_BOOL; - pVariant->n1.n2.n3.pboolVal = ( short * ) &( pItem->item.asLogical.value ) ; /* TOFIX */ - *pVariant->n1.n2.n3.pboolVal = hb_itemGetL( pItem ) ? VARIANT_TRUE : VARIANT_FALSE; - /*pItem->type = HB_IT_LONG;*/ - } - else - { - pVariant->n1.n2.vt = VT_BOOL; - pVariant->n1.n2.n3.boolVal = hb_itemGetL( pItem ) ? VARIANT_TRUE : VARIANT_FALSE; - } - break; - - case HB_IT_INTEGER: -#if HB_INT_MAX == INT16_MAX - if( bByRef ) - { - pVariant->n1.n2.vt = VT_BYREF | VT_I2; - pVariant->n1.n2.n3.piVal = &( pItem->item.asInteger.value ) ; /* TOFIX */ - } - else - { - pVariant->n1.n2.vt = VT_I2; - pVariant->n1.n2.n3.iVal = hb_itemGetNI( pItem ); - } - break; -#else - if( bByRef ) - { - pVariant->n1.n2.vt = VT_BYREF | VT_I4; - pVariant->n1.n2.n3.plVal = ( long * ) &( pItem->item.asInteger.value ) ; /* TOFIX */ - } - else - { - pVariant->n1.n2.vt = VT_I4; - pVariant->n1.n2.n3.lVal = hb_itemGetNL( pItem ); - } - break; -#endif - case HB_IT_LONG: -#if HB_LONG_MAX == INT32_MAX || defined( HB_LONG_LONG_OFF ) - if( bByRef ) - { - pVariant->n1.n2.vt = VT_BYREF | VT_I4; - pVariant->n1.n2.n3.plVal = ( long * ) &( pItem->item.asLong.value ) ; /* TOFIX */ - } - else - { - pVariant->n1.n2.vt = VT_I4; - pVariant->n1.n2.n3.lVal = hb_itemGetNL( pItem ); - } -#else - if( bByRef ) - { - pVariant->n1.n2.vt = VT_BYREF | VT_I8; - pVariant->n1.n2.n3.pllVal = &( pItem->item.asLong.value ) ; /* TOFIX */ - } - else - { - pVariant->n1.n2.vt = VT_I8; - pVariant->n1.n2.n3.llVal = hb_itemGetNLL( pItem ); - } -#endif - break; - - case HB_IT_DOUBLE: - if( bByRef ) - { - pVariant->n1.n2.vt = VT_BYREF | VT_R8; - pVariant->n1.n2.n3.pdblVal = &( pItem->item.asDouble.value ) ; /* TOFIX */ - pItem->type = HB_IT_DOUBLE; - } - else - { - pVariant->n1.n2.vt = VT_R8; - pVariant->n1.n2.n3.dblVal = hb_itemGetND( pItem ); - } - break; - - case HB_IT_DATE: - { - long lDate = hb_itemGetDL( pItem ); - - if( lDate == 0 ) - pVariant->n1.n2.vt = VT_NULL; - else if( bByRef ) - { - hb_itemPutND( pItem, (double) ( lDate - 2415019 ) ); - - pVariant->n1.n2.vt = VT_BYREF | VT_DATE; - pVariant->n1.n2.n3.pdblVal = &( pItem->item.asDouble.value ); - } - else - { - pVariant->n1.n2.vt = VT_DATE; - pVariant->n1.n2.n3.dblVal = (double) ( lDate - 2415019 ); - } - } - break; - - case HB_IT_TIMESTAMP: - { - double dDateTime = hb_itemGetTD( pItem ); - - if( dDateTime == 0 ) - pVariant->n1.n2.vt = VT_NULL; - - else if( bByRef ) - { - hb_itemPutND( pItem, ( dDateTime - (double) 2415019 ) ); - - pVariant->n1.n2.vt = VT_BYREF | VT_DATE; - pVariant->n1.n2.n3.pdblVal = &( pItem->item.asDouble.value ); - } - else - { - pVariant->n1.n2.vt = VT_DATE; - pVariant->n1.n2.n3.dblVal = ( dDateTime - (double) 2415019 ); - } - } - break; - - case HB_IT_POINTER: - pVariant->n1.n2.vt = VT_PTR; - pVariant->n1.n2.n3.byref = hb_itemGetPtr( pItem ); - break; - - case HB_IT_ARRAY: - { - if( HB_IS_OBJECT( pItem ) ) - { - if( hb_clsIsParent( hb_objGetClass( pItem ), "TOLEAUTO" ) ) - { - IDispatch *pDisp;/* = NULL;*/ - - hb_vmPushDynSym( s_pSym_hObj ); - hb_vmPush( pItem ); - hb_vmSend( 0 ); - - pDisp = ( IDispatch * ) ( HB_PTRUINT ) hb_parnint( -1 ); - pDisp->lpVtbl->AddRef( pDisp ); - - /*HB_TRACE(HB_TR_INFO, ("Dispatch: in: %s(%i)%ld\n", pDisp, __FILE__, __LINE__));*/ - - if( bByRef ) - { - pVariant->n1.n2.vt = ( VT_DISPATCH | VT_BYREF ); - /* Hack!!! Using high 4 bytes of the union (llVal) */ - *( ( IDispatch ** ) ( &pVariant->n1.n2.n3.lVal ) + 1 ) = pDisp; - pVariant->n1.n2.n3.ppdispVal = ( IDispatch ** ) ( &pVariant->n1.n2.n3.lVal ) + 1; - } - else - { - pVariant->n1.n2.vt = VT_DISPATCH; - pVariant->n1.n2.n3.pdispVal = pDisp; - } - } - /* MUST be before "VTWRAPPER" */ - else if( hb_clsIsParent( hb_objGetClass( pItem ), "VTARRAYWRAPPER" ) ) - { - /* vt := oVTArray:vt */ - hb_vmPushDynSym( s_pSym_vt ); - hb_vmPush( pItem ); - hb_vmSend( 0 ); - - vt = ( VARTYPE ) hb_parnl( -1 ); - - /* aArray := oVTArray:Value */ - hb_vmPushDynSym( s_pSym_Value ); - hb_vmPush( pItem ); - hb_vmSend( 0 ); - - /* Intentionally not using hb_itemCopy() or hb_itemForwardValue() */ - pItem = hb_stackReturnItem(); - - if( ( vt == VT_I1 || vt == VT_UI1 ) && HB_IS_STRING( pItem ) ) - { - SAFEARRAY *parray; - - sString = hb_itemGetCPtr( pItem ); - -ItemToVariant_StringArray: - - rgsabound.cElements = hb_itemGetCLen( pItem ); - rgsabound.lLbound = 0; - - parray = SafeArrayCreate( vt, 1, &rgsabound ); - - if( bByRef ) - { - pVariant->n1.n2.vt = ( VT_ARRAY | VT_BYREF | vt ); - /* Hack!!! Using high 4 bytes of the union (llVal) */ - *( ( SAFEARRAY ** ) ( &pVariant->n1.n2.n3.lVal ) + 1 ) = parray; - pVariant->n1.n2.n3.pparray = ( SAFEARRAY ** ) ( &pVariant->n1.n2.n3.lVal ) + 1; - } - else - { - pVariant->n1.n2.vt = ( VT_ARRAY | vt ); - pVariant->n1.n2.n3.parray = parray; - } - - for( i = 0; i < rgsabound.cElements; i++ ) - SafeArrayPutElement( parray, ( LONG * ) &i, &( sString[ i ] ) ); - - break; - } - - VariantInit( &mVariant ); - pSource = &mVariant.n1.n2.n3.cVal; - - goto ItemToVariant_ProcessArray; - } - else if( hb_clsIsParent( hb_objGetClass( pItem ), "VTWRAPPER" ) ) - { - /* vt := oVT:vt */ - hb_vmPushDynSym( s_pSym_vt ); - hb_vmPush( pItem ); - hb_vmSend( 0 ); - - pVariant->n1.n2.vt = ( VARTYPE ) hb_parnl( -1 ); - - /* value := oVT:value */ - hb_vmPushDynSym( s_pSym_Value ); - hb_vmPush( pItem ); - hb_vmSend( 0 ); - - switch( pVariant->n1.n2.vt ) - { - case VT_UNKNOWN: - pVariant->n1.n2.n3.punkVal = ( IUnknown * ) hb_parptr( -1 ); - break; - - case ( VT_UNKNOWN | VT_BYREF ): - /* Hack!!! Using high 4 bytes of the union (llVal) */ - *( ( IUnknown ** ) ( &pVariant->n1.n2.n3.lVal ) + 1 ) = ( IUnknown * ) hb_parptr( -1 ); - pVariant->n1.n2.n3.ppunkVal = ( IUnknown ** ) ( &pVariant->n1.n2.n3.lVal ) + 1; - break; - - default: - HB_TRACE(HB_TR_INFO, ("Unexpected VT type %p in: %s(%i)!\n", ( void * ) ( HB_PTRUINT ) pVariant->n1.n2.vt, __FILE__, __LINE__)); - } - - break; - } - else - { - HB_TRACE(HB_TR_INFO, ("Class: '%s' not suported!\n", hb_objGetClsName( pItem ))); - } - } - else - { - unsigned long i; - SAFEARRAY *parray; - - vt = VT_VARIANT; - VariantInit( &mVariant ); - pSource = &mVariant; - -ItemToVariant_ProcessArray: - - rgsabound.cElements = hb_arrayLen( pItem ); - rgsabound.lLbound = 0; - - /*HB_TRACE(HB_TR_INFO, ("ItemToVariant() Array len: %i type: %i ByRef: %i in: %s(%i) \n", rgsabound.cElements, vt, bByRef, __FILE__, __LINE__));*/ - - parray = SafeArrayCreate( vt, 1, &rgsabound ); - - if( bByRef ) - { - pVariant->n1.n2.vt = ( VT_ARRAY | VT_BYREF | vt ); - /* Hack!!! Using high 4 bytes of the union (llVal) */ - *( ( SAFEARRAY ** ) ( &pVariant->n1.n2.n3.lVal ) + 1 ) = parray; - pVariant->n1.n2.n3.pparray = ( SAFEARRAY ** ) ( &pVariant->n1.n2.n3.lVal ) + 1; - } - else - { - pVariant->n1.n2.vt = ( VT_ARRAY | vt ); - pVariant->n1.n2.n3.parray = parray; - } - - for( i = 0; i < rgsabound.cElements; i++ ) - { - hb_oleItemToVariant( &mVariant, hb_arrayGetItemPtr( pItem, i + 1 ) ); - SafeArrayPutElement( parray, ( LONG * ) &i, pSource ); - VariantClear( &mVariant ); - } - } - } - break; - - default: - { - /*HB_TRACE(HB_TR_INFO, ("Unexpected type %p in: %s(%i)!\n", hb_itemType( pItem ), __FILE__, __LINE__));*/ - } - } -} - -/* ----------------------------------------------------------------------- */ -static PHB_ITEM * GetParams( DISPPARAMS *pDispParams, int nOffset ) -{ - VARIANTARG * pArgs = NULL; - int n, nArgs, nArg; - /*BOOL bByRef;*/ - PHB_ITEM *aPrgParams = NULL; - - nArgs = hb_pcount() - nOffset; - - if( nArgs > 0 ) - { - pArgs = ( VARIANTARG * ) hb_xgrab( sizeof( VARIANTARG ) * nArgs ); - aPrgParams = ( PHB_ITEM * ) hb_xgrab( sizeof( PHB_ITEM ) * nArgs ); - - /*printf( "Args: %i\n", nArgs );*/ - - for( n = 0; n < nArgs; n++ ) - { - /* Parameters are processed in reversed order. */ - nArg = nArgs - n; - VariantInit( &( pArgs[ n ] ) ); - - aPrgParams[ n ] = hb_stackItemFromBase( nArg + nOffset ); - - /*HB_TRACE(HB_TR_INFO, ("N: %i Arg: %i Type: %i %i ByRef: %i\n", n, nArg, hb_itemType( pParam ), hb_itemType( aPrgParams[ n ] ), bByRef));*/ - - hb_oleItemToVariant( &( pArgs[ n ] ), aPrgParams[ n ] ); - } - } - - pDispParams->rgvarg = pArgs; - pDispParams->cArgs = nArgs; - pDispParams->rgdispidNamedArgs = 0; - pDispParams->cNamedArgs = 0; - - return aPrgParams; -} - -/* ----------------------------------------------------------------------- */ -static void FreeParams( DISPPARAMS *pDispParams, PHB_ITEM *aPrgParams ) -{ - if( pDispParams->cArgs > 0 ) - { - IDispatch *pDisp = NULL; - int n; /*, nParam;*/ - char *sString; - VARIANT *pVariant; - PHB_ITEM pItem; - BOOL bByRef; - - for( n = 0; n < ( int ) pDispParams->cArgs; n++ ) - { - pVariant = &( pDispParams->rgvarg[ n ] ); - pItem = aPrgParams[ n ]; - - if( HB_IS_BYREF( pItem ) ) - { - bByRef = TRUE; - pItem = hb_itemUnRef( pItem ); - } - else - bByRef = FALSE; - - /*nParam = pDispParams->cArgs - n;*/ - - /*HB_TRACE(HB_TR_INFO, ("*** N: %i, Param: %i Type: %i\n", n, nParam, pVariant->n1.n2.vt));*/ - - if( bByRef ) - { - switch( pVariant->n1.n2.vt ) - { - case VT_BYREF | VT_BSTR: - SysFreeString( *pVariant->n1.n2.n3.pbstrVal ); - sString = hb_oleWideToAnsi( *( pVariant->n1.n2.n3.pbstrVal ) ); - hb_itemPutCPtr( pItem, sString ); - break; - - case VT_BSTR: - sString = hb_oleWideToAnsi( pVariant->n1.n2.n3.bstrVal ); - hb_itemPutCPtr( pItem, sString ); - break; - - case VT_BYREF | VT_BOOL: - /*( pItem )->type = HB_IT_LOGICAL;*/ - hb_itemPutL( pItem, *pVariant->n1.n2.n3.pboolVal == VARIANT_FALSE ? FALSE : TRUE ); - break; - - case VT_BOOL: - hb_itemPutL( pItem, pVariant->n1.n2.n3.boolVal == VARIANT_FALSE ? FALSE : TRUE ); - break; - - case ( VT_BYREF | VT_DISPATCH ): - if( *pVariant->n1.n2.n3.ppdispVal == NULL ) - { - hb_itemClear( pItem ); - break; - } - else - { - pDisp = *pVariant->n1.n2.n3.ppdispVal; - } - /* Intentionally fall through. */ - - case VT_DISPATCH: - if( pVariant->n1.n2.vt == VT_DISPATCH ) - { - if( pVariant->n1.n2.n3.pdispVal == NULL ) - { - hb_itemClear( pItem ); - break; - } - else - pDisp = pVariant->n1.n2.n3.pdispVal; - } - - if( s_pOleAuto == NULL ) - s_pOleAuto = hb_itemNew( NULL ); - else - hb_itemClear( s_pOleAuto ); - - if( s_pSym_TOleAuto ) - { - hb_vmPushDynSym( s_pSym_TOleAuto ); - hb_vmPushNil(); - hb_vmDo( 0 ); - - hb_itemForwardValue( s_pOleAuto, hb_stackReturnItem() ); - } - - if( s_pSym_New && hb_itemType( s_pOleAuto ) ) - { - /* Implemented in :New() */ - /*pDisp->lpVtbl->AddRef( pDisp );*/ - - /*TOleAuto():New( nDispatch )*/ - hb_vmPushDynSym( s_pSym_New ); - hb_itemPushForward( s_pOleAuto ); - hb_vmPushNumInt( ( HB_PTRUINT ) pDisp ); - hb_vmSend( 1 ); - - hb_itemForwardValue( pItem, hb_stackReturnItem() ); - } - break; - - case VT_BYREF | VT_I2: - hb_itemPutNI( pItem, ( int ) *pVariant->n1.n2.n3.piVal ); - break; - - case VT_I2: - hb_itemPutNI( pItem, ( int ) pVariant->n1.n2.n3.iVal ); - break; - - case VT_BYREF | VT_I4: - hb_itemPutNL( pItem, ( long ) *pVariant->n1.n2.n3.plVal ); - break; - - case VT_I4: - hb_itemPutNL( pItem, ( long ) pVariant->n1.n2.n3.lVal ); - break; - - #ifndef HB_LONG_LONG_OFF - case VT_BYREF | VT_I8: - hb_itemPutNLL( pItem, ( LONGLONG ) *pVariant->n1.n2.n3.pllVal ); - break; - #endif - - #ifndef HB_LONG_LONG_OFF - case VT_I8: - hb_itemPutNLL( pItem, ( LONGLONG ) pVariant->n1.n2.n3.llVal ); - break; - #endif - - case VT_BYREF | VT_R8: - hb_itemPutND( pItem, *pVariant->n1.n2.n3.pdblVal ); - break; - - case VT_R8: - hb_itemPutND( pItem, pVariant->n1.n2.n3.dblVal ); - break; - - case VT_BYREF | VT_DATE: - hb_itemPutTD( pItem, *pVariant->n1.n2.n3.pdblVal + ( double ) 2415019 ); - break; - - case VT_DATE: - hb_itemPutTD( pItem, pVariant->n1.n2.n3.dblVal + ( double ) 2415019 ); - break; - - case VT_BYREF | VT_EMPTY: - case VT_EMPTY: - hb_itemClear( pItem ); - break; - - case VT_BYREF | VT_VARIANT: - hb_oleItemToVariant( pVariant->n1.n2.n3.pvarVal, pItem ); - break; - - default: - if( ( VARTYPE ) ( pVariant->n1.n2.vt & ( VT_BYREF | VT_ARRAY ) ) == ( VARTYPE ) ( VT_BYREF | VT_ARRAY ) ) - { - VARTYPE vt; - PHB_ITEM pArray; - UINT iDims = SafeArrayGetDim( *pVariant->n1.n2.n3.pparray ); - long * rgIndices = ( long * ) hb_xgrab( sizeof( long ) * iDims ); - - vt = pVariant->n1.n2.vt; - vt &= ~VT_ARRAY; - vt &= ~VT_BYREF; - - pArray = SafeArrayToArray( *pVariant->n1.n2.n3.pparray, iDims, rgIndices, vt ); - - hb_xfree( ( void * ) rgIndices ); - - hb_itemForwardValue( pItem, pArray ); - hb_itemRelease( pArray ); - } - else - { - HB_TRACE(HB_TR_INFO, ("Unexpected type %p in: %s(%i)!\n", ( void * ) ( HB_PTRUINT ) pVariant->n1.n2.vt, __FILE__, __LINE__)); - } - } - } - else - { - if( pVariant->n1.n2.vt & VT_BYREF ) - { - HB_TRACE(HB_TR_INFO, ("Unexpected type %p in: %s(%i)!\n", ( void * ) ( HB_PTRUINT ) pVariant->n1.n2.vt, __FILE__, __LINE__)); - } - } - - VariantClear( &(pDispParams->rgvarg[ n ] ) ); - } - - hb_xfree( ( LPVOID ) pDispParams->rgvarg ); - hb_xfree( ( LPVOID ) aPrgParams ); - } -} - -/* ----------------------------------------------------------------------- */ -static PHB_ITEM SafeArrayToArray( SAFEARRAY * parray, UINT iDim, long * rgIndices, VARTYPE vt ) -{ - long iFrom, iTo, iLen, i; - PHB_ITEM pArray = hb_itemNew( NULL ); - - if( parray == NULL ) - { - hb_arrayNew( pArray, 0 ); - return pArray; - } - - SafeArrayGetLBound( parray, iDim, &iFrom ); - SafeArrayGetUBound( parray, iDim, &iTo ); - - iLen = iTo - iFrom + 1; - - if( iDim > 1 ) - { - PHB_ITEM pSubArray; - - hb_arrayNew( pArray, iLen ); - - for( i = iFrom; i <= iTo; i++ ) - { - rgIndices[ iDim - 1 ] = i; - - /*printf( " Sub: %i\n", i );*/ - - pSubArray = SafeArrayToArray( parray, iDim - 1, rgIndices, vt ); - hb_arraySetForward( pArray, i - iFrom + 1, pSubArray ); - hb_itemRelease( pSubArray ); - } - } - else - { - VARIANT mElem; - void * pTarget; - char * sArray = NULL; - - VariantInit( &mElem ); - - if( vt == VT_VARIANT ) - { - hb_arrayNew( pArray, iLen ); - - pTarget = &mElem; - } - else - { - if( vt == VT_I1 || vt == VT_UI1 ) - { - /* Ugly hack, but needed to allocate our signature as hidden bytes! */ - hb_itemPutC( pArray, NULL ); - HB_STRING_ALLOC( pArray, ( ULONG )( iLen + 5 ) ); - pArray->item.asString.length = iLen; /* TOFIX */ - - sArray = hb_itemGetCPtr( pArray ); - - sArray[ iLen ] = 0x7A; - sArray[ iLen + 1 ] = 0x7B; - sArray[ iLen + 2 ] = 0x7C; - sArray[ iLen + 3 ] = 0x7D; - sArray[ iLen + 4 ] = ( char ) vt; - - pTarget = NULL; - } - else - { - hb_arrayNew( pArray, iLen ); - - pTarget = &mElem.n1.n2.n3.cVal; - } - } - - for( i = iFrom; i <= iTo; i++ ) - { - rgIndices[ iDim - 1 ] = i; - - if( vt != VT_VARIANT ) - { - /* Get cleared on VariantClear() - don't place out of loop! */ - mElem.n1.n2.vt = vt; - - if( vt == VT_I1 || vt == VT_UI1 ) - { - SafeArrayGetElement( parray, rgIndices, &( sArray[ i - iFrom ] ) ); - - continue; - } - } - - if( SUCCEEDED( SafeArrayGetElement( parray, rgIndices, pTarget ) ) ) - { - /*HB_TRACE(HB_TR_INFO, ("Type: %p in: %s(%i)\n", mElem.n1.n2.vt, __FILE__, __LINE__));*/ - - hb_oleVariantToItem( hb_arrayGetItemPtr( pArray, i - iFrom + 1 ), &mElem ); - - VariantClear( &mElem ); - } - } - } - - /*HB_TRACE(HB_TR_INFO, ("Return len: %i\n", hb_arrayLen( pArray )));*/ - - /* Wrap our array with VTArrayWrapper() class ( aArray := VTArrayWrapper( vt, aArray) ) */ - if( HB_IS_ARRAY( pArray ) && vt != VT_VARIANT ) - { - PHB_ITEM pVT = hb_itemPutNL( hb_itemNew( NULL ), ( long ) vt ); - - hb_vmPushDynSym( s_pSym_VTArrayWrapper ); - hb_vmPushNil(); - hb_itemPushForward( pVT ); - hb_itemPushForward( pArray ); - hb_vmDo( 2 ); - - hb_itemForwardValue( pArray, hb_stackReturnItem() ); - - hb_itemRelease( pVT ); - } - - return pArray; -} - -/* ----------------------------------------------------------------------- */ -HRESULT hb_oleVariantToItem( PHB_ITEM pItem, VARIANT *pVariant ) -{ - PHB_ITEM pOleAuto; - IUnknown *pUnk = NULL; - IDispatch *pDisp = NULL; - SAFEARRAY *parray;/* = NULL;*/ - - hb_itemClear( pItem ); - - /* Don't "optimize" (VT_ARRAY | VT_VARIANT) must not match! */ - while( pVariant->n1.n2.vt == ( VT_BYREF | VT_VARIANT ) || pVariant->n1.n2.vt == VT_VARIANT || pVariant->n1.n2.vt == VT_BYREF ) - pVariant = pVariant->n1.n2.n3.pvarVal; - - switch( pVariant->n1.n2.vt ) - { - case VT_BSTR | VT_BYREF: - case VT_BSTR: - { - char *sString; - - if( pVariant->n1.n2.vt & VT_BYREF ) - sString = hb_oleWideToAnsi( *pVariant->n1.n2.n3.pbstrVal ); - else - sString = hb_oleWideToAnsi( pVariant->n1.n2.n3.bstrVal ); - - if( sString ) - hb_itemPutCPtr( pItem, sString ); - else - hb_itemPutC( pItem, NULL ); - - break; - } - - case VT_BOOL | VT_BYREF: - hb_itemPutL( pItem, *pVariant->n1.n2.n3.pboolVal == VARIANT_FALSE ? FALSE : TRUE ); - break; - - case VT_BOOL: - hb_itemPutL( pItem, pVariant->n1.n2.n3.boolVal == VARIANT_FALSE ? FALSE : TRUE ); - break; - - case ( VT_UNKNOWN | VT_BYREF ): - pUnk = *pVariant->n1.n2.n3.ppunkVal; - /* Intentionally fall through */ - - case VT_UNKNOWN: - if( pVariant->n1.n2.vt == VT_UNKNOWN ) - pUnk = pVariant->n1.n2.n3.punkVal; - - if( pUnk ) - { - IDispatch ** pDispPtr = &pDisp; - pUnk->lpVtbl->QueryInterface( pUnk, HB_ID_REF( REFIID, IID_IDispatch ), ( void ** ) pDispPtr ); - } - /* Intentionally fall through */ - - case ( VT_DISPATCH | VT_BYREF ): - if( pVariant->n1.n2.vt == ( VT_DISPATCH | VT_BYREF ) ) - pDisp = *pVariant->n1.n2.n3.ppdispVal; - /* Intentionally fall through */ - - case VT_DISPATCH: - if( pVariant->n1.n2.vt == VT_DISPATCH ) - pDisp = pVariant->n1.n2.n3.pdispVal; - - if( pDisp == NULL ) - { - if( pUnk ) - { - PHB_ITEM pVT = hb_itemPutNL( hb_itemNew( NULL ), ( long ) pVariant->n1.n2.vt ); - PHB_ITEM pUnknown = hb_itemPutPtr( hb_itemNew( NULL ), ( void * ) pUnk ); - - hb_vmPushDynSym( s_pSym_VTWrapper ); - hb_vmPushNil(); - hb_itemPushForward( pVT ); - hb_itemPushForward( pUnknown ); - hb_vmDo( 2 ); - - if( pItem != hb_stackReturnItem() ) - hb_itemForwardValue( pItem, hb_stackReturnItem() ); - - hb_itemRelease( pVT ); - hb_itemRelease( pUnknown ); - } - - break; - } - - pOleAuto = hb_itemNew( NULL ); - - hb_vmPushDynSym( s_pSym_TOleAuto ); - hb_vmPushNil(); - hb_vmDo( 0 ); - - /* Safety! */ - hb_vmRequestReset(); - - hb_itemForwardValue( pOleAuto, hb_stackReturnItem() ); - - if( hb_itemType( pOleAuto ) ) - { - /*TOleAuto():New( nDispatch )*/ - hb_vmPushDynSym( s_pSym_New ); - hb_itemPushForward( pOleAuto ); - hb_vmPushNumInt( ( HB_PTRUINT ) pDisp ); - hb_vmSend( 1 ); - - /* If retrieved from IUnknown than doubly added! */ - if( pVariant->n1.n2.vt == VT_UNKNOWN || pVariant->n1.n2.vt == ( VT_UNKNOWN | VT_BYREF ) ) - pDisp->lpVtbl->Release( pDisp ); - - hb_itemRelease( pOleAuto ); - - /* Safety! */ - hb_vmRequestReset(); - - if( pItem != hb_stackReturnItem() ) - hb_itemForwardValue( pItem, hb_stackReturnItem() ); - } - break; - - case VT_I1 | VT_BYREF: /* Byte */ - case VT_UI1 | VT_BYREF: - hb_itemPutNI( pItem, ( short ) *pVariant->n1.n2.n3.pbVal ); - break; - - case VT_I1: /* Byte */ - case VT_UI1: - hb_itemPutNI( pItem, ( short ) pVariant->n1.n2.n3.bVal ); - break; - - case VT_I2 | VT_BYREF: /* Short (2 bytes) */ - case VT_UI2 | VT_BYREF: - hb_itemPutNI( pItem, ( short ) *pVariant->n1.n2.n3.piVal ); - break; - - case VT_I2: /* Short (2 bytes) */ - case VT_UI2: - hb_itemPutNI( pItem, ( short ) pVariant->n1.n2.n3.iVal ); - break; - - case VT_I4 | VT_BYREF: /* Long (4 bytes) */ - case VT_UI4 | VT_BYREF: - case VT_INT | VT_BYREF: - case VT_UINT | VT_BYREF: - hb_itemPutNL( pItem, ( long ) *pVariant->n1.n2.n3.plVal ); - break; - - case VT_I4: /* Long (4 bytes) */ - case VT_UI4: - case VT_INT: - case VT_UINT: - hb_itemPutNL( pItem, ( long ) pVariant->n1.n2.n3.lVal ); - break; - - case VT_R4 | VT_BYREF: /* Single */ - hb_itemPutND( pItem, *pVariant->n1.n2.n3.pfltVal ); - break; - - case VT_R4: /* Single */ - hb_itemPutND( pItem, pVariant->n1.n2.n3.fltVal ); - break; - - case VT_R8 | VT_BYREF: /* Double */ - hb_itemPutND( pItem, *pVariant->n1.n2.n3.pdblVal ); - break; - - case VT_R8: /* Double */ - hb_itemPutND( pItem, pVariant->n1.n2.n3.dblVal ); - break; - - case VT_CY | VT_BYREF: /* Currency */ - case VT_CY: /* Currency */ - { - double tmp = 0; - - if( pVariant->n1.n2.vt & VT_BYREF ) - VarR8FromCy( *pVariant->n1.n2.n3.pcyVal, &tmp ); - else - VarR8FromCy( pVariant->n1.n2.n3.cyVal, &tmp ); - - hb_itemPutND( pItem, tmp ); - break; - } - - case VT_DECIMAL | VT_BYREF: /* Decimal */ - case VT_DECIMAL: /* Decimal */ - { - double tmp = 0; - - if( pVariant->n1.n2.vt & VT_BYREF ) - VarR8FromDec( pVariant->n1.n2.n3.pdecVal, &tmp ); - else - VarR8FromDec( &pVariant->n1.decVal, &tmp ); - - hb_itemPutND( pItem, tmp ); - break; - } - - case VT_DATE | VT_BYREF: - hb_itemPutTD( pItem, *pVariant->n1.n2.n3.pdblVal + ( double ) 2415019 ); - break; - - case VT_DATE: - hb_itemPutTD( pItem, pVariant->n1.n2.n3.dblVal + ( double ) 2415019 ); - break; - - case VT_EMPTY | VT_BYREF: - case VT_NULL | VT_BYREF: - case VT_EMPTY: - case VT_NULL: - break; - - /* - case VT_VARIANT: - hb_oleVariantToItem( pItem, pVariant->n1.n2.n3.pvarVal ); - break; - */ - - case VT_PTR: - hb_itemPutPtr( pItem, pVariant->n1.n2.n3.byref ); - break; - - default: - if( pVariant->n1.n2.vt & VT_ARRAY ) - { - UINT iDims; - long * rgIndices; - PHB_ITEM pArray; - VARTYPE vt; - - if( pVariant->n1.n2.vt & VT_BYREF ) - parray = *pVariant->n1.n2.n3.pparray; - else - parray = pVariant->n1.n2.n3.parray; - - if( parray ) - { - iDims = SafeArrayGetDim( parray ); - rgIndices = ( long * ) hb_xgrab( sizeof( long ) * iDims ); - - vt = pVariant->n1.n2.vt; - vt &= ~VT_ARRAY; - vt &= ~VT_BYREF; - - /*HB_TRACE(HB_TR_INFO, ("Type: %p in: %s(%i)\n", vt, __FILE__, __LINE__));*/ - - pArray = SafeArrayToArray( parray, iDims, rgIndices, vt ); - - hb_xfree( ( void * ) rgIndices ); - - hb_itemForwardValue( pItem, pArray ); - hb_itemRelease( pArray ); - } - else - hb_arrayNew( pItem, 0 ); - } - else - { - HB_TRACE(HB_TR_INFO, ("Unexpected type %p in: %s(%i)!\n", ( void * ) ( HB_PTRUINT ) pVariant->n1.n2.vt, __FILE__, __LINE__)); - return E_FAIL; - } - } - - /*VariantClear( pVariant );*/ - - return S_OK; -} - -/* ----------------------------------------------------------------------- */ -static void RetValue( void ) -{ - hb_oleVariantToItem( hb_stackReturnItem(), &s_RetVal ); - - VariantClear( &s_RetVal ); - - return; -} - -HB_FUNC( __OLEENUMNEXT ) -{ - IEnumVARIANT *pEnumVariant = ( IEnumVARIANT * ) hb_parptr( 1 ); - ULONG *pcElementFetched = NULL; - - if( pEnumVariant->lpVtbl->Next( pEnumVariant, 1, &s_RetVal, pcElementFetched ) == S_OK ) - { - hb_oleVariantToItem( hb_stackReturnItem(), &s_RetVal ); - VariantClear( &s_RetVal ); - hb_storl( TRUE, 2 ); - } - else - hb_storl( FALSE, 2 ); -} - -HB_FUNC( __OLEENUMSTOP ) -{ - IEnumVARIANT *pEnumVariant = ( IEnumVARIANT * ) hb_parptr( 1 ); - pEnumVariant->lpVtbl->Release( pEnumVariant ); -} - -/* ----------------------------------------------------------------------- */ -HB_FUNC( OLEEXCEPTIONSOURCE ) -{ - if( ( LONG ) s_nOleError == DISP_E_EXCEPTION ) - hb_retc_buffer( hb_oleWideToAnsi( s_excep.bstrSource ) ); -} - -/* ----------------------------------------------------------------------- */ -HB_FUNC( OLEEXCEPTIONDESCRIPTION ) -{ - if( ( LONG ) s_nOleError == DISP_E_EXCEPTION ) - hb_retc_buffer( hb_oleWideToAnsi( s_excep.bstrDescription ) ); -} - -/* ----------------------------------------------------------------------- */ -HB_FUNC( OLEERROR ) -{ - hb_retnl( ( long ) s_nOleError ); -} - -/* ----------------------------------------------------------------------- */ -static char * Ole2TxtError( void ) -{ - switch( ( LONG ) s_nOleError ) - { - case S_OK: return "S_OK"; - case CO_E_CLASSSTRING: return "CO_E_CLASSSTRING"; - case OLE_E_WRONGCOMPOBJ: return "OLE_E_WRONGCOMPOBJ"; - case REGDB_E_CLASSNOTREG: return "REGDB_E_CLASSNOTREG"; - case REGDB_E_WRITEREGDB: return "REGDB_E_WRITEREGDB"; - case E_FAIL: return "E_FAIL"; - case E_OUTOFMEMORY: return "E_OUTOFMEMORY"; - case E_NOTIMPL: return "E_NOTIMPL"; - case E_INVALIDARG: return "E_INVALIDARG"; - case E_UNEXPECTED: return "E_UNEXPECTED"; - case DISP_E_UNKNOWNNAME: return "DISP_E_UNKNOWNNAME"; - case DISP_E_UNKNOWNLCID: return "DISP_E_UNKNOWNLCID"; - case DISP_E_BADPARAMCOUNT: return "DISP_E_BADPARAMCOUNT"; - case DISP_E_BADVARTYPE: return "DISP_E_BADVARTYPE"; - case DISP_E_EXCEPTION: return "DISP_E_EXCEPTION"; - case DISP_E_MEMBERNOTFOUND: return "DISP_E_MEMBERNOTFOUND"; - case DISP_E_NONAMEDARGS: return "DISP_E_NONAMEDARGS"; - case DISP_E_OVERFLOW: return "DISP_E_OVERFLOW"; - case DISP_E_PARAMNOTFOUND: return "DISP_E_PARAMNOTFOUND"; - case DISP_E_TYPEMISMATCH: return "DISP_E_TYPEMISMATCH"; - case DISP_E_UNKNOWNINTERFACE: return "DISP_E_UNKNOWNINTERFACE"; - case DISP_E_PARAMNOTOPTIONAL: return "DISP_E_PARAMNOTOPTIONAL"; - case CO_E_SERVER_EXEC_FAILURE: return "CO_E_SERVER_EXEC_FAILURE"; - case MK_E_UNAVAILABLE: return "MK_E_UNAVAILABLE"; - } - - HB_TRACE(HB_TR_INFO, ("TOleAuto Error %p\n", ( void * ) ( HB_PTRUINT ) s_nOleError)); - - return "Unknown error"; -} - -/* ----------------------------------------------------------------------- */ -HB_FUNC( OLE2TXTERROR ) -{ - hb_retc( Ole2TxtError() ); -} - -/* ----------------------------------------------------------------------- */ -HB_FUNC( MESSAGEBOX ) -{ - LPTSTR lpStr1 = HB_TCHAR_CONVTO( hb_parcx( 2 ) ); - LPTSTR lpStr2 = HB_TCHAR_CONVTO( hb_parcx( 3 ) ); - HWND hWnd = HB_ISNUM( 1 ) ? ( HWND ) ( HB_PTRUINT ) hb_parnint( 1 ) : - ( HWND ) hb_parptr( 1 ); - hb_retni( MessageBox( hWnd, lpStr1, lpStr2, hb_parni( 4 ) ) ); - HB_TCHAR_FREE( lpStr1 ); - HB_TCHAR_FREE( lpStr2 ); -} - -/* ----------------------------------------------------------------------- */ -HB_FUNC( CREATEOLEOBJECT ) /* ( cOleName | cCLSID [, cIID ] [, cLicense ] ) */ -{ - BSTR bstrClassID; - IID ClassID, iid; - LPIID riid = ( LPIID ) &IID_IDispatch; - void *pDisp = NULL; /* IDispatch */ - /* void * - * used intentionally to inform compiler that there is no - * strict-aliasing - */ - bstrClassID = hb_oleAnsiToSysString( hb_parcx( 1 ) ); - - if( hb_parcx( 1 )[ 0 ] == '{' ) - s_nOleError = CLSIDFromString( bstrClassID, ( LPCLSID ) &ClassID ); - else - s_nOleError = CLSIDFromProgID( bstrClassID, ( LPCLSID ) &ClassID ); - - SysFreeString( bstrClassID ); - - /*HB_TRACE(HB_TR_INFO, ("Result: %p\n", s_nOleError));*/ - - if( HB_ISCHAR( 2 ) ) - { - if( hb_parcx( 2 )[ 0 ] == '{' ) - { - bstrClassID = hb_oleAnsiToSysString( hb_parcx( 2 ) ); - s_nOleError = CLSIDFromString( bstrClassID, &iid ); - SysFreeString( bstrClassID ); - } - else - memcpy( ( LPVOID ) &iid, hb_parcx( 2 ), sizeof( iid ) ); - - riid = &iid; - } - - if( SUCCEEDED( s_nOleError ) ) - { - if( HB_ISCHAR( 3 ) ) - { - LPVOID * pCFPtr = NULL; - - s_nOleError = CoGetClassObject( HB_ID_REF( REFCLSID, ClassID ), CLSCTX_SERVER, NULL, HB_ID_REF( REFIID, IID_IClassFactory2 ), pCFPtr ); - - if( SUCCEEDED( s_nOleError ) ) - { - IClassFactory2 * pCF = ( IClassFactory2 * ) pCFPtr; - BSTR bstrLic = hb_oleAnsiToSysString( hb_parc( 3 ) ); - - s_nOleError = pCF->lpVtbl->CreateInstanceLic( pCF, NULL, NULL, (REFIID) riid, bstrLic, &pDisp ); - - SysFreeString( bstrLic ); - pCF->lpVtbl->Release( pCF ); - } - } - else - { - /*HB_TRACE(HB_TR_INFO, ("Class: %i\n", ClassID));*/ - s_nOleError = CoCreateInstance( HB_ID_REF( REFCLSID, ClassID ), NULL, CLSCTX_SERVER, (REFIID) riid, &pDisp ); - /*HB_TRACE(HB_TR_INFO, ("Result: %p\n", s_nOleError));*/ - } - } - - hb_retnint( ( HB_PTRUINT ) pDisp ); -} - -/* ----------------------------------------------------------------------- */ -HB_FUNC( GETOLEOBJECT ) /* ( cOleName | cCLSID [, cIID ] ) */ -{ - BSTR bstrClassID; - IID ClassID, iid; - LPIID riid = ( LPIID ) &IID_IDispatch; - IUnknown *pUnk = NULL; - void *pDisp = NULL; /* IDispatch */ - /* void * - * used intentionally to inform compiler that there is no - * strict-aliasing - */ - - bstrClassID = hb_oleAnsiToSysString( hb_parcx( 1 ) ); - - if( hb_parcx( 1 )[ 0 ] == '{' ) - s_nOleError = CLSIDFromString( bstrClassID, ( LPCLSID ) &ClassID ); - else - s_nOleError = CLSIDFromProgID( bstrClassID, ( LPCLSID ) &ClassID ); - - /*s_nOleError = ProgIDFromCLSID( &ClassID, &pOleStr );*/ - /*wprintf( L"Result %i ProgID: '%s'\n", s_nOleError, pOleStr );*/ - - SysFreeString( bstrClassID ); - - if( hb_pcount() == 2 ) - { - if( hb_parcx( 2 )[ 0 ] == '{' ) - { - bstrClassID = hb_oleAnsiToSysString( hb_parcx( 2 ) ); - s_nOleError = CLSIDFromString( bstrClassID, &iid ); - SysFreeString( bstrClassID ); - } - else - memcpy( ( LPVOID ) &iid, hb_parcx( 2 ), sizeof( iid ) ); - - riid = &iid; - } - - if( SUCCEEDED( s_nOleError ) ) - { - s_nOleError = GetActiveObject( HB_ID_REF( REFCLSID, ClassID ), NULL, &pUnk ); - - if( SUCCEEDED( s_nOleError ) ) - { - s_nOleError = pUnk->lpVtbl->QueryInterface( pUnk, (REFIID) riid, &pDisp ); - - pUnk->lpVtbl->Release( pUnk ); - - if( SUCCEEDED( s_nOleError ) ) - hb_retnint( ( HB_PTRUINT ) pDisp ); - } - } -} - -/* ----------------------------------------------------------------------- */ -HB_FUNC( OLEADDREF ) /* ( hOleObject, szMethodName, uParams... ) */ -{ - IDispatch * pDisp = ( IDispatch * ) ( HB_PTRUINT ) hb_parnint( 1 ); - - /*HB_TRACE(HB_TR_INFO, ("OleAddRef( %p )\n", pDisp));*/ - - s_nOleError = pDisp->lpVtbl->AddRef( pDisp ); - - hb_retnl( s_nOleError ); -} - -/* ----------------------------------------------------------------------- */ -HB_FUNC( OLERELEASEOBJECT ) /* ( hOleObject, szMethodName, uParams... ) */ -{ - IDispatch * pDisp = ( IDispatch * ) ( HB_PTRUINT ) hb_parnint( 1 ); - - /*HB_TRACE(HB_TR_INFO, ("OleReleaseObject( %p )\n", pDisp));*/ - - s_nOleError = pDisp->lpVtbl->Release( pDisp ); - - hb_retnl( s_nOleError ); -} - -/* ----------------------------------------------------------------------- */ -static HRESULT OleSetProperty( IDispatch *pDisp, DISPID DispID, DISPPARAMS *pDispParams ) -{ - pDispParams->rgdispidNamedArgs = &s_lPropPut; - pDispParams->cNamedArgs = 1; - - /* 1 Based!!! */ - if( ( HB_ISBYREF( 1 ) ) || HB_ISARRAY( 1 ) ) - { - memset( ( LPBYTE ) &s_excep, 0, sizeof( s_excep ) ); - - s_nOleError = pDisp->lpVtbl->Invoke( pDisp, - DispID, - HB_ID_REF( REFIID, IID_NULL ), - LOCALE_SYSTEM_DEFAULT, - DISPATCH_PROPERTYPUTREF, - pDispParams, - NULL, /* No return value */ - &s_excep, - &s_uArgErr ); - - if( SUCCEEDED( s_nOleError ) ) - return s_nOleError; - } - - memset( ( LPBYTE ) &s_excep, 0, sizeof( s_excep ) ); - - s_nOleError = pDisp->lpVtbl->Invoke( pDisp, - DispID, - HB_ID_REF( REFIID, IID_NULL ), - LOCALE_SYSTEM_DEFAULT, - DISPATCH_PROPERTYPUT, - pDispParams, - NULL, /* No return value */ - &s_excep, - &s_uArgErr ); - - pDispParams->rgdispidNamedArgs = NULL; - pDispParams->cNamedArgs = 0; - - return s_nOleError; -} - -/* ----------------------------------------------------------------------- */ -static HRESULT OleInvoke( IDispatch *pDisp, DISPID DispID, DISPPARAMS *pDispParams ) -{ - memset( ( LPBYTE ) &s_excep, 0, sizeof( s_excep ) ); - - s_nOleError = pDisp->lpVtbl->Invoke( pDisp, - DispID, - HB_ID_REF( REFIID, IID_NULL ), - LOCALE_SYSTEM_DEFAULT, - DISPATCH_METHOD, - pDispParams, - &s_RetVal, - &s_excep, - &s_uArgErr ); - - return s_nOleError; -} - -/* ----------------------------------------------------------------------- */ -static HRESULT OleGetProperty( IDispatch *pDisp, DISPID DispID, DISPPARAMS *pDispParams ) -{ - memset( ( LPBYTE ) &s_excep, 0, sizeof( s_excep ) ); - - s_nOleError = pDisp->lpVtbl->Invoke( pDisp, - DispID, - HB_ID_REF( REFIID, IID_NULL ), - LOCALE_SYSTEM_DEFAULT, - DISPATCH_PROPERTYGET, - pDispParams, - &s_RetVal, - &s_excep, - &s_uArgErr ); - - /*HB_TRACE(HB_TR_INFO, ("OleGetValue: %p\n", s_nOleError));*/ - - return s_nOleError; -} - -/* ----------------------------------------------------------------------- */ -static HRESULT OleGetValue( IDispatch *pDisp ) -{ - VariantClear( &s_RetVal ); - - /* Try to apply the requested message to the DEFAULT Property of the object if any. */ - if( SUCCEEDED( OleGetProperty( pDisp, DISPID_VALUE, &s_EmptyDispParams ) ) && ( s_RetVal.n1.n2.vt == VT_DISPATCH || s_RetVal.n1.n2.vt == ( VT_DISPATCH | VT_BYREF ) ) ) - { - VariantCopy( &s_OleVal, &s_RetVal ); - VariantClear( &s_RetVal ); - - return s_nOleError; - } - - return E_FAIL; -} - -/* ----------------------------------------------------------------------- */ -static void OleThrowError( void ) -{ - PHB_ITEM pReturn; - char *sDescription; - BOOL fFree = FALSE; - - hb_vmPushDynSym( s_pSym_cClassName ); - hb_vmPush( hb_stackSelfItem() ); - hb_vmSend( 0 ); - - if( s_nOleError == DISP_E_EXCEPTION ) - { - sDescription = hb_oleWideToAnsi( s_excep.bstrDescription ); - fFree = TRUE; - } - else - sDescription = Ole2TxtError(); - - /*HB_TRACE(HB_TR_INFO, ("Desc: '%s'\n", sDescription));*/ - - pReturn = hb_errRT_SubstParams( hb_parcx( -1 ), EG_OLEEXCEPTION, ( ULONG ) s_nOleError, sDescription, hb_itemGetSymbol( hb_stackBaseItem() )->szName ); - - if( fFree ) - { - hb_xfree( ( void * ) sDescription ); - } - - if( pReturn ) - hb_itemReturnRelease( pReturn ); -} - -/* ----------------------------------------------------------------------- */ -HB_FUNC( TOLEAUTO_OLEVALUE ) -{ - if( hb_pcount() == 0 ) - { - IDispatch *pDisp; - - hb_vmPushDynSym( s_pSym_hObj ); - hb_vmPush( hb_stackSelfItem() ); - hb_vmSend( 0 ); - - pDisp = ( IDispatch * ) ( HB_PTRUINT ) hb_parnint( -1 ); - - VariantClear( &s_RetVal ); - - OleGetProperty( pDisp, DISPID_VALUE, &s_EmptyDispParams ); - /*HB_TRACE(HB_TR_INFO, ("GetDefault: %p\n", s_nOleError));*/ - - if( SUCCEEDED( s_nOleError ) ) - RetValue(); - else - OleThrowError(); - } -} - -/* ----------------------------------------------------------------------- */ -HB_FUNC( TOLEAUTO__OLEVALUE ) -{ - if( hb_pcount() >= 1 ) - { - IDispatch *pDisp; - DISPPARAMS DispParams; - PHB_ITEM *aPrgParams; - - hb_vmPushDynSym( s_pSym_hObj ); - hb_vmPush( hb_stackSelfItem() ); - hb_vmSend( 0 ); - - pDisp = ( IDispatch * ) ( HB_PTRUINT ) hb_parnint( -1 ); - - VariantClear( &s_RetVal ); - - aPrgParams = GetParams( &DispParams, 0 ); - - OleSetProperty( pDisp, DISPID_VALUE, &DispParams ); - /*HB_TRACE(HB_TR_INFO, ("SetDefault: %p\n", s_nOleError));*/ - - FreeParams( &DispParams, aPrgParams ); - - if( SUCCEEDED( s_nOleError ) ) - hb_itemReturn( hb_stackItemFromBase( 1 ) ); - else - OleThrowError(); - } -} - -/* ----------------------------------------------------------------------- */ - -HB_FUNC( TOLEAUTO_OLENEWENUMERATOR ) /* ( hOleObject, szMethodName, uParams... ) */ -{ - IDispatch *pDisp; - - hb_vmPushDynSym( s_pSym_hObj ); - hb_vmPush( hb_stackSelfItem() ); - hb_vmSend( 0 ); - - pDisp = ( IDispatch * ) ( HB_PTRUINT ) hb_parnint( -1 ); - - VariantClear( &s_RetVal ); - - if( SUCCEEDED( OleGetProperty( pDisp, DISPID_NEWENUM, &s_EmptyDispParams ) ) || - SUCCEEDED( OleInvoke( pDisp, DISPID_NEWENUM, &s_EmptyDispParams ) ) ) - { - LPVOID pEnumVariant = NULL; /* IEnumVARIANT */ - - if( s_RetVal.n1.n2.vt == ( VT_UNKNOWN | VT_BYREF ) ) - s_nOleError = (*s_RetVal.n1.n2.n3.ppunkVal)->lpVtbl->QueryInterface( *s_RetVal.n1.n2.n3.ppunkVal, HB_ID_REF( REFIID, IID_IEnumVARIANT ), &pEnumVariant ); - else if( s_RetVal.n1.n2.vt == VT_UNKNOWN ) - s_nOleError = s_RetVal.n1.n2.n3.punkVal->lpVtbl->QueryInterface( s_RetVal.n1.n2.n3.punkVal, HB_ID_REF( REFIID, IID_IEnumVARIANT ), &pEnumVariant ); - else if( s_RetVal.n1.n2.vt == ( VT_DISPATCH | VT_BYREF ) ) - s_nOleError = (*s_RetVal.n1.n2.n3.ppdispVal)->lpVtbl->QueryInterface( *s_RetVal.n1.n2.n3.ppdispVal, HB_ID_REF( REFIID, IID_IEnumVARIANT ), &pEnumVariant ); - else if( s_RetVal.n1.n2.vt == VT_DISPATCH ) - s_nOleError = s_RetVal.n1.n2.n3.pdispVal->lpVtbl->QueryInterface( s_RetVal.n1.n2.n3.pdispVal, HB_ID_REF( REFIID, IID_IEnumVARIANT ), &pEnumVariant ); - else - s_nOleError = E_FAIL; - - VariantClear( &s_RetVal ); - - if( SUCCEEDED( s_nOleError ) ) - hb_retptr( pEnumVariant ); - } - else - OleThrowError(); -} - -/* ----------------------------------------------------------------------- */ -static HRESULT OleGetID( IDispatch *pDisp, const char *szName, DISPID *pDispID, BOOL *pbSetFirst ) -{ - BSTR bstrMessage; - - if( pbSetFirst ) - *pbSetFirst = FALSE; - - /* - if( strcmp( szName, "OLEVALUE" ) == 0 || strcmp( szName, "_OLEVALUE" ) == 0 ) - { - DispID = DISPID_VALUE; - s_nOleError = S_OK; - } - else*/ if( szName[0] == '_' && szName[1] && hb_pcount() >= 1 ) - { - bstrMessage = hb_oleAnsiToSysString( szName + 1 ); - s_nOleError = pDisp->lpVtbl->GetIDsOfNames( pDisp, HB_ID_REF( REFIID, IID_NULL ), ( wchar_t ** ) &bstrMessage, 1, LOCALE_SYSTEM_DEFAULT, pDispID ); - SysFreeString( bstrMessage ); - /*HB_TRACE(HB_TR_INFO, ("1. ID of: '%s' -> %i Result: %p\n", hb_itemGetSymbol( hb_stackBaseItem() )->szName + 1, DispID, s_nOleError));*/ - - if( SUCCEEDED( s_nOleError ) ) - { - if( pbSetFirst ) - *pbSetFirst = TRUE; - } - } - else - s_nOleError = E_PENDING; - - if( FAILED( s_nOleError ) ) - { - /* Try again without removing the assign prefix (_). */ - bstrMessage = hb_oleAnsiToSysString( szName ); - s_nOleError = pDisp->lpVtbl->GetIDsOfNames( pDisp, HB_ID_REF( REFIID, IID_NULL ), ( wchar_t ** ) &bstrMessage, 1, 0, pDispID ); - SysFreeString( bstrMessage ); - /*HB_TRACE(HB_TR_INFO, ("2. ID of: '%s' -> %i Result: %p\n", szName, *pDispID, s_nOleError));*/ - } - - return s_nOleError; -} - -/* ----------------------------------------------------------------------- */ -HB_FUNC( TOLEAUTO_INVOKE ) -{ - IDispatch *pDisp; - char *szName = hb_parc(1); - DISPID DispID; - DISPPARAMS DispParams; - - hb_vmPushDynSym( s_pSym_hObj ); - hb_vmPush( hb_stackSelfItem() ); - hb_vmSend( 0 ); - - pDisp = ( IDispatch * ) ( HB_PTRUINT ) hb_parnint( -1 ); - - if( szName && SUCCEEDED( OleGetID( pDisp, szName, &DispID, NULL ) ) ) - { - PHB_ITEM *aPrgParams = GetParams( &DispParams, 1 ); - - if( SUCCEEDED( OleInvoke( pDisp, DispID, &DispParams ) ) ) - RetValue(); - - FreeParams( &DispParams, aPrgParams ); - } -} - -/* ----------------------------------------------------------------------- */ -HB_FUNC( TOLEAUTO_SET ) -{ - IDispatch *pDisp; - char *szName = hb_parc( 1 ); - DISPID DispID; - DISPPARAMS DispParams; - - hb_vmPushDynSym( s_pSym_hObj ); - hb_vmPush( hb_stackSelfItem() ); - hb_vmSend( 0 ); - pDisp = ( IDispatch * ) ( HB_PTRUINT ) hb_parnint( -1 ); - - if( szName && SUCCEEDED( OleGetID( pDisp, szName, &DispID, NULL ) ) ) - { - PHB_ITEM *aPrgParams = GetParams( &DispParams, 1 ); - - if( SUCCEEDED( OleSetProperty( pDisp, DispID, &DispParams ) ) ) - RetValue(); - - FreeParams( &DispParams, aPrgParams ); - } -} - -/* ----------------------------------------------------------------------- */ -HB_FUNC( TOLEAUTO_GET ) -{ - IDispatch *pDisp; - char *szName = hb_parc(1); - DISPID DispID; - DISPPARAMS DispParams; - - hb_vmPushDynSym( s_pSym_hObj ); - hb_vmPush( hb_stackSelfItem() ); - hb_vmSend( 0 ); - pDisp = ( IDispatch * ) ( HB_PTRUINT ) hb_parnint( -1 ); - - if( szName && SUCCEEDED( OleGetID( pDisp, szName, &DispID, NULL ) ) ) - { - PHB_ITEM *aPrgParams = GetParams( &DispParams, 1 ); - - if( SUCCEEDED( OleGetProperty( pDisp, DispID, &DispParams ) ) ) - RetValue(); - - FreeParams( &DispParams, aPrgParams ); - } -} - -/* ----------------------------------------------------------------------- */ -HB_FUNC( TOLEAUTO_ONERROR ) -{ - IDispatch *pDisp; - DISPID DispID; - DISPPARAMS DispParams; - BOOL bSetFirst = FALSE, bTryDefault = TRUE; - PHB_ITEM *aPrgParams = GetParams( &DispParams, 0 ); - - /*HB_TRACE(HB_TR_INFO, ("Class: '%s' Message: '%s', Params: %i Arg1: %i\n", hb_objGetClsName( hb_stackSelfItem() ), hb_itemGetSymbol( hb_stackBaseItem() )->szName, hb_pcount(), hb_parinfo(1)));*/ - - hb_vmPushDynSym( s_pSym_hObj ); - hb_vmPush( hb_stackSelfItem() ); - hb_vmSend( 0 ); - pDisp = ( IDispatch * ) ( HB_PTRUINT ) hb_parnint( -1 ); - -OleGetID: - - if( SUCCEEDED( OleGetID( pDisp, hb_itemGetSymbol( hb_stackBaseItem() )->szName, &DispID, &bSetFirst ) ) ) - { - VariantClear( &s_RetVal ); - - if( bSetFirst ) - { - if( SUCCEEDED( OleSetProperty( pDisp, DispID, &DispParams ) ) ) - hb_itemReturn( hb_stackItemFromBase( 1 ) ); - - /*HB_TRACE(HB_TR_INFO, ("FIRST OleSetProperty %i\n", s_nOleError));*/ - } - else - s_nOleError = E_PENDING; - - if( FAILED( s_nOleError ) ) - { - if( SUCCEEDED( OleInvoke( pDisp, DispID, &DispParams ) ) ) - RetValue(); - - /*HB_TRACE(HB_TR_INFO, ("OleInvoke %i\n", s_nOleError));*/ - } - - if( FAILED( s_nOleError ) ) - { - if( SUCCEEDED( OleGetProperty( pDisp, DispID, &DispParams ) ) ) - RetValue(); - - /*HB_TRACE(HB_TR_INFO, ("OleGetProperty(%i) %i\n", DispParams.cArgs, s_nOleError));*/ - } - - if( FAILED( s_nOleError ) && bSetFirst == FALSE && hb_pcount() >= 1 ) - { - if( SUCCEEDED( OleSetProperty( pDisp, DispID, &DispParams ) ) ) - hb_itemReturn( hb_stackItemFromBase( 1 ) ); - - /*HB_TRACE(HB_TR_INFO, ("OleSetProperty %i\n", s_nOleError));*/ - } - } - - if( SUCCEEDED( s_nOleError ) ) - { - /*HB_TRACE(HB_TR_INFO, ("Invoke Succeeded!\n"));*/ - if( HB_IS_OBJECT( hb_stackReturnItem() ) && hb_clsIsParent( hb_objGetClass( hb_stackReturnItem() ), "TOLEAUTO" ) ) - { - PHB_ITEM pReturn = hb_itemNew( NULL ); - PHB_ITEM pOleClassName = hb_itemNew( NULL ); - char *sOleClassName; - int iClassNameLen, iMsgNameLen; - - hb_itemForwardValue( pReturn, hb_stackReturnItem() ); - - hb_vmPushDynSym( s_pSym_cClassName ); - hb_vmPush( hb_stackSelfItem() ); - hb_vmSend( 0 ); - - iClassNameLen = hb_parclen( -1 ); - iMsgNameLen = strlen( hb_itemGetSymbol( hb_stackBaseItem() )->szName ); - - sOleClassName = ( char * ) hb_xgrab( iClassNameLen + 1 + iMsgNameLen + 1 ); - - hb_strncpy( sOleClassName, hb_parc( - 1 ), iClassNameLen ); - sOleClassName[ iClassNameLen ] = ':'; - hb_strncpy( sOleClassName + iClassNameLen + 1, hb_itemGetSymbol( hb_stackBaseItem() )->szName, iMsgNameLen ); - - /*HB_TRACE(HB_TR_INFO, ("Class: '%s'\n", sOleClassName));*/ - - hb_itemPutCLPtr( pOleClassName, sOleClassName, iClassNameLen + 1 + iMsgNameLen ); - - hb_vmPushDynSym( s_pSym_cClassName ); - hb_vmPush( pReturn ); - hb_itemPushForward( pOleClassName ); - hb_vmSend( 1 ); - - hb_itemReturnForward( pReturn ); - - hb_itemRelease( pReturn ); - hb_itemRelease( pOleClassName ); - } - } - else - { - /* Try to apply the requested message to the DEFAULT Method of the object if any. */ - if( bTryDefault ) - { - if( SUCCEEDED( ( /* s_nOleError = */ OleGetValue( pDisp ) ) ) ) - { - bTryDefault = FALSE; - - /*HB_TRACE(HB_TR_INFO, ("Try using DISPID_VALUE\n"));*/ - pDisp = s_OleVal.n1.n2.n3.pdispVal; - goto OleGetID; - } - } - - /*HB_TRACE(HB_TR_INFO, ("Invoke Failed!\n"));*/ - OleThrowError(); - } - - FreeParams( &DispParams, aPrgParams ); - - /* We are responsible to release the Default Interface which we retrieved */ - if( bTryDefault == FALSE && pDisp ) - pDisp->lpVtbl->Release( pDisp ); -} - -#endif diff --git a/harbour/examples/hboleold/win_tole.prg b/harbour/examples/hboleold/win_tole.prg deleted file mode 100644 index fe26200739..0000000000 --- a/harbour/examples/hboleold/win_tole.prg +++ /dev/null @@ -1,683 +0,0 @@ -/* - * $Id$ - */ - -/* - * Copyright 2002 Jose F. Gimenez (JFG) - - * Ron Pinkas - - * - * www - http://www.xharbour.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the xHarbour Project gives permission for - * additional uses of the text contained in its release of xHarbour. - * - * The exception is that, if you link the xHarbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the xHarbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the xHarbour - * Project under the name xHarbour. If you copy code from other - * xHarbour Project or Free Software Foundation releases into a copy of - * xHarbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for xHarbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ - -#ifndef __PLATFORM__WINDOWS - FUNCTION CreateObject() - RETURN NIL - - FUNCTION GetActiveObject() - RETURN NIL -#else - -#define HB_CLS_NOTOBJECT - -#include "common.ch" -#include "hbclass.ch" -#include "error.ch" - -#ifndef __XHARBOUR__ - -#define EG_OLEEXCEPTION 1001 - -#xcommand TRY => BEGIN SEQUENCE WITH t_bBreak -#xcommand CATCH [] => RECOVER [USING ] <-oErr-> -#xcommand FINALLY => ALWAYS - -THREAD STATIC t_bBreak := { |oErr| break( oErr ) } - -STATIC PROCEDURE THROW( oError ) - LOCAL lError := Eval( ErrorBlock(), oError ) - IF !HB_ISLOGICAL( lError ) .OR. lError - __ErrInHandler() - ENDIF - Break( oError ) -RETURN - -#endif - -//----------------------------------------------------------------------------// - -FUNCTION CreateObject( cString, cLicense ) - -RETURN TOleAuto():New( cString, , cLicense ) - -//----------------------------------------------------------------------------// - -FUNCTION GetActiveObject( cString ) - -RETURN TOleAuto():GetActiveObject( cString ) - -//----------------------------------------------------------------------------// - -INIT PROCEDURE HB_OleInit() - - /* It's important to store value returned by __HB_OLE_INIT() in - * STATIC variable. When HVM will clear STATICs on HVM exit - * then it will execute destructor bound with this variable which - * calls OleUninitialize() - such method causes that OleUninitialize() - * will be called very lately after all user EXIT functions, ALWAYS - * blocks and .prg object destructors which may also use OLE. - */ - static s_ole - - s_ole := __HB_OLE_INIT() - -RETURN - -//----------------------------------------------------------------------------// - -CLASS VTWrapper - DATA vt - DATA Value - - METHOD New( vt, xVal ) CONSTRUCTOR -ENDCLASS - -//----------------------------------------------------------------------------// -METHOD New( vt, xVal ) CLASS VTWrapper - - ::vt := vt - ::Value := xVal - - //TraceLog( vt, ::vt, xVal, ::Value ) - -RETURN Self - -//----------------------------------------------------------------------------// -CLASS VTArrayWrapper FROM VTWrapper - - METHOD AsArray( nIndex, xValue ) OPERATOR "[]" - METHOD __enumStart( enum, lDescend ) - -ENDCLASS - -//----------------------------------------------------------------------------// -METHOD AsArray( nIndex, xValue ) CLASS VTArrayWrapper - -RETURN IIF( PCount() == 1, ::Value[nIndex], ::Value[nIndex] := xValue ) - -//----------------------------------------------------------------------------// -METHOD __enumStart( enum, lDescend ) CLASS VTarrayWrapper - - HB_SYMBOL_UNUSED( lDescend ) - - /* set base value for enumerator */ - (@enum):__enumBase( ::Value ) - -RETURN !Empty( ::Value ) - -//----------------------------------------------------------------------------// -CLASS TOleAuto - - DATA hObj - DATA cClassName - DATA pOleEnumerator - - METHOD New( uObj, cClass, cLicense ) CONSTRUCTOR - METHOD GetActiveObject( cClass ) CONSTRUCTOR - - METHOD Invoke() - MESSAGE CallMethod METHOD Invoke() - - METHOD Set() - MESSAGE SetProperty METHOD Set() - - METHOD Get() - MESSAGE GetProperty METHOD Get() - - METHOD OleValue() - METHOD _OleValue( xSetValue ) - - METHOD OleNewEnumerator() - - METHOD OleCollection( xIndex, xValue ) OPERATOR "[]" - - METHOD OleValuePlus( xArg ) OPERATOR "+" - METHOD OleValueMinus( xArg ) OPERATOR "-" - METHOD OleValueMultiply( xArg ) OPERATOR "*" - METHOD OleValueDivide( xArg ) OPERATOR "/" - METHOD OleValueModulus( xArg ) OPERATOR "%" - METHOD OleValueInc() OPERATOR "++" - METHOD OleValueDec() OPERATOR "--" - METHOD OleValuePower( xArg ) OPERATOR "^" - - METHOD OleValueEqual( xArg ) OPERATOR "=" - METHOD OleValueExactEqual( xArg ) OPERATOR "==" - METHOD OleValueNotEqual( xArg ) OPERATOR "!=" - - METHOD __enumStart( enum, lDescend ) - METHOD __enumSkip( enum, lDescend ) - METHOD __enumStop() - - ERROR HANDLER OnError() - - DESTRUCTOR Release() - - // Needed to refernce, or hb_dynsymFindName() will fail - METHOD ForceSymbols() INLINE ::cClassName() - -ENDCLASS - -//-------------------------------------------------------------------- -METHOD New( uObj, cClass, cLicense ) CLASS TOleAuto - - LOCAL oErr - - // Hack in case OLE Server already created and New() is attempted as an OLE Method. - IF ::hObj != NIL - RETURN HB_ExecFromArray( Self, "_New", HB_aParams() ) - ENDIF - - IF ISCHARACTER( uObj ) - ::hObj := CreateOleObject( uObj, , cLicense ) - - IF OleError() != 0 - IF Ole2TxtError() == "DISP_E_EXCEPTION" - oErr := ErrorNew() - oErr:Args := HB_aParams() - oErr:CanDefault := .F. - oErr:CanRetry := .F. - oErr:CanSubstitute := .T. - oErr:Description := OLEExceptionDescription() - oErr:GenCode := EG_OLEEXCEPTION - oErr:Operation := ProcName() - oErr:Severity := ES_ERROR - oErr:SubCode := -1 - oErr:SubSystem := OLEExceptionSource() - - RETURN Throw( oErr ) - ELSE - oErr := ErrorNew() - oErr:Args := HB_aParams() - oErr:CanDefault := .F. - oErr:CanRetry := .F. - oErr:CanSubstitute := .T. - oErr:Description := Ole2TxtError() - oErr:GenCode := EG_OLEEXCEPTION - oErr:Operation := ProcName() - oErr:Severity := ES_ERROR - oErr:SubCode := -1 - oErr:SubSystem := "TOleAuto" - - RETURN Throw( oErr ) - ENDIF - ENDIF - - ::cClassName := uObj - ELSEIF ISNUMBER( uObj ) - OleAddRef( uObj ) - ::hObj := uObj - - IF ISCHARACTER( cClass ) - ::cClassName := cClass - ELSE - ::cClassName := LTrim( Str( uObj ) ) - ENDIF - ELSE - oErr := ErrorNew() - oErr:Args := HB_aParams() - oErr:CanDefault := .F. - oErr:CanRetry := .F. - oErr:CanSubstitute := .T. - oErr:Description := "Invalid argument to contructor!" - oErr:GenCode := 0 - oErr:Operation := ProcName() - oErr:Severity := ES_ERROR - oErr:SubCode := -1 - oErr:SubSystem := "TOleAuto" - - RETURN Throw( oErr ) - ENDIF - -RETURN Self - -//-------------------------------------------------------------------- -// Destructor! -PROCEDURE Release() CLASS TOleAuto - - //TraceLog( ::cClassName, ::hObj ) - - IF ! Empty( ::hObj ) - //TraceLog( ::cClassName, ::hObj ) - OleReleaseObject( ::hObj ) - //::hObj := NIL - ENDIF - -RETURN - -//-------------------------------------------------------------------- -METHOD GetActiveObject( cClass ) CLASS TOleAuto - - LOCAL oErr - - IF ISCHARACTER( cClass ) - ::hObj := GetOleObject( cClass ) - - IF OleError() != 0 - IF Ole2TxtError() == "DISP_E_EXCEPTION" - oErr := ErrorNew() - oErr:Args := { cClass } - oErr:CanDefault := .F. - oErr:CanRetry := .F. - oErr:CanSubstitute := .T. - oErr:Description := OLEExceptionDescription() - oErr:GenCode := EG_OLEEXCEPTION - oErr:Operation := ProcName() - oErr:Severity := ES_ERROR - oErr:SubCode := -1 - oErr:SubSystem := OLEExceptionSource() - - RETURN Throw( oErr ) - ELSE - oErr := ErrorNew() - oErr:Args := { cClass } - oErr:CanDefault := .F. - oErr:CanRetry := .F. - oErr:CanSubstitute := .T. - oErr:Description := Ole2TxtError() - oErr:GenCode := EG_OLEEXCEPTION - oErr:Operation := ProcName() - oErr:Severity := ES_ERROR - oErr:SubCode := -1 - oErr:SubSystem := "TOleAuto" - - RETURN Throw( oErr ) - ENDIF - ENDIF - - ::cClassName := cClass - ELSE - Alert( "OLE interface: Invalid parameter type to constructor TOleAuto():GetActiveObject()" ) - ::hObj := 0 - ENDIF - -RETURN Self - -//-------------------------------------------------------------------- -METHOD OleCollection( xIndex, xValue ) CLASS TOleAuto - - LOCAL xRet - - //TraceLog( PCount(), xIndex, xValue ) - - IF PCount() == 1 - RETURN ::Item( xIndex ) - ENDIF - - IF ISNUMBER( xIndex ) .AND. xIndex < 0 - xIndex += ( ::Count + 1 ) - ENDIF - - TRY - // ASP Collection syntax. - xRet := ::_Item( xIndex, xValue ) - CATCH - xRet := ::SetItem( xIndex, xValue ) - END - -RETURN xRet - -//-------------------------------------------------------------------- -METHOD OleValuePlus( xArg ) CLASS TOleAuto - - LOCAL xRet, oErr - - TRY - xRet := ::OleValue + xArg - CATCH - oErr := ErrorNew() - oErr:Args := { Self, xArg } - oErr:CanDefault := .F. - oErr:CanRetry := .F. - oErr:CanSubstitute := .T. - oErr:Description := "argument error" - oErr:GenCode := EG_ARG - oErr:Operation := "+" - oErr:Severity := ES_ERROR - oErr:SubCode := 1081 - oErr:SubSystem := "BASE" - - RETURN Throw( oErr ) - END - -RETURN xRet - -//-------------------------------------------------------------------- -METHOD OleValueMinus( xArg ) CLASS TOleAuto - - LOCAL xRet, oErr - - TRY - xRet := ::OleValue - xArg - CATCH - oErr := ErrorNew() - oErr:Args := { Self, xArg } - oErr:CanDefault := .F. - oErr:CanRetry := .F. - oErr:CanSubstitute := .T. - oErr:Description := "argument error" - oErr:GenCode := EG_ARG - oErr:Operation := "-" - oErr:Severity := ES_ERROR - oErr:SubCode := 1082 - oErr:SubSystem := "BASE" - - RETURN Throw( oErr ) - END - -RETURN xRet - -//-------------------------------------------------------------------- -METHOD OleValueMultiply( xArg ) CLASS TOleAuto - - LOCAL xRet, oErr - - TRY - xRet := ::OleValue * xArg - CATCH - oErr := ErrorNew() - oErr:Args := { Self, xArg } - oErr:CanDefault := .F. - oErr:CanRetry := .F. - oErr:CanSubstitute := .T. - oErr:Description := "argument error" - oErr:GenCode := EG_ARG - oErr:Operation := "*" - oErr:Severity := ES_ERROR - oErr:SubCode := 1083 - oErr:SubSystem := "BASE" - - RETURN Throw( oErr ) - END - -RETURN xRet - -//-------------------------------------------------------------------- -METHOD OleValueDivide( xArg ) CLASS TOleAuto - - LOCAL xRet, oErr - - TRY - xRet := ::OleValue / xArg - CATCH - oErr := ErrorNew() - oErr:Args := { Self, xArg } - oErr:CanDefault := .F. - oErr:CanRetry := .F. - oErr:CanSubstitute := .T. - oErr:Description := "argument error" - oErr:GenCode := EG_ARG - oErr:Operation := "/" - oErr:Severity := ES_ERROR - oErr:SubCode := 1084 - oErr:SubSystem := "BASE" - - RETURN Throw( oErr ) - END - -RETURN xRet - -//-------------------------------------------------------------------- -METHOD OleValueModulus( xArg ) CLASS TOleAuto - - LOCAL xRet, oErr - - TRY - xRet := ::OleValue % xArg - CATCH - oErr := ErrorNew() - oErr:Args := { Self, xArg } - oErr:CanDefault := .F. - oErr:CanRetry := .F. - oErr:CanSubstitute := .T. - oErr:Description := "argument error" - oErr:GenCode := EG_ARG - oErr:Operation := "%" - oErr:Severity := ES_ERROR - oErr:SubCode := 1085 - oErr:SubSystem := "BASE" - - RETURN Throw( oErr ) - END - -RETURN xRet - -//-------------------------------------------------------------------- -METHOD OleValueInc() CLASS TOleAuto - - LOCAL oErr - - TRY - ++::OleValue - CATCH - oErr := ErrorNew() - oErr:Args := { Self } - oErr:CanDefault := .F. - oErr:CanRetry := .F. - oErr:CanSubstitute := .T. - oErr:Description := "argument error" - oErr:GenCode := EG_ARG - oErr:Operation := "++" - oErr:Severity := ES_ERROR - oErr:SubCode := 1086 - oErr:SubSystem := "BASE" - - RETURN Throw( oErr ) - END - -RETURN Self - -//-------------------------------------------------------------------- -METHOD OleValueDec() CLASS TOleAuto - - LOCAL oErr - - TRY - --::OleValue - CATCH - oErr := ErrorNew() - oErr:Args := { Self } - oErr:CanDefault := .F. - oErr:CanRetry := .F. - oErr:CanSubstitute := .T. - oErr:Description := "argument error" - oErr:GenCode := EG_ARG - oErr:Operation := "--" - oErr:Severity := ES_ERROR - oErr:SubCode := 1087 - oErr:SubSystem := "BASE" - - RETURN Throw( oErr ) - END - -RETURN Self - -//-------------------------------------------------------------------- -METHOD OleValuePower( xArg ) CLASS TOleAuto - - LOCAL xRet, oErr - - TRY - xRet := ::OleValue ^ xArg - CATCH - oErr := ErrorNew() - oErr:Args := { Self, xArg } - oErr:CanDefault := .F. - oErr:CanRetry := .F. - oErr:CanSubstitute := .T. - oErr:Description := "argument error" - oErr:GenCode := EG_ARG - oErr:Operation := "^" - oErr:Severity := ES_ERROR - oErr:SubCode := 1088 - oErr:SubSystem := "BASE" - - RETURN Throw( oErr ) - END - -RETURN xRet - -//-------------------------------------------------------------------- -METHOD OleValueEqual( xArg ) CLASS TOleAuto - - LOCAL xRet, oErr - - TRY - xRet := ( ::OleValue = xArg ) /* NOTE: Intentionally using '=' operator. */ - CATCH - oErr := ErrorNew() - oErr:Args := { Self, xArg } - oErr:CanDefault := .F. - oErr:CanRetry := .F. - oErr:CanSubstitute := .T. - oErr:Description := "argument error" - oErr:GenCode := EG_ARG - oErr:Operation := "=" - oErr:Severity := ES_ERROR - oErr:SubCode := 1085 - oErr:SubSystem := "BASE" - - RETURN Throw( oErr ) - END - -RETURN xRet - -//-------------------------------------------------------------------- -METHOD OleValueExactEqual( xArg ) CLASS TOleAuto - - LOCAL xRet, oErr - - TRY - xRet := ( ::OleValue == xArg ) - CATCH - oErr := ErrorNew() - oErr:Args := { Self, xArg } - oErr:CanDefault := .F. - oErr:CanRetry := .F. - oErr:CanSubstitute := .T. - oErr:Description := "argument error" - oErr:GenCode := EG_ARG - oErr:Operation := "==" - oErr:Severity := ES_ERROR - oErr:SubCode := 1085 - oErr:SubSystem := "BASE" - - RETURN Throw( oErr ) - END - -RETURN xRet - -//-------------------------------------------------------------------- -METHOD OleValueNotEqual( xArg ) CLASS TOleAuto - - LOCAL xRet, oErr - - TRY - xRet := ::OleValue != xArg - CATCH - oErr := ErrorNew() - oErr:Args := { Self, xArg } - oErr:CanDefault := .F. - oErr:CanRetry := .F. - oErr:CanSubstitute := .T. - oErr:Description := "argument error" - oErr:GenCode := EG_ARG - oErr:Operation := "!=" - oErr:Severity := ES_ERROR - oErr:SubCode := 1085 - oErr:SubSystem := "BASE" - - RETURN Throw( oErr ) - END - -RETURN xRet - -//-------------------------------------------------------------------- - -METHOD __enumStart( enum, lDescend ) CLASS TOleAuto - - /* TODO: add support for descend order */ - ::pOleEnumerator := ::OleNewEnumerator() - -RETURN ::__enumSkip( @enum, lDescend ) - -//-------------------------------------------------------------------- - -METHOD __enumSkip( enum, lDescend ) CLASS TOleAuto - - LOCAL lContinue, xValue - - /* TODO: add support for descend order */ - HB_SYMBOL_UNUSED( lDescend ) - - xValue := __OLEENUMNEXT( ::pOleEnumerator, @lContinue ) - - /* set enumerator value */ - (@enum):__enumValue( xValue ) - -RETURN lContinue - -//-------------------------------------------------------------------- - -METHOD PROCEDURE __enumStop() CLASS TOleAuto - - __OLEENUMSTOP( ::pOleEnumerator ) - ::pOleEnumerator := NIL - -RETURN - -PROCEDURE OleShowException() - - Alert( OleExceptionSource() + ": " + OleExceptionDescription() ) - - RETURN - -#endif diff --git a/harbour/examples/httpsrv/uhttpdc.c b/harbour/examples/httpsrv/uhttpdc.c index 349186380d..ce43281290 100644 --- a/harbour/examples/httpsrv/uhttpdc.c +++ b/harbour/examples/httpsrv/uhttpdc.c @@ -77,11 +77,11 @@ BOOL win_SysRefresh( int iMsec ) /* Begin the operation and continue until it is complete or until the user clicks the mouse or presses a key. */ - while( MsgWaitForMultipleObjects( 1, &hDummyEvent, FALSE, ( iMsec == 0 ? INFINITE : ( ULONG ) iMsec ), QS_ALLINPUT | QS_ALLPOSTMESSAGE) == WAIT_OBJECT_0 + 1 ) + while( MsgWaitForMultipleObjects( 1, &hDummyEvent, FALSE, ( iMsec == 0 ? INFINITE : ( ULONG ) iMsec ), QS_ALLINPUT | QS_ALLPOSTMESSAGE ) == WAIT_OBJECT_0 + 1 ) { MSG msg; - while( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) ) + while( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) ) { switch( msg.message ) { @@ -145,7 +145,7 @@ HB_FUNC( HB_UTCOFFSET ) char * szRet = ( char * ) hb_xgrab( 6 ); int nLen; -#if defined(HB_OS_WIN) +#if defined( HB_OS_WIN ) { TIME_ZONE_INFORMATION tzInfo; diff --git a/harbour/source/common/hbver.c b/harbour/source/common/hbver.c index 95513b7b1b..5c6c9899f5 100644 --- a/harbour/source/common/hbver.c +++ b/harbour/source/common/hbver.c @@ -344,12 +344,12 @@ char * hb_verPlatform( void ) break; } - hb_snprintf( pszPlatform, PLATFORM_BUF_SIZE + 1, "Windows%s%s %lu.%lu.%04d", + hb_snprintf( pszPlatform, PLATFORM_BUF_SIZE + 1, "Windows%s%s %lu.%lu.%04u", pszName, pszWine, - ( ULONG ) osVer.dwMajorVersion, - ( ULONG ) osVer.dwMinorVersion, - ( USHORT ) LOWORD( osVer.dwBuildNumber ) ); + osVer.dwMajorVersion, + osVer.dwMinorVersion, + LOWORD( osVer.dwBuildNumber ) ); /* Add service pack/other info */