A veces es interesante personalizar tu aplicación y más si es un videojuego. Una manera de lograr esto es cambiar el icono de la ventana de tu aplicación.
Bien, pues algo "sencillito" como cambiar el icono de una ventana en Windows utilizando su API se puede convertir en algo infernal si una guía de como hacerlo.
Después de googlear bastante he llegado a la conclusión de que la mejor forma es mandar un mensaje a la ventana pidiendole un cambio de icono (WM_SETICON):
mInstance = GetModuleHandle(NULL);
HANDLE icon_small = LoadImage(mInstance, "C:\\crosshair.ico", IMAGE_ICON, 16, 16, LR_LOADFROMFILE);
HANDLE icon_big = LoadImage(mInstance, "C:\\crosshair32.ico", IMAGE_ICON, 32, 32, LR_LOADFROMFILE);
Los dos tamaños son para el icono que aparece arriba a la izquierda de la ventana y el grande es para la barra de tareas.
Una vez hecho esto y después de crear la ventana:
// Create The Window
mWnd = CreateWindowEx( lExStyle,
lProperties.macApplicationName.c_str(), // Class Name
lProperties.macApplicationName.c_str(), // Window Title
lStyle | // Defined Window Style
WS_CLIPSIBLINGS | // Required Window Style
WS_CLIPCHILDREN, // Required Window Style
0, 0, // Window Position
lWindowRect.right-lWindowRect.left, // Calculate Window Width
lWindowRect.bottom-lWindowRect.top, // Calculate Window Height
NULL, // No Parent Window
NULL, // No Menu
mInstance, // Instance
NULL);
Tenemos que enviar el mensaje de cambio de icono:
SendMessage(mWnd, (UINT)WM_SETICON, ICON_SMALL, (LPARAM)icon_small);
SendMessage(mWnd, (UINT)WM_SETICON, ICON_BIG, (LPARAM)icon_big);
Con esto ya tendríamos personalizado el icono ;-)
Bien, pues algo "sencillito" como cambiar el icono de una ventana en Windows utilizando su API se puede convertir en algo infernal si una guía de como hacerlo.
Después de googlear bastante he llegado a la conclusión de que la mejor forma es mandar un mensaje a la ventana pidiendole un cambio de icono (WM_SETICON):
mInstance = GetModuleHandle(NULL);
HANDLE icon_small = LoadImage(mInstance, "C:\\crosshair.ico", IMAGE_ICON, 16, 16, LR_LOADFROMFILE);
HANDLE icon_big = LoadImage(mInstance, "C:\\crosshair32.ico", IMAGE_ICON, 32, 32, LR_LOADFROMFILE);
Los dos tamaños son para el icono que aparece arriba a la izquierda de la ventana y el grande es para la barra de tareas.
Una vez hecho esto y después de crear la ventana:
// Create The Window
mWnd = CreateWindowEx( lExStyle,
lProperties.macApplicationName.c_str(), // Class Name
lProperties.macApplicationName.c_str(), // Window Title
lStyle | // Defined Window Style
WS_CLIPSIBLINGS | // Required Window Style
WS_CLIPCHILDREN, // Required Window Style
0, 0, // Window Position
lWindowRect.right-lWindowRect.left, // Calculate Window Width
lWindowRect.bottom-lWindowRect.top, // Calculate Window Height
NULL, // No Parent Window
NULL, // No Menu
mInstance, // Instance
NULL);
Tenemos que enviar el mensaje de cambio de icono:
SendMessage(mWnd, (UINT)WM_SETICON, ICON_SMALL, (LPARAM)icon_small);
SendMessage(mWnd, (UINT)WM_SETICON, ICON_BIG, (LPARAM)icon_big);
Con esto ya tendríamos personalizado el icono ;-)
No hay comentarios:
Publicar un comentario