C/Visual C - icon tray

 
Vista:

icon tray

Publicado por Diego (1 intervención) el 19/09/2001 10:11:40
Hola. Tengo un problemilla y es que no se como se hace en borland c++ un tray icon de esos. Además quiero que el menu emergente contenga imágenes a la izquierda (tipo botón inicio de windows) y q cada opción me lleve a una dirreción de internet.
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

Crear un tray icon en Borland C++ con menú emergente

Publicado por Alejandro (913 intervenciones) el 15/10/2024 20:57:38
Para crear un icono en la bandeja del sistema (tray icon) en Borland C++, puedes seguir estos pasos. También te mostraré cómo agregar un menú emergente con imágenes y opciones que te lleven a direcciones de Internet.

1. Incluir las bibliotecas necesarias:


Asegúrate de incluir las bibliotecas necesarias en tu proyecto:

1
2
#include <windows.h>
#include <shellapi.h>

2. Definir el icono y el menú:
Define el icono y el menú emergente en tu código:

1
2
3
4
5
#define WM_TRAYICON (WM_USER + 1)
 
HICON hIcon;
HMENU hMenu;
NOTIFYICONDATA nid;

3. Crear el icono en la bandeja:
En tu función `WinMain` o en el método de inicialización de tu ventana, configura el icono de la bandeja:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
hIcon = LoadIcon(NULL, IDI_APPLICATION); // Cargar un icono
hMenu = CreatePopupMenu(); // Crear el menú emergente
 
// Agregar opciones al menú
AppendMenu(hMenu, MF_STRING, 1, "Opción 1");
AppendMenu(hMenu, MF_STRING, 2, "Opción 2");
 
// Configurar el NOTIFYICONDATA
nid.cbSize = sizeof(NOTIFYICONDATA);
nid.hWnd = hWnd; // Manejo de la ventana principal
nid.uID = 1; // ID del icono
nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
nid.uCallbackMessage = WM_TRAYICON; // Mensaje de callback
nid.hIcon = hIcon; // Icono
strcpy(nid.szTip, "Mi Aplicación"); // Tooltip
 
// Agregar el icono a la bandeja
Shell_NotifyIcon(NIM_ADD, &nid);

4. Manejar el mensaje del icono:


En el procedimiento de la ventana, maneja el mensaje del icono de la bandeja:

1
2
3
4
5
6
7
8
case WM_TRAYICON:
    if (lParam == WM_RBUTTONDOWN) {
        POINT pt;
        GetCursorPos(&pt);
        SetForegroundWindow(hWnd);
        TrackPopupMenu(hMenu, TPM_RIGHTBUTTON, pt.x, pt.y, 0, hWnd, NULL);
    }
    break;

5. Abrir direcciones de Internet:


Para abrir una dirección de Internet cuando se selecciona una opción del menú, puedes usar `ShellExecute`:

1
2
3
4
5
6
7
8
9
10
case WM_COMMAND:
    switch (LOWORD(wParam)) {
        case 1: // Opción 1
            ShellExecute(NULL, "open", "http://www.ejemplo1.com", NULL, NULL, SW_SHOWNORMAL);
            break;
        case 2: // Opción 2
            ShellExecute(NULL, "open", "http://www.ejemplo2.com", NULL, NULL, SW_SHOWNORMAL);
            break;
    }
    break;

6. Agregar imágenes al menú


Para agregar imágenes al menú, necesitarás usar un `HBITMAP` o `HICON` y asociarlo con cada opción. Sin embargo, esto puede ser un poco más complicado y puede requerir el uso de bibliotecas adicionales o técnicas avanzadas.

7. Limpiar recursos:


No olvides eliminar el icono de la bandeja cuando tu aplicación se cierre:

1
Shell_NotifyIcon(NIM_DELETE, &nid);

Resumen


Con estos pasos, deberías poder crear un icono en la bandeja del sistema con un menú emergente que contenga opciones que abran direcciones de Internet. ¡Buena suerte, Diego!
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