Dear Friends
 
 I have an small app with one gtk_entry_new  with an handle to my user
 defined key_press_event
 
 but i cannot get the accented char from latin 1 code page on entry
 
 here an part of my key handler
 
 here is the routine  for key_press_event
 
 
 #define WM_MOVE                           3
 #define WM_SIZE                           5
 #define WM_KEYDOWN                      256    // 0x0100
 #define WM_KEYUP                        257    // 0x0101
 #define WM_MOUSEMOVE                    512    // 0x0200
 #define WM_LBUTTONDOWN                  513    // 0x0201
 #define WM_LBUTTONUP                    514    // 0x0202
 #define WM_LBUTTONDBLCLK                515    // 0x0203
 #define WM_RBUTTONDOWN                  516    // 0x0204
 #define WM_RBUTTONUP                    517    // 0x0205
 
 static gint cb_event( GtkWidget *widget, GdkEvent * event, gchar* data )
 {
   gpointer gObject = g_object_get_data( (GObject*) widget, "obj" );
   LONG lRes;
 
   if( !pSym_onEvent )
      pSym_onEvent = hb_dynsymFindName( "ONEVENT" );
 
   //if( !gObject )
   //   gObject = g_object_get_data( (GObject*) (widget-parent->parent),
 "obj" );
   if( pSym_onEvent && gObject )
   {
      LONG p1, p2, p3;
 
      if( event->type == GDK_KEY_PRESS || event->type == GDK_KEY_RELEASE )
      {
         p1 = (event->type==GDK_KEY_PRESS)? WM_KEYDOWN : WM_KEYUP;
         p2 = ((GdkEventKey*)event)->keyval;
    p3 = ( ( ((GdkEventKey*)event)->state & GDK_SHIFT_MASK )? 1 : 0 ) |
       ( ( ((GdkEventKey*)event)->state & GDK_CONTROL_MASK )? 2 : 0 ) |
       ( ( ((GdkEventKey*)event)->state & GDK_MOD1_MASK )? 4 : 0 );
      }
      else if( event->type == GDK_SCROLL )
      {
         p1 = WM_KEYDOWN;
         p2 = ( ( (GdkEventScroll*)event )->direction == GDK_SCROLL_DOWN )?
 0xFF54 : 0xFF52;
         p3 = 0;
      }
      else if( event->type == GDK_BUTTON_PRESS ||
               event->type == GDK_2BUTTON_PRESS ||
        event->type == GDK_BUTTON_RELEASE )
      {
         p1 = (event->type==GDK_BUTTON_PRESS)? WM_LBUTTONDOWN :
       ( (event->type==GDK_BUTTON_RELEASE)? WM_LBUTTONUP :
 WM_LBUTTONDBLCLK );
    p2 = 0;
    p3 = ( ((ULONG)(((GdkEventButton*)event)->x)) & 0xFFFF ) | ( (
 ((ULONG)(((GdkEventButton*)event)->y)) << 16 ) & 0xFFFF0000 );
      }
      else if( event->type == GDK_MOTION_NOTIFY )
      {
         p1 = WM_MOUSEMOVE;
    p2 = ( ((GdkEventMotion*)event)->state & GDK_BUTTON1_MASK )? 1:0;
    p3 = ( ((ULONG)(((GdkEventMotion*)event)->x)) & 0xFFFF ) | ( (
 ((ULONG)(((GdkEventMotion*)event)->y)) << 16 ) & 0xFFFF0000 );
      }
      else if( event->type == GDK_CONFIGURE )
      {
         p2 = 0;
         if( widget->allocation.width != ((GdkEventConfigure*)event)->width
 ||
             widget->allocation.height!=
 ((GdkEventConfigure*)event)->height )
         {
            return 0;
         }
         else
         {
            p1 = WM_MOVE;
            p3 = ( ((GdkEventConfigure*)event)->x & 0xFFFF ) |
                 ( ( ((GdkEventConfigure*)event)->y << 16 ) & 0xFFFF0000 );
         }
      }
      else if( event->type == GDK_ENTER_NOTIFY || event->type ==
 GDK_LEAVE_NOTIFY )
      {
         p1 = WM_MOUSEMOVE;
         p2 = ( ((GdkEventCrossing*)event)->state & GDK_BUTTON1_MASK )? 1:0
 |
              ( event->type == GDK_ENTER_NOTIFY )? 0x10:0;
         p3 = ( ((ULONG)(((GdkEventCrossing*)event)-x)) & 0xFFFF ) | ( (
 ((ULONG)(((GdkEventMotion*)event)->y)) << 16 ) & 0xFFFF0000 );
      }
      else
         sscanf( (char*)data,"%ld %ld %ld",&p1,&p2,&p3 );
 
   }
   return 0;
 }
 
 any ideia?
 
 Regards
 Luiz

_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to