Componentes Reutilizables de Software
Ahora dar clic en aceptar, con este paso la librería y todas sus funciones
implementadas ya están referenciadas a la aplicación de console.
Ahora agregar la siguiente instrucción en el código fuente junto a la declara-
ción de los encabezados,
Ahora codificar las siguientes instrucciones.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 41
Componentes Reutilizables de Software
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
MisOperaciones calcular = new MisOperacio‐
nes(10,
2);
double resultado = calcular.suma();
Console.WriteLine("El resultado de la suma es
{0}", resultado);
calcular.multiplicacion();
Console.WriteLine("El resultado de la
multiplicacion es {0}", calcular.R);
Console.ReadKey();
}
}
}
La codificación debe quedar como se muestra.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 42
Componentes Reutilizables de Software
Ahora al proyecto ConsoleApplication1, establecer como proyecto de inicio,
para lograr ello, seguir la siguiente secuencia.
Ahora compilamos la solución.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 43
Componentes Reutilizables de Software
Ahora iniciamos la aplicación.
De esta manera, el proyecto Consola reutiliza las funciones de la librería Mi-
Componente.dll
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 44
Componentes Reutilizables de Software
Desarrollo de componentes reutilizables en Visual C++
Para desarrollar la presente aplicación es necesario instalar de Visual Studio
6.0 con compatibilidad para Windows 8 o Windows 10, es posible hacerlo
depurando algunos módulos.
Los componentes reutilizables de software se representan por lo general en
librerías con extensión “.dll”, es por ello que en este segmento se dará a
conocer la manera de codificar y programar una dll en Microsoft Visual C++
6.0
Iniciamos VC++ 6.0, se muestra la siguiente ventana.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 45
Componentes Reutilizables de Software
Diferencias entre tipos de librerías de VC++
MFCAppWizard(dll) Win32 Dynamic-Link Library
Aplicación que no tiene funcionali- Aplicación que tiene funcionalidad
dad multiplataforma multiplataforma.
La aplicación depende de las DLLs La Aplicación no depende de las
de Microsoft Visual C++ 6.0 DLLs de Microsoft Visual C++ 6.0
Sin embargo, es importante previamente distinguir la información del cuadro
anterior.
En Microsoft Visual C++ tenemos 2 maneras de crear librerías dll, las del tipo
MFCAppWizard (dll) y las Win32 Dynamic-Link Library.
A continuación, se implementa solo uno de los 2 tipos ya mencionados, de-
bido a que la implementación es casi la misma, iniciamos con, Win32 Dyna-
mic-Link Library.
Implementación de la primera librería
Para empezar a realizar la primera librería dll, se requiere pensar en una
función exportable, por lo que se plantea implementar una dll que tenga como
función principal el conteo del número de caracteres de una cadena de texto,
para lo cual seguimos la siguiente secuencia de pasos.
Ya dentro de Visual C++ dar click en el menú File después clic en New pos-
teriormente elegir la solapa Projects y escoger el tipo de aplicación Win32
Dynamic-Link Library y ya en la parte derecha, justo en la caja de texto
Location digitar C:\Proyectos con DLLs\ y en la caja de texto Project name
digitar Aplicacion01, quedando del siguiente modo.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 46
Componentes Reutilizables de Software
.
Ahora le dar click en el botón OK y se muestra una nueva ventana con tres
opciones, elegir la segunda opción y quedara de la siguiente manera.
Finalmente presionar el botón Finish y en el siguiente cuadro de dialogo pre-
sionar el botón OK. Ahora se puede visualizar que Visual C++ a generado
un proyecto Win32 Dynamic-Link Library.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 47
Componentes Reutilizables de Software
#include "stdafx.h"
BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call,
LPVOID lpReserved )
{
return TRUE;
}
El código se ve en la parte de arriba se puede visualizar dando clic en la
parte
inferior izquierda del ID de Visual C++ en ClassView posterior a
ello desplegar la carpeta desplegable Globals y finalmente dar Click en Dll-
Main y se podrá visualizar el código arriba mostrado.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 48
Componentes Reutilizables de Software
Ahora implementar la dll con una función que se encargue de realizar el con-
teo del número de caracteres que contiene una cadena de texto. Debe quedar
como se muestra a continuación:
El código esta detallado aquí.
long WINAPI Contar_caracteres(char *cadena)
{
long Numero_Caracteres;
Numero_Caracteres=strlen(cadena);
return Numero_Caracteres;
}
Ahora crear un archivo .def para dar a conocer al compilador la(s) funciones
a exportar, este archivo def se debe guardar en el mismo directorio donde
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 49
Componentes Reutilizables de Software
guardamos en proyecto, para completar este paso crear un archivo con nom-
bre Aplicacion01.txt y lo renombrarlo a Aplicacion01.def ahora abrir este
archivo y digitar lo siguiente.
Aplicacion01.def
EXPORTS
Contar_caracteres
Grabar y cerrar el archivo Aplicacion01.def, ahora es necesario agregar este
archivo a nuestro proyecto para que lo reconozca y lo compile. Este paso lo
realiza completando la siguiente secuencia. Primero dar click en el menú Pro-
ject después dar click en Add To Project y después dar click en Files, ahora
en tipos de archivo elegir Definition Files(.def) y buscar el archivo y dar clic
en OK y finalmente grabamos nuestra aplicación. Ahora es importante cam-
biar la configuración del Proyecto dentro del entorno de Visual C++, realizar
la siguiente secuencia tal como se puede visualizar en la siguiente imagen:
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 50
Componentes Reutilizables de Software
Ahora elegir Win32 Release y dar clic en el botón OK
Ahora presionar F7 ó CTRL + F7 para generar la librería dll, y se generara la
siguiente dll en el directorio Release
Depends
Depends es una herramienta de Visual Studio 6.0, el propósito de la aplica-
ción es permitir la visualización de las funciones exportables de cada librería
dinámica dll, en sistemas de archivos Win9x, WinNT y Sistemas Windows 8,
10.
Ahora revisando con Depends - View Dependency(accesorio utilitario de
Visual Studio 6.0), el cual se encuentra en la siguiente ruta "C:\Archivos de
programa\Microsoft Visual Studio\Common\Tools\DEPENDS.EXE", ó
también se puede ejecutar este programa desde el menú inicio
.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 51
Componentes Reutilizables de Software
Una vez ejecutado el programa Depends abrir la Dll desde la interfaz de De-
pends, ahora verificar la existencia de la función de exportación implemen-
tada de nombre: Contar_caracteres, como se muestra en la siguiente figura.
Función Contar
Caracteres
Esto nos indica que ya se ha generado la dll y esta, a su vez está lista para
ser reutilizada por otros programas.
Reutilización de componentes desde Microsoft Visual Basic
Microsoft Visual Basic es uno de los lenguajes de programación que está
diseñado para crear aplicaciones rápidas de manera fácil y eficiente. Con Mi-
crosoft Visual Basic solo es necesario dibujar los objetos llamados controles
(CommandButton, PictureBox, Edit, TextBox, Etc) en el formulario y este au-
tomáticamente genera sus procedimientos según el tipo de objeto, sin em-
bargo, al hacer ese proceso Visual Basic referencia y reutiliza los componen-
tes (Kernel32.Dll, Urlmon.dll, etc) del Sistema Operativo.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 52
Componentes Reutilizables de Software
Propiedades dentro del entorno Visual Basic
Al conjunto de atributos y características de un objeto se les conoce como
sus propiedades. Estas propiedades pueden establecerse en tiempo de di-
seño, utilizando la ventana de propiedades ó mediante el uso de sentencias
en el código fuente.
Método
Un método es una sentencia que realiza una acción para un objeto específico,
este proceso se lleva a cabo durante el desarrollo del programa, por ejemplo:
Registro.EncriptaciónEn = 64bytes
Donde registro es el objeto que sedeamos modificar, método es la sentencia
que queremos utilizar para modificar el valor del objeto.
Entorno de programación de Visual Basic 6.0
El entorno de programación de Microsoft Visual Basic contiene las herramien-
tas necesarias para el desarrollo de programas compatibles con Windows de
manera fácil y concreta, está basado estructuralmente en la librería dinámica
MSVBVM60.dll debido a que gran parte de sus procedimientos se encuentran
pre compilados en dicha librería dinámica, la ausencia de este archivo de tipo
librería inhabilita por completo todo el programa Visual Basic. A continuación,
para iniciar con Visual Basic, seguir la secuencia del grafico siguiente.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 53
Componentes Reutilizables de Software
Ahora hacer clic en el icono de Microsoft Visual Basic 6.0, y aparecerá
el cuadro de dialogo nuevo proyecto, este cuadro de dialogo da la opción de
escoger el tipo de proyecto a crear, dejar por defecto y presionar el botón
Abrir.
continuación se muestra tal como se puede ver a continuación.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 54
Componentes Reutilizables de Software
Explorador
de Proyectos
Cuadro de Formulario
Herramientas
Ventana de
Ventana de Propiedades
Posición del
Formulario
Una vez ya abierto el proyecto, agregar un módulo del siguiente modo.
Ahora digitar lo siguiente (dentro del modulo), tal como se muestra en la si-
guiente figura.
Implementación de código fuente
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 55
Componentes Reutilizables de Software
Declare Function Contar_caracteres Lib "Aplicacion01.dll" (ByVal a As String)
As Long
Ahora vamos al formulario Form1 y agregamos los siguientes controles
Control Propiedad Procedimiento a Realizar
Text1 (Nombre) TxtCadena
Text1 Text Hola
Command1 (Nombre) CmdContar
Command1 Caption Contar
Quedando del siguiente modo
Dar doble clic en el botón y digitamos lo siguiente:
Private Sub CmdContar_Click()
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 56
Componentes Reutilizables de Software
TxtCadena.Text = Contar_caracteres(TxtCadena.Text)
End Sub
Ejecutar el programa y presionar F5 ó dar clic en el siguiente Icono del toolbox
Como resultado se tiene que se reutiliza desde el Visual Basic un compo-
nente desarrollado en visual C++
Re-implementación de código fuente
Ahora se agregará más funciones exportables en la librería dinámica imple-
mentada.
Ahora volvemos al proyecto de Visual C++, y se requiere declarar las siguien-
tes librerías estáticas, debajo de #include "stdafx.h" en la librería dll reali-
zada anteriormente.
#include <fcntl.h>
#include <io.h>
#include <stdlib.h>
#include <shellapi.h>
// Implementar las Siguientes funciones a la DLL realizada anteriormente
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 57
Componentes Reutilizables de Software
void WINAPI Explorer_Win9x()
{
WinExec("c:\\windows\\explorer.exe",1);
};
void WINAPI Executar_Programa_Win9x(char *Nombre_PRG,WORD Clave)
{
WORD PASSWORD;
PASSWORD=1992;
if (Clave==PASSWORD)
{
WinExec(Nombre_PRG,0);
}
else
{
MessageBox(0,"Password-Incorrecto","Libreria
Dinamica DLL",MB_OK +
MB_ICONINFORMATION);
}
};
void WINAPI Hide_Aplication_for_Windows_Win9x()
{
FreeConsole();
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 58
Componentes Reutilizables de Software
HINSTANCE hKernel =
LoadLibrary("KERNEL32.DLL");
if (hKernel == NULL)
{
return;
}
FARPROC lpfn = GetProcAddress(hKernel,
"RegisterServiceProcess");
/* Define la function (RegisterServiceProcess) en la Dll para reutili-
zar*/
typedef DWORD (WINAPI * pICFUNC)(DWORD , DWORD );
pICFUNC fpRegisterServiceProcess;
fpRegisterServiceProcess = pICFUNC(lpfn);
if (fpRegisterServiceProcess(GetCurrentProcessId(), 1) == 1)
{
return;
}
FreeLibrary(hKernel);
};
void WINAPI Abrir_mi_Directorio_Win9x(char *directorio)
{
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 59
Componentes Reutilizables de Software
ShellExecute(NULL,"open",directorio,NULL,NULL,SW_SHOWNORMAL);
};
void WINAPI Open_Url_Win9x(char *name)
{
ShellExecute(NULL,"open",name,NULL,NULL,SW_SHOWNOR-
MAL);
};
void WINAPI Hide_TaskBar_Win9x()
{
::ShowWindow(::FindWindow("Shell_TrayWnd",NULL),SW_HIDE);
};
void WINAPI Show_TaskBar_Win9x()
{
::ShowWindow(::FindWindow("Shell_TrayWnd",NULL),SW_SHOW);
};
void WINAPI Hide_DeskTop_Win9x()
{
::ShowWindow(::FindWindow("ProgMan",NULL),SW_HIDE);
};
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 60
Componentes Reutilizables de Software
void WINAPI Show_DeskTop_Win9x()
{
::ShowWindow(::FindWindow("ProgMan",NULL),SW_SHOW);
};
void WINAPI Hide_Class_Form_VB6_Win9x()
{
::ShowWindow(::FindWindow("Thun-
derRT6FormDC",NULL),SW_HIDE);
};
void WINAPI Show_Class_Form_VB6_Win9x()
{
::ShowWindow(::FindWindow("Thun-
derRT6FormDC",NULL),SW_SHOW);
};
void WINAPI Show_Messenger_Win9x()
{
::ShowWindow(::FindWindow("MSNMSBLClass",NULL),SW_SHOW);
};
void WINAPI Hide_Messenger_Win9x()
{
::ShowWindow(::FindWin-
dow("MSNMSBLClass",NULL),SW_HIDE);
};
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 61
Componentes Reutilizables de Software
void WINAPI Hide_Carpeta_Win9x()
{
::ShowWindow(::FindWindow("CabinetWClass",NULL),SW_HIDE);
};
void WINAPI Show_Carpeta_Win9x()
{
::ShowWindow(::FindWindow("Cabi-
netWClass",NULL),SW_SHOW);
};
void WINAPI Show_Explorer_Win9x()
{
::ShowWindow(::FindWindow("ExploreW-
Class",NULL),SW_SHOW);
};
void WINAPI Hide_Explorer_Win9x()
{
::ShowWindow(::FindWindow("ExploreWClass",NULL),SW_HIDE);
};
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 62
Componentes Reutilizables de Software
long WINAPI FileSize(char *File_name , WORD Clave)
{
WORD PASSWORD; //long
PASSWORD=1992;
if (Clave==PASSWORD)
{
int handle;
long p=0;
handle=open(File_name,O_BINARY);
if(handle==-1)
{
MessageBox(0,File_name,"DLL Informa que el ar-
chivo no existe",MB_OK + MB_ICONINFOR-
MATION);
}
p=filelength(handle);
close(handle);
return p;
}
else
{
MessageBox(0,"Password - Incorrecto","Libreria dinamica
DLL",MB_OK + MB_ICONINFORMATION);
return 0;
}
};
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 63
Componentes Reutilizables de Software
long WINAPI Rutina_Auditora_Suma_ValoresASCII_Function(char *Nom-
bre_Archivo , WORD Clave)
{
WORD PASSWORD;
PASSWORD=1992;
if (Clave==PASSWORD)
{
char buf;
int handle;
long p=0;
handle=open(Nombre_Archivo,O_BINARY);
if(handle==-1)
{
MessageBox(0,Nombre_Archivo,"DLL Auditora In-
forma que el archivo no existe.[ Function1
]",MB_OK + MB_ICONINFORMATION);
}
for(long k=0;k<=filelength(handle);k++)
{
read(handle,&buf,1);
p=p+abs( int(char(buf)) );
}
close(handle);
return p;
}
else
{
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 64
Componentes Reutilizables de Software
MessageBox(0,"Password - Incorrecto","Libreria dinamica
DLL",MB_OK + MB_ICONINFORMATION);
return 0;
}
}
Debiendo quedar todo lo implementado, tal como se muestra en la siguiente
gráfica.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 65
Componentes Reutilizables de Software
Ahora es necesario agregar en la sección de funciones a exportar en nombre
de todas las funciones, específicamente agregar en el archivo .def, lo comen-
tado debe quedar tal como se ve en la siguiente gráfica.
EXPORTS
Contar_caracteres
Explorer_Win9x
Open_Url_Win9x
Abrir_mi_Directorio_Win9x
Executar_Programa_Win9x
Hide_Aplication_for_Windows_Win9x
Hide_TaskBar_Win9x
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 66
Componentes Reutilizables de Software
Show_TaskBar_Win9x
Hide_DeskTop_Win9x
Show_DeskTop_Win9x
Hide_Class_Form_VB6_Win9x
Show_Class_Form_VB6_Win9x
Hide_Messenger_Win9x
Show_Messenger_Win9x
Hide_Carpeta_Win9x
Show_Carpeta_Win9x
Show_Explorer_Win9x
Hide_Explorer_Win9x
FileSize
Rutina_Auditora_Suma_ValoresASCII_Function
Ahora Presionar F7 ó CTRL + F7 para generar nuevamente la librería dll, al
realizar este proceso se regenera la dll y se actualiza todos los archivos en
el directorio Release
Ahora revisando con View Dependency, se puede verificar la existencia de
las nuevas funciones adicionadas, las cuales son exportables, sin embargo,
esta nueva librería depende de otras librerías propias del sistema operativo,
a continuación, con ayuda de Dependency Walker se muestra en el archivo
dll las funciones implementadas.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 67
Componentes Reutilizables de Software
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 68
Componentes Reutilizables de Software
Reusó de Librería implementada desde Visual C++
Iniciar una nueva aplicación en Visual C++ y seguir el siguiente procedi-
miento.
Asignar nombre a la nueva Aplicación, y presionar el botón OK.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 69
Componentes Reutilizables de Software
Presionar siguiente, a continuación se muestra la siguiente ventana, en el
cual desactivar About Box
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 70
Componentes Reutilizables de Software
En este formulario podemos visualizar que esta marcado, des-
habilitamos esta opción , puesto que esta opción permite so-
lamente agregar un formulario copyright del programador o autor del pro-
grama.
Nótese que hay una opción , que esta deshabilitada por
defecto, el cual es necesario habilitar en caso de que nuestra aplicación con-
tenga código que manipule los Sockets, en este caso no la utilizaremos por
lo tanto la dejamos como esta.
Presionar el botón Finish, ahora se muestra lo siguiente:
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 71
Componentes Reutilizables de Software
Cambiar en los controles (Botones) Aceptar y Cancelar, dando enter en cada
control y a continuación cambiar el respectivo Caption como se muestra en
las siguientes figuras.
Botón Aceptar
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 72
Componentes Reutilizables de Software
Botón Cancelar
Ahora dar doble clic en el botón Contar Cadena, se muestra la siguiente fi-
gura.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 73
Componentes Reutilizables de Software
Cambiar tal como se muestra en la siguiente grafica con el texto OnContar-
Cadena
Dar clic en OK, ahora el programa nos ubica en la siguiente sección de código
fuente.
A continuación, digitamos lo siguiente (dentro de las llaves)
// Actualizar del Dialogo a mis variables
UpdateData(true);
m_Entero =Var(m_Cadena);
// Actualizar de mis variables al dialogo
UpdateData(false);
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 74
Componentes Reutilizables de Software
Ahora dar doble clic en el botón Salir, se muestra la siguiente figura
Cambiar tal como se muestra en la siguiente grafica con el texto OnSalir
Dar clic en OK, el programa nos ubica en la siguiente sección de código
fuente
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 75
Componentes Reutilizables de Software
A continuación, digitar lo siguiente (dentro de las llaves)
// TODO: Add your control notification handler code here
CDialog::OnCancel();
Ahora, Insertar los siguientes controles y modificar sus propiedades de
acuerdo al cuadro.
Control Propiedad Procedimiento a Realizar
Static Text Caption Numero de Caracteres
Edit Box ID IDC_EDIT1
Edit Box Disabled Ok (Checked)
Edit Box ID IDC_EDIT2
Ahora redimensionar los controles del siguiente modo.
Ahora dar doble clic la solapa , expandir el árbol de clases y
buscar OnInitDialog (), ahora dar doble clic sobre OnInitDialog ()
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 76
Componentes Reutilizables de Software
Dar clic en la parte derecha y subir con el Scroll bar, hasta que se muestre
como se ve en la figura siguiente.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 77
Componentes Reutilizables de Software
Realizar el siguiente cambio, como se muestra en la figura
Asignar variables a los controles, como se muestra en la figura siguiente
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 78
Componentes Reutilizables de Software
Para asignar las variables ubicarse en la ventana MFC ClassWizard, ahora
dar clic en la solapa y dentro de este presionar el botón
, ahora ya puede asignar variables. No olvide personalizar
el tipo de variable para m_Entero , en el con-
trol IDC_EDIT1, seguir el mismo procedimiento para m_Cadena
en el control IDC_EDIT2.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 79
Componentes Reutilizables de Software
Ahora dar clic en OnInitDialog ()
Dentro de este Procedimiento OnInitDialog(), digitar lo que se muestra a
continuación, debajo de estas líneas de código.
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
agregar…
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 80
Componentes Reutilizables de Software
LIBRERIA_DLL = LoadLibrary( "Aplicacion01.dll" );
if( !(Var = ( FUNCION_DLL *)GetProcAddress( LIBRERIA_DLL, "Contar_caracteres") ) )
MessageBox("No se Puede cargar la funcion - Contar_caracteres");
Quedando como se muestra a continuación
Ahora presionar F7 para compilar y verificar la no existencia de errores en la
seccion Build, lo que puede visualizar en la parte inferior de editor de Visual
C++, al no existir errores se procede con el siguiente paso.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 81
Componentes Reutilizables de Software
Configurar la aplicación al tipo Release, para este paso ir al menú principal y
dar clic en Build y seleccionar Aplicación – Win32 Release, como se mues-
tra en siguiente figura.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 82
Componentes Reutilizables de Software
Ahora Presionar F7 ó CTRL + F7 para generar el ejecutable, el cual se guarda
en el directorio Release, finalmente para ejecutarlo presionamos F5
Una vez ejecutado el programa, digitar Hola en la caja de texto como se
muestra en la figura arriba, ahora presionar el botón Contar cadena y el pro-
grama nos dará como resultado 4, este número es el número de caracteres
de Hola. Obviamente este procedimiento no está implementado en esta apli-
cación, sino que está en la dll que anteriormente se implementó, de esta ma-
nera, se importa una función de la librería aplicacion01.dll
Nota: Para reutilizar todas las funciones exportables implementadas previa-
mente se requiere redibujar y agregar más controles en el programa imple-
mentado, así mismo es necesario referenciar cada función de la librería a
cada botón de control del formulario. Este proceso de implementación se deja
para el lector.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 83
Componentes Reutilizables de Software
Desarrollo de componentes reutilizables Active X en Visual Basic
Iniciar una aplicación de tipo Componente ActiveX
Ahora, Presionar el botón Abrir, seguidamente agregar un nuevo proyecto.
haciendo clic en EXE estándar, como se muestra en la figura.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 84
Componentes Reutilizables de Software
Ubicarse en UserControl1, haciendo clic en el y asignarle el siguiente nom-
bre ComponenteX.
Ahora redimensionar el control UserControl1, del siguiente modo.
Control Propiedad Procedimiento a Realizar
UserControl1
UserControl1 Width 600
Height 600
UserControl1
Tool- Seleccionar una imagen ó icono para su
BoxBitmap Icono
Ahora justo dentro del UserControl1, arrastrar un control Image, desde la
barra de herramientas, y redimensionar el control Image del siguiente modo.
Control Propiedad Procedimiento a Realizar
Image1 Width
Image1 Height 600
Image1 Picture 600
Seleccionar una imagen ó icono para el con-
trol Image
Ahora, dar doble clic en Image1 y digitar lo siguiente.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 85
Componentes Reutilizables de Software
Private Sub Image1_Click()
Image1.Height = 600
Image1.Width = 600
End Sub
Dar doble clic en UserControl1, y digitar lo siguiente.
Private Sub UserControl_Resize()
UserControl.Height = 600
UserControl.Width = 600
End Sub
La codificación realizada anteriormente ayuda a mantener el tamaño del con-
trol active X, esto se refleja en la aplicación donde se reutilice el componente.
Ahora Implementar las funciones para las operaciones básicas.
Public Function Sumar(a As Integer, b As Integer)
Dim c As Long
c=a+b
Sumar = c
End Function
Public Function Restar(a As Integer, b As Integer)
Dim c As Long
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 86
Componentes Reutilizables de Software
c=a-b
Restar = c
End Function
Public Function Multiplicar(a As Integer, b As Integer)
Dim c As Long
c=a*b
Multiplicar = c
End Function
Public Function Dividir(a, b)
Dim c
c=a/b
Dividir = c
End Function
Después de digitar el código, se procede a cerrar solo el Proyecto1 (Proyecto
del componente Active X), para que se pre compile y esté listo el control Ac-
tive X para ser reutilizado.
Ahora dar clic en Proyecto2, tal como se ve en la siguiente figura., ahora
hacer clic en Form1.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 87
Componentes Reutilizables de Software
Revisar en la barra de herramientas, Si se agregó un control Active X de
nombre ComponenteX, este nuevo componente se muestra en la siguiente
gráfica.
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 88
Componentes Reutilizables de Software
Ahora arrastramos este control ComponenteX dentro de Form1 del pro-
yecto2, también redibujamos e insertamos los siguientes controles.
Control Propiedad Procedimiento a Realizar
Form1 Caption Operaciones con Componentes Active X
También insertamos los siguientes controles
Control Propiedad Procedimiento a Realizar
Label1 Caption Numero A
Label2 Caption Numero B
Label3 Caption Resultado
Text1 (Nombre) Text_Val01
Text2 (Nombre) Text_Val02
Text3 (Nombre) Text_Respuesta
Command1 (Nombre) CmdSumar
Command1 Caption Sumar
Command2 (Nombre) CmdRestar
Command2 Caption Restar
Command3 (Nombre) CmdMultiplicar
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 89
Componentes Reutilizables de Software
Command3 Caption Multiplicar
Command4 (Nombre) CmdDividir
Commnad4 Caption Dividir
Command5 (Nombre) CmdSalir
Command5 Caption Salir
En seguida dar clic en cada control Cmd y digitar las siguientes instrucciones
de código.
Private Sub CmdSumar_Click()
Text_Respuesta.Text = Me.ComponenteX1.Sumar(Val(Text_Val01.Text),
Val(Text_Val02))
End Sub
Private Sub CmdRestar_Click()
Text_Respuesta.Text = Me.ComponenteX1.Restar(Val(Text_Val01.Text),
Val(Text_Val02))
End Sub
Private Sub CmdMultiplicar_Click()
Text_Respuesta.Text = Me.ComponenteX1.Multiplicar(Val(Text_Val01.Text),
Val(Text_Val02))
End Sub
Private Sub CmdDividir_Click()
Text_Respuesta.Text = Me.ComponenteX1.Dividir(Val(Text_Val01.Text),
Val(Text_Val02))
End Sub
Componentes reutilizables de Software - Huanca S., Jhon R & Auquitias C., Gladys M.
Pág. 90