WIN32開発の設定ダイアログボックスの左上隅にあるアイコン

実施方法

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;
}

おすすめ

転載: www.cnblogs.com/veis/p/12676769.html