C/Visual C - Boton en la barra de tareas

 
Vista:

Boton en la barra de tareas

Publicado por Mariano (15 intervenciones) el 12/03/2003 16:29:48
Les consulto cómo crear una ventana con el estilo WM_POPUP(usando API WIN32), que no tenga un botón el la barra de tareas, (que sólo sea un rectángulo gris en pantalla). Gracias, Mariano.
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

Crear una ventana WM_POPUP sin botón en la barra de tareas usando API Win32

Publicado por Alejandro (1153 intervenciones) el 09/05/2025 00:32:18
Para crear una ventana con el estilo `WM_POPUP` que no tenga un botón en la barra de tareas, puedes utilizar la API de Windows. A continuación, te muestro un ejemplo de cómo hacerlo.

Pasos para crear la ventana



1. Definir la clase de ventana: Debes registrar una clase de ventana que defina el comportamiento de tu ventana.

2. Crear la ventana: Utiliza `CreateWindowEx` para crear la ventana con el estilo `WS_POPUP`.

3. Mostrar la ventana: Usa `ShowWindow` y `UpdateWindow` para mostrar la ventana en la pantalla.

4. Manejo de mensajes: Implementa un bucle de mensajes para manejar los eventos de la ventana.

Ejemplo de código



Aquí tienes un ejemplo completo que crea una ventana `WM_POPUP` sin un botón en la barra de tareas:

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
#include <windows.h>
 
// Prototipo de la función de ventana
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int nShowCmd) {
    // Definir la clase de la ventana
    const char CLASS_NAME[] = "MiVentanaPopup";
 
    WNDCLASS wc = {};
    wc.lpfnWndProc = WindowProc;
    wc.hInstance = hInstance;
    wc.lpszClassName = CLASS_NAME;
 
    RegisterClass(&wc);
 
    // Crear la ventana
    HWND hwnd = CreateWindowEx(
        0,                          // Estilo extendido
        CLASS_NAME,                // Nombre de la clase
        "Ventana Popup",           // Título de la ventana
        WS_POPUP | WS_VISIBLE,     // Estilo de la ventana
        100, 100,                  // Posición x, y
        400, 300,                  // Ancho, alto
        NULL,                       // Ventana padre
        NULL,                       // Menú
        hInstance,                 // Instancia de la aplicación
        NULL                        // Parámetros adicionales
    );
 
    if (hwnd == NULL) {
        return 0;
    }
 
    // Mostrar la ventana
    ShowWindow(hwnd, nShowCmd);
    UpdateWindow(hwnd);
 
    // Bucle de mensajes
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
 
    return 0;
}
 
// Función de procesamiento de mensajes
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
            FillRect(hdc, &ps.rcPaint, (HBRUSH)(COLOR_GRAYTEXT + 1)); // Rellenar con gris
            EndPaint(hwnd, &ps);
        }
        return 0;
    }
    return DefWindowProc(hwnd, uMsg, wParam, lParam);
}

Explicación del código:



1. Definición de la clase de ventana: Se define una clase de ventana con un procedimiento de ventana (`WindowProc`) que maneja los mensajes.

2. Creación de la ventana: Se utiliza `CreateWindowEx` con el estilo `WS_POPUP` para crear una ventana que no aparecerá en la barra de tareas.

3. Manejo de mensajes: En el procedimiento de ventana, se manejan los mensajes como `WM_DESTROY` para cerrar la aplicación y `WM_PAINT` para dibujar en la ventana.

4. Dibujo en la ventana: En el mensaje `WM_PAINT`, se rellena la ventana con un color gris.

Consideraciones:



- Sin barra de tareas: Al usar `WS_POPUP`, la ventana no tendrá un botón en la barra de tareas, pero aún puede ser manipulada con el mouse y el teclado.

- Estilo de ventana: Puedes ajustar los estilos de la ventana según tus necesidades. Por ejemplo, puedes agregar bordes o cambiar el comportamiento de la ventana.

- Dibujo personalizado: Puedes personalizar el dibujo en la ventana modificando el código en el manejador de `WM_PAINT`.

Este enfoque te permitirá crear una ventana `WM_POPUP` sin un botón en la barra de tareas utilizando la API de Windows. ¡Buena suerte, Mariano!
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