elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda!!!! gtk y c
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda!!!! gtk y c  (Leído 1,565 veces)
_--ziarox--__

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Ayuda!!!! gtk y c
« en: 5 Febrero 2016, 02:04 am »

Cómo mando parametros a una funcion en c desde gtk con g_signal_connect()?.
nesecito mandar una dirreccion de una pila y un elemento de tipo void.


« Última modificación: 5 Febrero 2016, 02:28 am por _--ziarox--__ » En línea

furciorifa

Desconectado Desconectado

Mensajes: 94


Ver Perfil
Re: Ayuda!!!! gtk y c
« Respuesta #1 en: 5 Febrero 2016, 06:09 am »

¿Podrías ser más específico ?


En línea

_--ziarox--__

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Ayuda!!!! gtk y c
« Respuesta #2 en: 5 Febrero 2016, 06:22 am »

En esta funcion donde al dar click en el boton push me llama a la funcion fun_push necesito enviarle la direccion de la pila donde agregare un elemento y el elemento a agregar.

g_signal_connect(G_OBJECT (push),"clicked",G_CALLBACK (fun_push),(gpointer)pila_Y_elem_a_agregar)


pero no logro enviarlos juntos, eh logrado enviarlos por separado pero no es lo que necesito



algo como esto:

GtkWidget *multidatos[2];
    multidatos[1] = store;
    multidatos[0] = field;
g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(add_do), (gpointer)multidatos);

pero en ves de enviar widgets necesito enviar direcciones y un entero
« Última modificación: 5 Febrero 2016, 09:00 am por Eternal Idol » En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Ayuda!!!! gtk y c
« Respuesta #3 en: 5 Febrero 2016, 09:07 am »

Declara una estructura propia con punteros a esos tipos de datos. Tene en cuenta el ambito de la estructura, normalmente no podes pasar un puntero a una variable local a un callback ya que al terminar la funcion que llamo a g_signal_connect esa variable desaparece y en add_do accederias a memoria indefinida/invalida (con usar memoria dinamica se soluciona).
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
_--ziarox--__

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Ayuda!!!! gtk y c
« Respuesta #4 en: 7 Febrero 2016, 18:37 pm »

es esta la funcion de llamada:

Código:
g_signal_connect(G_OBJECT (puch),"clicked",G_CALLBACK (push),(gpointer)(estructura));

y esta la funcion que es llamada:
Código:
void push(Pila *p, void *elem) {
  //primero verifica que la pila no esté llena
  if(!esLlena(*p)) {
  int inicio = p->tope * p->tamelem, i;
  for(i = 0; i < p->tamelem; i++) {
  //guarda el elemento en la direccion de memoria correspondiente,
  //evitando sobreescribir los elementos existentes
    *(p->almacenamiento + inicio + i) = *((byte *)(elem + i));
  }
  //incrementa tope
  p->tope = p->tope + 1;
  printf("\nEl tope es: %d\n",p->tope);
}
}

esta seria la estructura a enviar?
contiene un apuntador a pila y un elemento de tipo void

Código:
typedef struct Enviar{
//apuntador a pila, para enviar la pila por referencia.
Pila *Pila_enviar;
//elemento a enviar, de tipo void porque se puede enviar
//un elemento de cualquier tipo(cadena, caracter, entero o flotante).
void elemento;
} Enviar;
sería correcto enviar la estructura Enviar?
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Ayuda!!!! gtk y c
« Respuesta #5 en: 7 Febrero 2016, 20:10 pm »

La estructura en si misma parece ser correcta. Ahora yo nunca use GTK asi que no se que parametros se esperan en sus callbacks, si me guio por el ejemplo del enlace siguiente (GtkWidget *widget, gpointer data) vas a tener que crear una funcion callback de ese estilo que llame a push tomando Pila_enviar y elemento de gpointer (con un casting a puntero del tipo Enviar).

https://www.cs.bu.edu/~hwxi/ATS/EXAMPLE/GTK/HelloWorld.c
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines