C/Visual C - Ventanas

 
Vista:

Ventanas

Publicado por Ricardo (4 intervenciones) el 25/06/2003 00:51:38
Hola a todos los programadores de la red. Necesito ayuda para crear Ventanas en C.
Quiero crear ventanas sin perder la información que quede bajo la ventana, o sea, crear una ventana opuparla todo lo que la necesite luego borrarla y recuperar la información que tenga antes de crear la ventana y poder seguir trabajando. Y lo otro es poder crear y trabajar con ventanas múltiples.

De antemano muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Creación de ventanas en C sin perder información y manejo de ventanas múltiples

Publicado por Alejandro (1222 intervenciones) el 04/07/2025 00:56:07
Para crear ventanas en C y manejar la superposición de información sin perder datos, puedes utilizar la API de Windows. Aquí te dejo algunos pasos y ejemplos que te ayudarán a lograrlo:

1. Crear una ventana básica



Primero, necesitas crear una ventana básica utilizando la API de Windows. Aquí tienes un ejemplo simple:

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
#include <windows.h>
 
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
    switch (uMsg) {
        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;
        case WM_PAINT:
            {
                PAINTSTRUCT ps;
                HDC hdc = BeginPaint(hwnd, &ps);
                // Aquí puedes dibujar en la ventana
                EndPaint(hwnd, &ps);
            }
            return 0;
    }
    return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
    const char CLASS_NAME[] = "MiVentanaClase";
 
    WNDCLASS wc = {0};
    wc.lpfnWndProc = WindowProc;
    wc.hInstance = hInstance;
    wc.lpszClassName = CLASS_NAME;
 
    RegisterClass(&wc);
 
    HWND hwnd = CreateWindowEx(0, CLASS_NAME, "Mi ventana", WS_OVERLAPPEDWINDOW,
                               CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
                               NULL, NULL, hInstance, NULL);
 
    ShowWindow(hwnd, nShowCmd);
 
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
 
    return 0;
}

2. Mantener la información bajo la ventana



Para mantener la información que está debajo de la ventana, puedes utilizar el método de "redibujo" de la ventana. Cuando creas una nueva ventana, asegúrate de que la ventana anterior se redibuje correctamente. Puedes hacer esto llamando a `InvalidateRect` en la ventana que deseas redibujar.

3. Manejo de ventanas múltiples



Para manejar múltiples ventanas, puedes crear varias instancias de la ventana utilizando un bucle y almacenando los identificadores de las ventanas en un arreglo. Aquí tienes un ejemplo básico:

1
2
3
4
5
6
7
8
9
10
11
12
13
#define MAX_VENTANAS 10
HWND ventanas[MAX_VENTANAS];
int numVentanas = 0;
 
void CrearNuevaVentana(HINSTANCE hInstance) {
    if (numVentanas < MAX_VENTANAS) {
        HWND hwnd = CreateWindowEx(0, CLASS_NAME, "Ventana " + std::to_string(numVentanas + 1), WS_OVERLAPPEDWINDOW,
                                   CW_USEDEFAULT, CW_USEDEFAULT, 300, 200,
                                   NULL, NULL, hInstance, NULL);
        ShowWindow(hwnd, SW_SHOW);
        ventanas[numVentanas++] = hwnd;
    }
}

4. Ejemplo de uso



Puedes llamar a `CrearNuevaVentana` desde el procedimiento de ventana cuando se recibe un mensaje específico, como un clic en un botón.

5. Recursos adicionales



- Documentación de la API de Windows: La documentación oficial (https://learn.microsoft.com/en-us/windows/win32/api/) es un excelente recurso para aprender más sobre la creación y manejo de ventanas.
- Tutoriales en línea: Busca tutoriales sobre "Win32 API" que te guiarán a través de ejemplos más complejos y te ayudarán a entender mejor cómo funcionan las ventanas en C.

Con estos ejemplos y recursos, deberías poder comenzar a crear y manejar ventanas en C sin perder la información subyacente. ¡Buena suerte con tu proyecto, Ricardo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar