ディレクトリ
実施方法
LoadIcon関数を介してアイコンをロードし、ロードしたアイコンリソースをSendMessageを介してそのウィンドウのWM_SETICONメッセージに送信します
(注:MFCで特別にカプセル化された関数は、本質的にメッセージを送信するSetIconです)
SendMessage関数とLoadIcon関数の概要
1.関数プロトタイプ
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.パラメータの概要(詳細な使用方法については、MSDNを参照してください)
hInstance:リソースハンドル
lpIconName:アイコン名、MAKEINTRESOURCEマクロを介してアイコンIDを変換する必要があります
hWnd:ウィンドウハンドル
メッセージ:ターゲットメッセージタイプ
wParam:メッセージ情報に添付
lParam:メッセージ情報に添付
3.戻り値
HICONタイプ、新しくロードされたアイコンのハンドル、ロードが失敗した場合はNULLが返されます
LRESULTタイプ。戻り値は、送信されたメッセージに応じて、メッセージ処理の結果を指定します
サンプルコード
注:サンプルコードは登録によってウィンドウを作成しないため、VSを使用してウィンドウとアイコンリソースを自分で追加する必要があります
/*
* 图标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;
}