
¿Como dibujo y escribo en un proyecto Win32 GUI?
Publicado por Xajorkith (3 intervenciones) el 12/03/2015 22:14:31
Buenos días. Tengo un problema a la hora de empezar a programar para windows.
He creado un proyecto con DEVC++ V7.4.2.569 portable para ir aprendiendo, del tipo Win32 GUI, que muestra una ventana al ejecutarlo y la deja activa. Su listado es el que crea DevC++ como base para la aplicación:
Cuando uso printf() para sacar algo por pantalla, no sale nada. He probado a crear un fichero de texto con las letras del abecedario, y lo crea sin problemas, el programa corre bien. Pero todas las funciones que pruebo del tipo printf(), scanf(), etc. dan error de compilación o no producen ningún cambio en la pantalla. Lo que no se es como mostrar nada por pantalla, ni leer la posición del ratón, ni el teclado...
El programa es un simple cronómetro. Para escribir voy a usar una rutina que tengo para caracteres 8x8 y solo usa la de función de pixel. Pero....
¿Donde se encuentran las funciones para hacer lo siguiente?
- Mostrar un pixel. (La clásica función llamada con X, Y, ColorRGB24)
- Leer el teclado (sin esperar ENTER, que de el código de la tecla pulsada o NULL si no hay tecla pulsada)
- Obtener la posición actual del ratón. (típica que devuelve X e Y en una estructura, o actualiza las variables globales)
Comprobar si está pulsado el botón derecho. (típica que devuelve bool)
Comprobar si está pulsado el botón izquierdo. (típica que devuelve bool)
No se que #includes se necesitan, ni que funciones hay, ni donde se pueden descargar, ni donde ver sus definiciones. Ni naa, Estoy perdido con el inglés.
Gracias por la ayuda. Toda será bienvenida.
He creado un proyecto con DEVC++ V7.4.2.569 portable para ir aprendiendo, del tipo Win32 GUI, que muestra una ventana al ejecutarlo y la deja activa. Su listado es el que crea DevC++ como base para la aplicación:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <windows.h>
/* Declare Windows procedure */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
/* Make the class name into a global variable */
char szClassName[ ] = "WindowsApp";
int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)
{
HWND hwnd; /* This is the handle for our window */
MSG messages; /* Here messages to the application are saved */
WNDCLASSEX wincl; /* Data structure for the windowclass */
/* The Window structure */
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure; /* This function is called by windows */
wincl.style = CS_DBLCLKS; /* Catch double-clicks */
wincl.cbSize = sizeof (WNDCLASSEX);
/* Use default icon and mouse-pointer */
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL; /* No menu */
wincl.cbClsExtra = 0; /* No extra bytes after the window class */
wincl.cbWndExtra = 0; /* structure or the window instance */
/* Use Windows's default color as the background of the window */
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
/* Register the window class, and if it fails quit the program */
if (!RegisterClassEx (&wincl))
return 0;
/* The class is registered, let's create the program*/
hwnd = CreateWindowEx (
0, /* Extended possibilites for variation */
szClassName, /* Classname */
"Windows App", /* Title Text */
WS_OVERLAPPEDWINDOW, /* default window */
CW_USEDEFAULT, /* Windows decides the position */
CW_USEDEFAULT, /* where the window ends up on the screen */
544, /* The programs width */
375, /* and height in pixels */
HWND_DESKTOP, /* The window is a child-window to desktop */
NULL, /* No menu */
hThisInstance, /* Program Instance handler */
NULL /* No Window Creation data */
);
/* Make the window visible on the screen */
ShowWindow (hwnd, nFunsterStil);
{
----------------------------------------AQUÍ VA MI PROGRAMA -----------------------------------------------
}
/* Run the message loop. It will run until GetMessage() returns 0 */
while (GetMessage (&messages, NULL, 0, 0))
{
/* Translate virtual-key messages into character messages */
TranslateMessage(&messages);
/* Send message to WindowProcedure */
DispatchMessage(&messages);
}
/* The program return-value is 0 - The value that PostQuitMessage() gave */
return messages.wParam;
}
/* This function is called by the Windows function DispatchMessage() */
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message) /* handle the messages */
{
case WM_DESTROY:
PostQuitMessage (0); /* send a WM_QUIT to the message queue */
break;
default: /* for messages that we don't deal with */
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
Cuando uso printf() para sacar algo por pantalla, no sale nada. He probado a crear un fichero de texto con las letras del abecedario, y lo crea sin problemas, el programa corre bien. Pero todas las funciones que pruebo del tipo printf(), scanf(), etc. dan error de compilación o no producen ningún cambio en la pantalla. Lo que no se es como mostrar nada por pantalla, ni leer la posición del ratón, ni el teclado...
El programa es un simple cronómetro. Para escribir voy a usar una rutina que tengo para caracteres 8x8 y solo usa la de función de pixel. Pero....
¿Donde se encuentran las funciones para hacer lo siguiente?
- Mostrar un pixel. (La clásica función llamada con X, Y, ColorRGB24)
- Leer el teclado (sin esperar ENTER, que de el código de la tecla pulsada o NULL si no hay tecla pulsada)
- Obtener la posición actual del ratón. (típica que devuelve X e Y en una estructura, o actualiza las variables globales)
Comprobar si está pulsado el botón derecho. (típica que devuelve bool)
Comprobar si está pulsado el botón izquierdo. (típica que devuelve bool)
No se que #includes se necesitan, ni que funciones hay, ni donde se pueden descargar, ni donde ver sus definiciones. Ni naa, Estoy perdido con el inglés.
Gracias por la ayuda. Toda será bienvenida.
Valora esta pregunta


0