[C con Clase] WINAPIS

Steven Davidson steven en conclase.net
Mie Jun 13 23:03:32 CEST 2007


Hola Alfredo,

El pasado 2007-06-13 04:55:13, Alfredo Ruiz Pérez escribió:

ARP> Buenas, lo que pasa es que quiero hacer una aplicación que se valla al
ARP> System Tray y ahi cree un Balloon Tip (Asi se llama no?).
ARP> Si me pueden mandar un código ejemplo, por favor.

Veamos. Para el tema de la Bandeja del Sistema - oficialmente el área de notificación/estado de la barra de tareas - debes invocar la función 'Shell_NotifyIcon()'. El prototipo es:

BOOL Shell_NotifyIcon( DWORD dwMensaje, PNOTIFYICONDATA lpDatos );

Para lo que quieres, invoca la función de esta manera:

NOTIFYICONDATA nid;
...
Shell_NotifyIcon( NIM_ADD, nid );

Como puedes ver, tenemos que rellenar la información en la estructura. Por ejemplo,

CONST TCHAR szTitulo[]  = TEXT( "¡Escuchadme!" );
CONST TCHAR szMensaje[] = TEXT( "Soy un Globo ¡Temedme!" );

HINSTANCE hInst;
HWND hPariente;
...
NOTIFYICONDATA nid = {0};

nid.cbSize      = sizeof nid;
nid.hWnd        = hPariente;
nid.uID         = IDI_ICONO;
nid.uFlags      = NIF_ICON | NIF_INFO;  // Icono y "tooltip" como un globo
nid.hIcon       = CargarIcono();

// Estos campos sirven para iniciar el globo
nid.szInfo      = szMensaje;
//nid.uTimeout  = 0;  // 10 segundos es el tiempo mínimo para permanezca
nid.szInfoTitle = szTitulo;
nid.dwInfoFlags = NIIF_INFO;

Existen más opciones y otras cosas que quizá te sirvan. Puedes consultar esta información yendo a MSDN: http://msdn2.microsoft.com/en-us/library/ms647738.aspx

También ten presente que debes incluir el fichero <shellapi.h> y enlazar la biblioteca "shell32". En cuanto al uso de algunos miembros de 'NOTIFYICONDATA' y ciertos comportamientos, necesitarás indicar la versión 5 de IE. Esto es,

#define _WIN32_IE 0x0500
#include <windows.h>
#include <shellapi.h>
...


Espero que esto te ayude.

Steven


Más información sobre la lista de distribución Cconclase