[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