Lo estoy haciendo. Lo que a veces me adelanto, ajjajaj.
![](https://www.anayamultimedia.es/jpg_g/multimedia/MU00375701.jpg)
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menúfloat __stdcall ResultadoPorcentaje(float resultadoPorcentaje, float nivelAgua, float altura)
{
return resultadoPorcentaje = nivelAgua * (100 / altura);
}
resultadoPorcentaje = nivelAgua * (100 / altura);
#include "pch.h"
extern "C"
{
__declspec(dllexport) LPTSTR __stdcall Mensaje();
__declspec(dllexport) float __stdcall Volumen(float, float, float, float);
__declspec(dllexport) float __stdcall Litros(float, float);
//__declspec(dllexport) float __stdcall ResultadoPorcentaje(float, float, float);
__declspec(dllexport) float __stdcall VolumenLitros(float, float, float, float, float);
__declspec(dllexport) float __stdcall CantidadTubosLitros(float, float, float);
__declspec(dllexport) float __stdcall TotalLitros(float, float, float);
};
// Mensaje.
LPTSTR __stdcall Mensaje() { return LPTSTR(L"Hola. Saludos desde la dll. Versión: 1.0.0"); }
// Cálculo volumen.
float __stdcall Volumen(float volumen, float PI, float radio, float altura)
{
return volumen = PI * (radio * radio) * altura;
}
// Cálculo litros.
float __stdcall Litros(float litros, float volumen)
{
return litros = volumen * 1000;
}
// Cálculo porcentaje en % del litro de agua.
//float __stdcall ResultadoPorcentaje(float resultadoPorcentaje, float nivelAgua, float altura)
//{
// return resultadoPorcentaje = nivelAgua * (100 / altura);
//}
// Cálculo litros de agua.
float __stdcall VolumenLitros(float volumenLitros, float PI, float radio, float nivelAgua, float resultadoLitros)
{
return volumenLitros = PI * (radio * radio) * nivelAgua;
return resultadoLitros = volumenLitros * 1000;
}
// Cálculo litros por cantidad de tubos
float __stdcall CantidadTubosLitros(float cantidadTubosLitros, float cantidadTubos, float resultadoLitros)
{
return cantidadTubosLitros = cantidadTubos * resultadoLitros;
}
// Cálculo cantidad de litros con total de tubos.
float __stdcall TotalLitros(float totalLitros, float litros, float cantidadTubos)
{
return totalLitros = litros * cantidadTubos;
}
LIBRARY DLL_al_poder
EXPORTS
Mensaje
Volumen
Litros
VolumenLitros
CantidadTubosLitros
TotalLitros
#include <iostream>
#include <windows.h> // Para mostrar texto en el título de la ventana.
using namespace std;
//using std::cout;
//using std::cin;
// Función posición del cursor.
void gotoxy(int x, int y)
{
HANDLE hcon;
hcon = GetStdHandle(STD_OUTPUT_HANDLE);
COORD dwPos;
dwPos.X = x;
dwPos.Y = y;
SetConsoleCursorPosition(hcon, dwPos);
}
// Definir estas funciones.
typedef LPTSTR(__stdcall* Mensaje)();
typedef float(__stdcall* Volumen)(float, float, float, float);
typedef float(__stdcall* Litros)(float, float);
//typedef float(__stdcall* ResultadoPorcentaje)(float, float, float);
typedef float(__stdcall* VolumenLitros)(float, float, float, float, float);
typedef float(__stdcall* CantidadTubosLitros)(float, float, float);
typedef float(__stdcall* TotalLitros)(float, float, float);
// Variables.
const double Pi = 3.14;
float radio;
float altura;
//double volumen;
//double litros;
float nivelAgua;
float resultadoPorcentaje;
//double resultadoLitros;
//double volumenLitros;
float mitadBarra;
float cantidadTubos;
//double cantidadTubosLitros;
//double totalLitros;
int main(void)
{
// Importar dll.
HINSTANCE hDLL = 0;
Mensaje mensaje;
Volumen volumen;
Litros litros;
//ResultadoPorcentaje resultadoPorcentaje;
VolumenLitros volumenLitros;
CantidadTubosLitros cantidadTubosLitros;
TotalLitros totalLitros;
hDLL = LoadLibrary(L"C:\\Users\\Meta\\Documents\\Visual Studio 2019\\Projects\\DLL_y_interfaz_nativo_01_cpp\\Debug\\DLL_y_interfaz_nativo_01_cpp.dll");
mensaje = (Mensaje)GetProcAddress(hDLL, "Mensaje");
volumen = (Volumen)GetProcAddress(hDLL, "Volumen");
litros = (Litros)GetProcAddress(hDLL, "Litros");
//resultadoPorcentaje = (ResultadoPorcentaje)GetProcAddress(hDLL, "ResultadoPorcentaje");
volumenLitros = (VolumenLitros)GetProcAddress(hDLL, "VolumenLitros");
cantidadTubosLitros = (CantidadTubosLitros)GetProcAddress(hDLL, "CantidadTubosLitros");
totalLitros = (TotalLitros)GetProcAddress(hDLL, "totalLitros");
// Mostrar caracteres correctamente en pantalla y título de la ventana.
SetConsoleOutputCP(65001);
wchar_t titulo[128];
MultiByteToWideChar(CP_UTF8, 0, "Interfaz leer dll C++ nativo 2019.", -1, titulo, 128);
SetConsoleTitle(titulo);
// Tamaño de la pantalla. Se cambia en los dos últimos dígitos.
SMALL_RECT r = { 0, 0, 49, 35 }; // X = 49, Y = 9.
SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE), TRUE, &r);
// Ocultar cursor.
CONSOLE_CURSOR_INFO cci;
GetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cci);
cci.bVisible = 1; // 0 oculta cursor. 1 muestra cursor.
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cci);
// Posición del cursor.
gotoxy(3, 2);
// Mostrar textos en pantalla.
wcout << mensaje() << endl;
gotoxy(0, 4);
cout << "Introduce el radio en m.: ";
cin >> radio;
cout << "Introduce la altura en m. ";
cin >> altura;
cout << "Introduce altura del agua. Máximo es de " << altura << ":";
cin >> nivelAgua;
cout << "Introduces cantidad de tubos: ";
cin >> cantidadTubos;
// ########## Dibujo de la barra.
cout << "\n";
cout << ("0 % 50 % 100 %") << endl;
cout << ("┌────────────────────────┬───────────────────────┐") << endl;
// Mitad de la barra para que no sea muy grande en la pantalla.
resultadoPorcentaje = nivelAgua * (100 / altura);
if (mitadBarra > 50)
{
mitadBarra = 50;
}
// Rellenar la barra.
for (float i = 1; i <= mitadBarra; i++)
{
cout << ("█");
}
// Si llega a 100 se pone el # en rojo.
if (resultadoPorcentaje > 100)
{
cout << ("#");
}
//########## Fin dibujo de la barra.
// Pisición del texto a mostrar.
gotoxy(0, 11);
cout << "\nPorcentaje: " << resultadoPorcentaje << " %.";
FreeLibrary(hDLL);
// Esperando pulsar Enter para salir.
cin.get();
return 0;
}
// Mitad de la barra para que no sea muy grande en la pantalla.
resultadoPorcentaje = nivelAgua * (100 / altura);
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace prueba_cs
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
timer1.Start();
}
void cambioColor()
{
this.BackColor = Color.Black; // Formulario negro.
//this.ForeColor = Color.White; // Cambia textos en blanco.
label1.ForeColor = Color.White;
}
void cambioColor2()
{
this.BackColor = Color.White; // Formulario blanco.
//this.ForeColor = Color.Black; // Cambia textos en negro.
label1.ForeColor = Color.Black;
}
private void timer1_Tick(object sender, EventArgs e)
{
cambioColor();
timer1.Stop();
timer2.Start();
}
private void timer2_Tick(object sender, EventArgs e)
{
cambioColor2();
timer2.Stop();
timer1.Start();
}
}
}
mitadBarra = resultadoPorcentaje / 2;
// Mitad de la barra para que no sea muy grande en la pantalla.
mitadBarra = resultadoPorcentaje(0, 0, 0) / 2;
// Cálculo porcentaje en % del litro de agua.
float __stdcall ResultadoPorcentaje(float resultadoPorcentaje, float nivelAgua, float altura)
{
return resultadoPorcentaje = nivelAgua * (100 / altura);
}
#include "pch.h"
extern "C"
{
__declspec(dllexport) LPTSTR __stdcall Mensaje();
__declspec(dllexport) float __stdcall Volumen(float, float, float, float);
__declspec(dllexport) float __stdcall Litros(float, float);
__declspec(dllexport) float __stdcall ResultadoPorcentaje(float, float, float);
__declspec(dllexport) float __stdcall VolumenLitros(float, float, float, float, float);
__declspec(dllexport) float __stdcall CantidadTubosLitros(float, float, float);
__declspec(dllexport) float __stdcall TotalLitros(float, float, float);
};
// Mensaje.
LPTSTR __stdcall Mensaje() { return LPTSTR(L"Hola. Saludos desde la dll. Versión: 1.0.0"); }
// Cálculo volumen.
float __stdcall Volumen(float volumen, float PI, float radio, float altura)
{
return volumen = PI * (radio * radio) * altura;
}
// Cálculo litros.
float __stdcall Litros(float litros, float volumen)
{
return litros = volumen * 1000;
}
// Cálculo porcentaje en % del litro de agua.
float __stdcall ResultadoPorcentaje(float resultadoPorcentaje, float nivelAgua, float altura)
{
return resultadoPorcentaje = nivelAgua * (100 / altura);
}
// Cálculo litros de agua.
float __stdcall VolumenLitros(float volumenLitros, float PI, float radio, float nivelAgua, float resultadoLitros)
{
return volumenLitros = PI * (radio * radio) * nivelAgua;
return resultadoLitros = volumenLitros * 1000;
}
// Cálculo litros por cantidad de tubos
float __stdcall CantidadTubosLitros(float cantidadTubosLitros, float cantidadTubos, float resultadoLitros)
{
return cantidadTubosLitros = cantidadTubos * resultadoLitros;
}
// Cálculo cantidad de litros con total de tubos.
float __stdcall TotalLitros(float totalLitros, float litros, float cantidadTubos)
{
return totalLitros = litros * cantidadTubos;
}
LIBRARY DLL_al_poder
EXPORTS
Mensaje
Volumen
Litros
ResultadoPorcentaje
VolumenLitros
CantidadTubosLitros
TotalLitros
#include <iostream>
#include <windows.h> // Para mostrar texto en el título de la ventana.
using namespace std;
//using std::cout;
//using std::cin;
// Función posición del cursor.
void gotoxy(int x, int y)
{
HANDLE hcon;
hcon = GetStdHandle(STD_OUTPUT_HANDLE);
COORD dwPos;
dwPos.X = x;
dwPos.Y = y;
SetConsoleCursorPosition(hcon, dwPos);
}
// Definir estas funciones.
typedef LPTSTR(__stdcall* Mensaje)();
typedef float(__stdcall* Volumen)(float, float, float, float);
typedef float(__stdcall* Litros)(float, float);
typedef float(__stdcall* ResultadoPorcentaje)(float, float, float);
typedef float(__stdcall* VolumenLitros)(float, float, float, float, float);
typedef float(__stdcall* CantidadTubosLitros)(float, float, float);
typedef float(__stdcall* TotalLitros)(float, float, float);
int main(void)
{
// Variables.
const double Pi = 3.14;
float radio;
float altura;
//double volumen;
//double litros;
float nivelAgua;
//float resultadoPorcentaje;
//double resultadoLitros;
//double volumenLitros;
float mitadBarra;
float cantidadTubos;
//double cantidadTubosLitros;
//double totalLitros;
// Importar dll.
HINSTANCE hDLL = 0;
Mensaje mensaje;
Volumen volumen;
Litros litros;
ResultadoPorcentaje resultadoPorcentaje;
VolumenLitros volumenLitros;
CantidadTubosLitros cantidadTubosLitros;
TotalLitros totalLitros;
hDLL = LoadLibrary(L"C:\\Users\\Meta\\Documents\\Visual Studio 2019\\Projects\\DLL_y_interfaz_nativo_01_cpp\\Debug\\DLL_y_interfaz_nativo_01_cpp.dll");
mensaje = (Mensaje)GetProcAddress(hDLL, "Mensaje");
volumen = (Volumen)GetProcAddress(hDLL, "Volumen");
litros = (Litros)GetProcAddress(hDLL, "Litros");
resultadoPorcentaje = (ResultadoPorcentaje)GetProcAddress(hDLL, "ResultadoPorcentaje");
volumenLitros = (VolumenLitros)GetProcAddress(hDLL, "VolumenLitros");
cantidadTubosLitros = (CantidadTubosLitros)GetProcAddress(hDLL, "CantidadTubosLitros");
totalLitros = (TotalLitros)GetProcAddress(hDLL, "totalLitros");
// Mostrar caracteres correctamente en pantalla y título de la ventana.
SetConsoleOutputCP(65001);
wchar_t titulo[128];
MultiByteToWideChar(CP_UTF8, 0, "Interfaz leer dll C++ nativo 2019.", -1, titulo, 128);
SetConsoleTitle(titulo);
// Tamaño de la pantalla. Se cambia en los dos últimos dígitos.
SMALL_RECT r = { 0, 0, 49, 35 }; // X = 49, Y = 9.
SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE), TRUE, &r);
// Ocultar cursor.
CONSOLE_CURSOR_INFO cci;
GetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cci);
cci.bVisible = 1; // 0 oculta cursor. 1 muestra cursor.
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cci);
// Posición del cursor.
gotoxy(3, 2);
// Mostrar textos en pantalla.
wcout << mensaje() << endl;
gotoxy(0, 4);
cout << "Introduce el radio en m.: ";
cin >> radio;
cout << "Introduce la altura en m. ";
cin >> altura;
cout << "Introduce altura del agua. Máximo es de " << altura << ":";
cin >> nivelAgua;
cout << "Introduces cantidad de tubos: ";
cin >> cantidadTubos;
// ########## Dibujo de la barra.
cout << "\n";
cout << ("0 % 50 % 100 %") << endl;
cout << ("┌────────────────────────┬───────────────────────┐") << endl;
// Mitad de la barra para que no sea muy grande en la pantalla.
mitadBarra = resultadoPorcentaje / 2;
if (mitadBarra > 50)
{
mitadBarra = 50;
}
// Rellenar la barra.
for (float i = 1; i <= mitadBarra; i++)
{
cout << ("█");
}
// Si llega a 100 se pone el # en rojo.
if (resultadoPorcentaje > 100)
{
cout << ("#");
}
//########## Fin dibujo de la barra.
// Pisición del texto a mostrar.
gotoxy(0, 11);
//cout << "\nPorcentaje: " << resultadoPorcentaje << " %.";
FreeLibrary(hDLL);
// Esperando pulsar Enter para salir.
cin.get();
return 0;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace radioButton_consola_03_cs
{
class Program
{
#region Variables.
private static readonly string[] TEXTO = new string[]
{
"( ) Opción A ",
"( ) Opción B ",
"( ) Opción C ",
"( ) Opción D ",
"( ) Opción E ",
"( ) Opción F ",
"( ) Opción G ",
" SALIR"
};
private static int itemSeñalado;
private static int itemSeleccionado;
#endregion
static void Main(string[] args)
{
// Título de la ventana.
Console.Title = "RadioButton";
// Tamaño de la ventana.
Console.SetWindowSize(20, 5);
// Fondo azul.
Console.BackgroundColor = ConsoleColor.Blue;
// Letras blanco.
Console.ForegroundColor = ConsoleColor.White;
// Oculto el cursor.
Console.CursorVisible = false;
// Almacena la tecla pulsada en la variable.
ConsoleKey teclaInicial;
do
{
// Limpiar pantalla.
Console.Clear();
// Posición del cursor del título del MENÚ PRINCIPAL.
Console.SetCursorPosition(0, 0);
// Título.
Console.Write(" MENÚ PRINCIPAL ");
// Pocisión de la hora.
Console.SetCursorPosition(4, 2);
// Formato numérico dd/MM/yyyy.
Console.Write(DateTime.Now.ToString("ddd dd MMM"));
// Almacena en la variable una tecla pulsada.
teclaInicial = Console.ReadKey(true).Key;
// ¿Haz pulsado la tecla Enter?
if (teclaInicial == ConsoleKey.Enter)
{
// Sí. Se ejecuta esta función.
MenuPrincipal();
}
} while (teclaInicial != ConsoleKey.Escape);
}
#region Menú Principal.
private static void MenuPrincipal()
{
bool salir = false;
// En itemSelecionado:
// -1 = Sin seleccionar con * ninguna opción.
// 0 = Seleccionar con * la Opción A.
// 1 = Seleccionar con * la Opción B.
// 2 = Seleccionar con * la opción C.
// 3 = Seleccionar con * la opción D.
// 4 = Seleccionar con * la opción E.
// 5 = Seleccionar con * la opción F.
// 6 = Seleccionar con * la opción G.
// Capturar tecla para luego validar.
ConsoleKey tecla;
// Cada vez que se vuelva al menú, está señalizado con el *.
itemSeñalado = 0;
int pagina;
do
{
//******************************************************************
// Dibujo el menú principal.
// Limpiar pantalla.
Console.Clear();
pagina = 0;
if (itemSeñalado >= 4)
{
pagina = 4;
}
// Recorre la lista de las opciones.
for (int k = 0; k < 4; k++)
{
Console.SetCursorPosition(0, k);
Console.Write(itemSeñalado == k + pagina ? "> " : " ");
Console.Write(TEXTO[k + pagina]);
Console.SetCursorPosition(3, k);
Console.Write(itemSeleccionado == k + pagina ? "*" : " ");
}
// Fin de pintar el menú principal.
//******************************************************************
// Leer tecla ingresada por el usuario.
tecla = Console.ReadKey(true).Key;
switch (tecla)
{
// Al pulsar Enter, marcas un radioButton con *.
case ConsoleKey.Enter:
if (itemSeñalado < 7)
{
itemSeleccionado = itemSeñalado;
}
salir = (itemSeñalado == TEXTO.Length - 1);
break;
// Pulsar flecha abajo del teclado.
case ConsoleKey.DownArrow:
if (++itemSeñalado >= TEXTO.Length)
{
itemSeñalado = 0;
Console.Clear();
}
else if (itemSeñalado == 4)
{
Console.Clear();
}
break;
// Pulsar flecha arriba del teclado.
case ConsoleKey.UpArrow:
if (--itemSeñalado < 0)
{
itemSeñalado = TEXTO.Length - 1;
Console.Clear();
}
else if (itemSeñalado == 3)
{
Console.Clear();
}
break;
}
// Uso la tecla escape como salida.
} while (!salir);
}
#endregion
}
}