//Antes que nada avisar de que este tutorial está hecho exclusivamente para la creación de formularios mediante la Win32 API
//Existen más métodos mucho más sencillos como el uso de las librerías QT
Buenas, este es el primero de una futura y probable serie de tutoriales :roll: para crear formularios en c++
En este primer ejemplo crearemos solo el formulario y le añadiremos una Label.
@Para empezar debemos crear nuestro "Empty Project" en c++ con Visual Studio y añadir un archivo cpp
//Aclarar que es necesario el compilador de VS porque es muy probable que use en el futuro comandos que solo este compilador lea
@Una vez este creado, toca incluir la header de Windows
//Cuidado con el orden de inclusión, ponerla antes o después de otros includes puede causar errores innecesarios
---->[You must be registered and logged in to see this image.]
!Como supongo que añadireis funciones de vuestro código, para los que no sepais donde ponerlas una vez tengais creado el formulario decirles que pueden añadirlo después de incluir todos los headers y antes del paso que viene ahora
@Ahora añadimos una sección de código muy importante y que va relacionado con los parámetros del formulario
//No lo detallo mucho porque realmente no importa mucho
---->[You must be registered and logged in to see this image.]
!Como podéis ver, añado un static char al que llamo title y donde pongo el título del formulario, este después es añadido a la form al crearla así que si queréis podéis borrar esa constante o usarla.
@En esta parte añadimos la creación de la ventana en si, con sus dimensiones, título y localización
//He añadido un pedazo de código un poco grande porque realmente no se ha de modificar mucho del mismo para lo que haremos
---->[You must be registered and logged in to see this image.]
!Las variables pueden ser editadas(las de debajo de los includes) y pueden ser añadidos directamente en el código
@Por último, añadimos lo que va dentro de la ventana
//Cualquier duda podéis dejarlo en un mensaje debajo en los comentarios
---->[You must be registered and logged in to see this image.]
!Las variables pueden ser editadas y pueden ser añadidos directamente en el código
Aquí teneis una muestra en GIF:
[You must be registered and logged in to see this image.]
Por último os adjunto el código para que lo podáis añadir más rápidamente.
Un saludo y gracias por vuestra atención :super:
Espero poder continuar con el tutorial pronto y mostraros todas las posibilidades de la win32 api.
Bye y espero no haber podido estar recientemente, he tenido problemas escolares :lol!:
//Existen más métodos mucho más sencillos como el uso de las librerías QT
Buenas, este es el primero de una futura y probable serie de tutoriales :roll: para crear formularios en c++
En este primer ejemplo crearemos solo el formulario y le añadiremos una Label.
@Para empezar debemos crear nuestro "Empty Project" en c++ con Visual Studio y añadir un archivo cpp
//Aclarar que es necesario el compilador de VS porque es muy probable que use en el futuro comandos que solo este compilador lea
- Creación:
- [You must be registered and logged in to see this image.]
@Una vez este creado, toca incluir la header de Windows
//Cuidado con el orden de inclusión, ponerla antes o después de otros includes puede causar errores innecesarios
---->[You must be registered and logged in to see this image.]
!Como supongo que añadireis funciones de vuestro código, para los que no sepais donde ponerlas una vez tengais creado el formulario decirles que pueden añadirlo después de incluir todos los headers y antes del paso que viene ahora
@Ahora añadimos una sección de código muy importante y que va relacionado con los parámetros del formulario
//No lo detallo mucho porque realmente no importa mucho
---->[You must be registered and logged in to see this image.]
!Como podéis ver, añado un static char al que llamo title y donde pongo el título del formulario, este después es añadido a la form al crearla así que si queréis podéis borrar esa constante o usarla.
@En esta parte añadimos la creación de la ventana en si, con sus dimensiones, título y localización
//He añadido un pedazo de código un poco grande porque realmente no se ha de modificar mucho del mismo para lo que haremos
---->[You must be registered and logged in to see this image.]
!Las variables pueden ser editadas(las de debajo de los includes) y pueden ser añadidos directamente en el código
@Por último, añadimos lo que va dentro de la ventana
//Cualquier duda podéis dejarlo en un mensaje debajo en los comentarios
---->[You must be registered and logged in to see this image.]
!Las variables pueden ser editadas y pueden ser añadidos directamente en el código
Aquí teneis una muestra en GIF:
[You must be registered and logged in to see this image.]
Por último os adjunto el código para que lo podáis añadir más rápidamente.
- Code:
#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
//Title
static char *title = TEXT("Form by CrazyFrog98 visit hs4l.foroes.org for more");
//Donde se crea la ventana
static int xlocstart = 700;
static int ylocstart = 200;
//Tamaño de esta
static int sizeofx = 470;
static int sizeofy = 458;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;
WNDCLASS wc = { 0 };
wc.lpszClassName = title; //title = Título del formulario \\ Usar TEXT("Titutlo") en vez de title si se decea
wc.hInstance = hInstance;
wc.hbrBackground = GetSysColorBrush(COLOR_3DFACE);
wc.lpfnWndProc = WndProc;
wc.hCursor = LoadCursor(0, IDC_ARROW);
RegisterClass(&wc);
CreateWindow(wc.lpszClassName, title,
WS_OVERLAPPED | WS_MINIMIZEBOX | WS_SYSMENU | WS_VISIBLE | WS_OVERLAPPEDWINDOW,
xlocstart, ylocstart, sizeofx, sizeofy, 0, 0, hInstance, 0); //Cada elemento identificado arriba, pueden ponerse en el propio código si se desea
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_CREATE:
{
//Start Action -- Aquí podemos añadir una acción al iniciar el programa
//Ejemplo:
MessageBox(0, "Mensaje de Bienvenida", "Título del mensaje", MB_OK); //También se puede en vez de MB_OK colocar MB_ABORTRETRYIGNORE MB_CANCELTRYCONTINUE
//Aquí añadimos los elementos dentro del formulario
//En este caso un Label
//Empezamos con su localización:
static int xloclabel = 100;
static int yloclabel = 100;
static int xsizelabel = 150;
static int ysizelabel = 25;
//Load Label1
CreateWindowW(L"Static", L"Esto es un mensaje", // L"Static" no debe ser tocado, pero lo de la derecha es el texto
WS_CHILD | WS_VISIBLE, //Siempre tiene que ser CHILD(hijo del formulario) y visible(si queremos que se vea xD)
xloclabel, yloclabel, xsizelabel, ysizelabel, //Aquí van dimensiones de el label y loc. del label(Recomiendo modificar hasta que se vea todo) XD
hwnd, (HMENU)1, NULL, NULL); //Lo que hay despues de HMENU es la ID del elemento, importante para "trabajar" con el elemento más adelante.
break;
}
case WM_COMMAND:
{
//Por ahora no hay que tocar aquí
break;
}
case WM_DESTROY:
{
//Aquí se destruye el form
PostQuitMessage(0);
break;
}
}
return DefWindowProc(hwnd, msg, wParam, lParam);
}
Un saludo y gracias por vuestra atención :super:
Espero poder continuar con el tutorial pronto y mostraros todas las posibilidades de la win32 api.
Bye y espero no haber podido estar recientemente, he tenido problemas escolares :lol!: