|
Mostrar Mensajes
|
Páginas: [1]
|
1
|
Programación / Programación General / Problema Dll C++ DevC++ y Visual Basic 6
|
en: 6 Diciembre 2017, 22:24 pm
|
Buenas tardes gente.... Necesito pasar una cadena de texto de Visual Basic 6 a una Dll de DevC++ y mostrar un mensaje de la DLL Tengo entendido que VB6 usa Unicode y DevC++ Ansi.... y no encuentro como convertirlo.... El código de la Dll es en el .CPP extern "C" __declspec( dllexport ) __stdcall void Mensaje(char Titulo[], char* Mensaje) //extern "C" __declspec( dllexport ) __stdcall void Mensaje(char *Titulo, char &Mensaje) //extern "C" __declspec( dllexport ) __stdcall void Mensaje(const char *Titulo, char* Mensaje) //extern "C" __declspec( dllexport ) __stdcall void Mensaje(const char Titulo, char* Mensaje) //extern "C" __declspec( dllexport ) __stdcall void Mensaje(LPCTSTR Titulo, char* Mensaje) //extern "C" __declspec( dllexport ) __stdcall void Mensaje(TCHAR *Titulo, char* Mensaje) //extern "C" __declspec( dllexport ) __stdcall void Mensaje(unsigned char Titulo, char* Mensaje) { /*char *Convertir(char cad[]) { int i; for ( i = 0 ; cad[i] != '\0' ; i++ ) if( i == 0 || cad[i-1]==' ' || cad[i+1]== ' ' || cad[i+1]=='\0') if(cad[i] >= 'a' && cad[i] <= 'z') cad[i] -= 32; return cad; } Convertir(Titulo); Convertir(Mensaje);*/ //convertir char* a LPCTSTR //LPCTSTR stringT = Titulo; //convertir char* a LPCSTR //LPCTSTR stringT;// = Titulo; //CString stringT; //TCHAR stringT; //t_char stringT[]; //stringT = Titulo; //LPCTSTR stringM;// (Mensaje); //char stringM[54]; //stringM = Mensaje; //int MAX_PATH; //MAX_PATH = 200; //char szANSIString [MAX_PATH]; /*WideCharToMultiByte (CP_ACP, // página de códigos ANSI WC_COMPOSITECHECK, // Verificar caracteres acentuados //wszUNICODEString, // Cadena Unicode de origen Titulo, -1, // -1 significa que la cadena tiene terminación cero //szANSIString, // cadena de caracteres de destino stringT, //sizeof (szANSIString), // Tamaño del búfer sizeof (stringT), NULL, // Sin carácter predeterminado TRUE); // No me importa esta bandera */ //MessageBox(NULL, Titulo.c_str(), stringM, MB_ICONINFORMATION); //MessageBoxA(NULL, stringT, stringM, MB_ICONINFORMATION); //MessageBox(NULL, stringT, Mensaje, MB_ICONINFORMATION); MessageBox(NULL, Titulo, Mensaje, MB_ICONINFORMATION); }
En el .H //extern "C" __declspec( dllexport ) __stdcall void Mensaje(char* Titulo, char* Mensaje); extern "C" __declspec( dllexport ) __stdcall void Mensaje(char Titulo[], char* Mensaje); //extern "C" __declspec( dllexport ) __stdcall void Mensaje(LPCSTR Titulo, char* Mensaje); //extern "C" __declspec( dllexport ) __stdcall void Mensaje(char *Titulo, char &Mensaje); //extern "C" __declspec( dllexport ) __stdcall void Mensaje(const char Titulo, char* Mensaje); //extern "C" __declspec( dllexport ) __stdcall void Mensaje(LPCTSTR Titulo, char* Mensaje); //extern "C" __declspec( dllexport ) __stdcall void Mensaje(TCHAR *Titulo, char* Mensaje); //extern "C" __declspec( dllexport ) __stdcall void Mensaje(unsigned char Titulo, char* Mensaje);
En VB6 En VB6 Private Declare Sub Mensaje Lib "dll.dll" (Titulo As String, Mensaje As String) Private Sub Command1_Click() Mensaje "Este es el título", "Este es el mensaje" End Sub
Al correr el ejecutable de VB6 me tira un mensaje con símbolos.... Gracias de antemano
|
|
|
2
|
Programación / Programación C/C++ / Re: Problema con GTK y C
|
en: 27 Julio 2017, 05:12 am
|
Ya probé y funciona..... pero al compilar debo agregar el venta.c para que funcione...... se supone que al incluir el .h en venta.c y ventana.c debería invocarlo...... Si.... buscaré la diferencia entre char y puntero char*..... gracias Por si le sirve a alguien..... venta.c #include "venta.h" char* letras(void) { return "Hoy es un gran dia"; } venta.h #ifndef VENTA_H_INCLUDED #define VENTA_H_INCLUDED char* letras(void); #endif ventana.c (este es el .c principal) #include <gtk/gtk.h> #include <stdio.h> #include <stdlib.h> #include "venta.h" //extern char letras(); GtkWidget *label; GtkWidget *button; GtkWidget *button2; GtkWidget *button3; GtkWidget *button4; GtkWidget *texto; GtkWidget *labelMsg; GtkWidget *buttonMsg; GtkWidget *form_msg; /*char letras(void) { //return("Eres un playo"); char textFunc[] = "pulga h"; return(textFunc); }*/ void texto_label(void) { //char text[] = letras(); //text = letras(); //gchar b; //b = text; //b=text; //char b[] = letras(); //text = letras(void); //text == "pulga"; //gtk_label_set_text(GTK_LABEL(label), "Hola guineo plátano"); //gtk_label_set_text(GTK_LABEL(label), letras());// cierra la ventana //gtk_label_set_text(GTK_LABEL(label), letras(void));//error //da error.... dice que letras no definido //gtk_label_set_text(GTK_LABEL(label), letras()); char* text; text = letras(); gtk_label_set_text(GTK_LABEL(label), text); } int main(int argc, char *argv[]) { GtkBuilder *gtkBuilder; GtkWidget *window; gtk_init(&argc, &argv); gtkBuilder = gtk_builder_new(); gtk_builder_add_from_file(gtkBuilder, "ventana.glade", NULL); window = GTK_WIDGET(gtk_builder_get_object(gtkBuilder, "ventana1")); label = GTK_WIDGET(gtk_builder_get_object(gtkBuilder, "label1")); button = GTK_WIDGET(gtk_builder_get_object(gtkBuilder, "Boton1")); button2 = GTK_WIDGET(gtk_builder_get_object(gtkBuilder, "Boton2")); button3 = GTK_WIDGET(gtk_builder_get_object(gtkBuilder, "Boton3")); button4 = GTK_WIDGET(gtk_builder_get_object(gtkBuilder, "Boton4")); //gtk_window_set_title(GTK_WINDOW(window), "Establece título....."); g_signal_connect(GTK_OBJECT(button2),"clicked",G_CALLBACK(texto_label),NULL); g_object_unref(G_OBJECT(gtkBuilder)); gtk_widget_show(window); gtk_main(); return 0; }
[MOD] Usar etiquetas GeSHi, para publicar codigo.
Si lo compilo de esta manera.... dice lo siguiente.... se supone que debería incluir venta.c... pero no lo hace..... root@erikc-Aspire-4560:/home/erikc/Documentos/ventana-2# gcc -Wall -g -o ventana ventana.c `pkg-config --cflags --libs gtk+-2.0` -export-dynamic In file included from ventana.c:4:0: venta.h:12:7: warning: extra tokens at end of #endif directive #endif ^ /tmp/cc9fBUWP.o: En la función `texto_label': /home/erikc/Documentos/ventana-2/ventana.c:45: referencia a `letras' sin definir collect2: error: ld returned 1 exit status Si lo incluyo manualmente.... funciona..... root@erikc-Aspire-4560:/home/erikc/Documentos/ventana-2# gcc -Wall -g -o ventana ventana.c venta.c `pkg-config --cflags --libs gtk+-2.0` -export-dynamic In file included from ventana.c:4:0: venta.h:12:7: warning: extra tokens at end of #endif directive #endif ^ In file included from venta.c:1:0: venta.h:12:7: warning: extra tokens at end of #endif directive #endif [MOD] No efectuar doble post, se usa botón "modificar" para añadir comentarios.
|
|
|
4
|
Programación / Programación C/C++ / Re: Problema con GTK y C
|
en: 27 Julio 2017, 04:58 am
|
La función letras en ventana.c si está comentada..... la que sirve es la que está implementada en venta.c.... venta.c #include "venta.h" //#include <stdio.h> //#include <stdlib.h> //const char letras(void) char letras(void) //char *letras(void) { return "Hoy es un gran dia"; // char *textFunc; // textFunc = "pulga h"; //char textFunc[] = "pulga h"; //return (textFunc); // return textFunc; //char a[] = "pulguita"; /*char a; a = "pulguita"; return a; */ } /*char letras(void) { //return letras = "hello"; letras = "hello"; }*/ /*int Suma(int num1, int num2) { return (num1 + num2); }*/
[MOD] Usar etiquetas GeSHi, para publicar codigo.
|
|
|
5
|
Programación / Programación C/C++ / Re: Problema con GTK y C
|
en: 27 Julio 2017, 04:54 am
|
Sorry por las estupideces que escribí en el texto.... a mucho estrés y darle y darle....
A los botones 1, 3 y 4 les eliminé sus funciones....
Básicamente es el botón 2......
si escribo algo como char textFunc[] = "hola soy un texto";
y lo agrego en el label.... de esta manera
gtk_label_set_text(GTK_LABEL(label), textFunc);
Funciona....
Pero de ninguna manera pasa la cadena de la función letras, definida en venta.h y implementada en venta.c
|
|
|
6
|
Programación / Programación C/C++ / Re: Problema con GTK y C
|
en: 27 Julio 2017, 04:47 am
|
Sorry... para que se entienda bien debo mostrar el código completo.... es este en ventana.c (el c principal) #include <gtk/gtk.h> #include <stdio.h> #include <stdlib.h> #include "venta.h" //extern char letras(); GtkWidget *label; GtkWidget *button; GtkWidget *button2; GtkWidget *button3; GtkWidget *button4; GtkWidget *texto; GtkWidget *labelMsg; GtkWidget *buttonMsg; GtkWidget *form_msg; /*char letras(void) { //return("Eres un playo"); char textFunc[] = "pulga h"; return(textFunc); }*/ void texto_label(void) { //char text[] = letras(); //text = letras(); //gchar b; //b = text; //b=text; //char b[] = letras(); //text = letras(void); //text == "pulga"; //gtk_label_set_text(GTK_LABEL(label), "Hola guineo plátano"); //gtk_label_set_text(GTK_LABEL(label), letras());// cierra la ventana //gtk_label_set_text(GTK_LABEL(label), letras(void));//error gtk_label_set_text(GTK_LABEL(label), letras()); //gtk_label_set_text(GTK_LABEL(label), b); //gtk_label_set_text(GTK_LABEL(label), text); //char cadena[20]; //itoa (resSuma, cadena, 10); // el 10 es base decimal //gtk_label_set_text(GTK_LABEL(label), cadena); } int main(int argc, char *argv[]) { GtkBuilder *gtkBuilder; GtkWidget *window; gtk_init(&argc, &argv); gtkBuilder = gtk_builder_new(); gtk_builder_add_from_file(gtkBuilder, "ventana.glade", NULL); window = GTK_WIDGET(gtk_builder_get_object(gtkBuilder, "ventana1")); label = GTK_WIDGET(gtk_builder_get_object(gtkBuilder, "label1")); button = GTK_WIDGET(gtk_builder_get_object(gtkBuilder, "Boton1")); button2 = GTK_WIDGET(gtk_builder_get_object(gtkBuilder, "Boton2")); button3 = GTK_WIDGET(gtk_builder_get_object(gtkBuilder, "Boton3")); button4 = GTK_WIDGET(gtk_builder_get_object(gtkBuilder, "Boton4")); //gtk_window_set_title(GTK_WINDOW(window), "Establece título....."); g_signal_connect(GTK_OBJECT(button2),"clicked",G_CALLBACK(texto_label),NULL); g_object_unref(G_OBJECT(gtkBuilder)); gtk_widget_show(window); gtk_main(); return 0; }
[MOD] Usar etiquetas GeSHi, para publicar codigo.
|
|
|
7
|
Programación / Programación C/C++ / Re: Problema con GTK y C
|
en: 27 Julio 2017, 03:54 am
|
Hola..... gracias por responder.... Hice lo que me dijiste en venta.c y no funciona... #include "venta.h" #include <stdio.h> #include <stdlib.h> char letras(void) { return "Hoy es un gran dia"; } Ahora en el .c principal..... void texto_label(void) { gtk_label_set_text(GTK_LABEL(label), letras()); } Esto es lo que muestra a la hora de compilar............ In file included from ventana.c:4:0: venta.h:12:7: warning: extra tokens at end of #endif directive #endif ^ ventana.c: In function ‘texto_label’: ventana.c:40:39: warning: passing argument 2 of ‘gtk_label_set_text’ makes pointer from integer without a cast gtk_label_set_text(GTK_LABEL(label), letras()); ^ In file included from /usr/include/gtk-2.0/gtk/gtkaccellabel.h:38:0, from /usr/include/gtk-2.0/gtk/gtk.h:35, from ventana.c:1: /usr/include/gtk-2.0/gtk/gtklabel.h:112:23: note: expected ‘const gchar *’ but argument is of type ‘char’ void gtk_label_set_text (GtkLabel *label, ^ /tmp/ccgL6s1G.o: En la función `texto_label': /home/erikc/Documentos/ventana-2/ventana.c:40: referencia a `letras' sin definir collect2 : error : ld returned 1 exit status
[MOD] Usar etiquetas GeSHi, para publicar codigo.
|
|
|
8
|
Programación / Programación C/C++ / Problema con GTK y C
|
en: 27 Julio 2017, 01:16 am
|
Buenas tardes..... He estado tratando de hacer un simple programa en GTK con Glade que al hacer click en un botón coloque un texto en un label.... todo va bien si escribo así void texto_label(void) { char text[] = "hola como estan"; } gtk_label_set_text (GTK_LABEL(label), text); Hasta aquí funciona perfecto.... Luego cree un .h y un .c llamados venta.c venta.h venta.h #ifndef VENTA_H_INCLUDED #define VENTA_H_INCLUDED char letras (void); #endif Ahora venta.c #include "venta.h" char letras(void) { char a; a = "hola amigos"; return a; } en el programa principal que se llama ventana.c //cree una funcion llamada texto_label void texto_label(void) { char text[] = letras(); gtk_label_set_text (GTK_LABEL(label), text); }
Al compilar da error.... he probado todo lo habido y por haber y nada.... Lo que quiero es que al hacer click en el botón... la función letras de venta.c devuelva el texto y lo coloque en el label... Gracias [MOD] Usar etiquetas GeSHi, para publicar codigo.
|
|
|
|
|
|
|