[C con Clase] Agregar Tray Icon en Windows Mobile.

ERVA abraxas_dragon en yahoo.com.mx
Jue Ago 23 17:35:49 CEST 2007


Hola ¿cómo están?

Estoy tratando de hacer una aplicación (como ejemplo) en Windows Mobile y utilizando VC++ (VS 2005) donde pueda agregar un icono en la barra principal (no sé si es correcto llamarla así). Para esto hago hago lo siguiente:

1. Creo una aplicación MFC con un Dialog. Para esto, defaul, VS agrega las siguientes clases: CDialogApp y CDialogDlg, donde la primera es una clase que hereda a CWApp y por medio de una llamada muestra el componente Dialog que esta asociada a la clase CDialogDlg.

2. En el método OnInitDialog() de la clase CDialogDlg agrego el siguiente código:

//-------------------------------------------
HICON hIcon = LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICON1));

NOTIFYICONDATA nid = {0};

nid.cbSize = sizeof(nid);
nid.uID    = 100;
nid.uFlags = NIF_ICON;
nid.hIcon  = hIcon;

Shell_NotifyIcon(NIM_ADD, &nid);
//-------------------------------------------

Resultado: Cuando ejecuto la aplicación, únicamente me muestra el Dialog, pero no me muestra el icono en la pantalla principal ¿por qué? Bueno, hice un debug de la aplicación y el resultado que me de la estructura es la siguiente:

/******************************************************************/
-nid	{cbSize=152 hWnd=0x00000000 uID=100 ...}	_NOTIFYICONDATAW
	cbSize	152	unsigned long int
-	hWnd	0x00000000 {unused=???}	HWND__*
	  unused	CXX0030: Error: unable to evaluate expression	
	  uID	        100	unsigned int
	  uFlags	2	unsigned int
	  uCallbackMessage	0	unsigned int
+	hIcon	0x00145c44 {unused=1819307365}	HICON__*
+	szTip	0x1e1aed4c ""	wchar_t[64]
/*****************************************************************/

Como pueden ver el elemento hWnd (HWND) muestra en "unused" un error, me imagino que se debe por que no tiene algún elemento del tipo HWND asignado. Si es así, entonces la pregunta sería: ¿cuál manejador de ventanas le tengo que pasar? y ¿cómo?.

Para lo anterior he visto algunos ejemplos, pero donde crean una aplicación Win32 Smart Device Project y para esto desde las función MainDlgProc (donde tiene uno de los parámetros deentrada como elemento un manejador de ventanas "HWND hDlg") y para esto se entiende de donde tomar ese manejador, pero en el caso de Aplicaciones MFC ¿dónde obtengo ese manejador?

Ojalá me hayan entendido, por que no soy bueno para plantear el problema, y además me puedan sacar de mi ignorancia. En realidad para lo segundo, me estoy dando cuenta que necesito invertir un $$$ para comprarme unos libritos y "chingarle" :-P (como dicen en la madre patria).

De antemano gracias.

Salu2.


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