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
Código
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
Código
//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
Código
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