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

ERVA abraxas_dragon en yahoo.com.mx
Jue Ago 23 21:27:36 CEST 2007


Caray!!! Ya pude solucionar el problema...

Leí en otro foro que WinCE no soporta LoadIcon, por lo que se tiene que cambiar por la función LoadImage y hacer un "cast" (HICON). Ahora para los manejadores se hace uso del método GetSafeHwnd().

Espero le sirva alguién más...


El pasado 2007-08-23 15:35:49, ERVA escribió:
 
E> Hola ¿cómo están?
E> 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:
E> 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.
E> 2. En el método OnInitDialog() de la clase CDialogDlg agrego el siguiente código:
E> //-------------------------------------------
E> HICON hIcon = LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICON1));
E> NOTIFYICONDATA nid = {0};
E> nid.cbSize = sizeof(nid);
E> nid.uID    = 100;
E> nid.uFlags = NIF_ICON;
E> nid.hIcon  = hIcon;
E> Shell_NotifyIcon(NIM_ADD, &nid);
E> //-------------------------------------------
E> 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:
E> /******************************************************************/
E> -nid	{cbSize=152 hWnd=0x00000000 uID=100 ...}	_NOTIFYICONDATAW
E> 	cbSize	152	unsigned long int
E> -	hWnd	0x00000000 {unused=???}	HWND__*
E> 	  unused	CXX0030: Error: unable to evaluate expression	
E> 	  uID	        100	unsigned int
E> 	  uFlags	2	unsigned int
E> 	  uCallbackMessage	0	unsigned int
E> +	hIcon	0x00145c44 {unused=1819307365}	HICON__*
E> +	szTip	0x1e1aed4c ""	wchar_t[64]
E> /*****************************************************************/
E> 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?.
E> 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?
E> 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).
E> De antemano gracias.
E> Salu2.
E> _______________________________________________
E> Lista de correo Cconclase Cconclase en listas.conclase.net
E> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
E> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ


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