Método de implementación
Cargue el ícono a través de la función LoadIcon y luego envíe el recurso del ícono cargado al mensaje WM_SETICON de su ventana a través de SendMessage
(Nota: La función especialmente encapsulada en MFC es SetIcon, que es esencialmente enviar un mensaje)
Introducción a la función SendMessage y a la función LoadIcon
1. Prototipo de función
HICON WINAPI LoadIcon(
_In_opt_ HINSTANCE hInstance,
_In_ LPCTSTR lpIconName
);
LRESULT WINAPI SendMessage(
_In_ HWND hWnd,
_In_ UINT Msg,
_In_ WPARAM wParam,
_In_ LPARAM lParam
);
2. Introducción de parámetros (consulte MSDN para un uso detallado)
hInstance: manejador de recursos
lpIconName: nombre del icono, debe convertir la ID del icono a través de la macro MAKEINTRESOURCE
hWnd: manija de ventana
Mensaje: tipo de mensaje de destino
wParam: adjunto a la información del mensaje
lParam: adjunto a la información del mensaje
3. Valor de retorno
Tipo HICON, identificador del icono recién cargado, se devuelve NULL si falla la carga
Tipo LRESULT, el valor de retorno especifica el resultado del procesamiento del mensaje, dependiendo del mensaje enviado
Código de muestra
Nota: El código de muestra no crea una ventana al registrarse, por lo que debe agregar los recursos de ventana e ícono a través de VS usted mismo
/*
* 图标ID:IDI_ICON
*
*/
#include <windows.h>
#include "resource.h"
HINSTANCE g_hInstance;
void OnInitDialog(HWND hwndDlg)
{
HICON hIcon = LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_ICON));
SendMessage(hwndDlg, WM_SETICON, FALSE, (LPARAM)hIcon);
}
BOOL WINAPI MsgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_INITDIALOG:
OnInitDialog(hwndDlg);
break;
case WM_CLOSE:
EndDialog(hwndDlg, IDCANCEL);
break;
default:
break;
}
return FALSE;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
g_hInstance = hInstance;
DialogBox(hInstance, (LPCTSTR)IDD_MAIN_DLG, NULL, MsgProc);
return 0;
}