ダイアログボックスのアプリケーションにアイコンを表示

ダイアログボックス1

ダイアログボックスのアプリケーションに、エクスプローラで表示されるアイコンと、実行時のタイトルバーにアイコンを表示させます。

ダイアログボックスの作成 - インコのWindowsSDK で作成したソースをもとに作成します。

C言語 ソースファイル

WM_INITDIALOG

ダイアログが作成されたときに一度だけ送られてくる WM_INITDIALOGメッセージを受けたら、

1、LoadImage()で、ビットマップをロードします。
LoadImage()の2つ目の引数は、MAKEINTRESOURCE()を使って、リソースIDから文字列に変換します。

2、WM_SETICONメッセージを送る。

lResult = SendMessage(
    (HWND) hWndControl, // ウィンドウのハンドル
    (UINT) WM_SETICON,
    (WPARAM) fType,     // アイコンのタイプ
                        // ICON_BIG:大きいアイコン ICON_SMALL:小さいアイコン
    (LPARAM) hicon,     // アイコンのハンドル
);

リソースファイル

アイコン [ICON]

「Windows デスクトップ アプリケーション」を選択してプロジェクトを作成した場合は、 アイコンとリソースファイルがプロジェクトに初めから追加されております。

ソースコードを直接手入力する場合

id ICON "file.ico"

id リソースID
file.ico アイコンのファイル名

Visual Studioのリソース ビューから追加する場合

右上のウインドウから「リソース ビュー」のシートをクリック。
リソースファイルを右クリックして、メニューを開き、「リソースの追加(A)...」を選択してください。

VSC1

「リソースの追加」ダイアログが開くので、リソースの種類(T):「Icon」を選択してから、 「新規作成(N)」ボタンをクリックしてください。

VSC2

デフォルトのアイコンファイルが作成され、アイコン作成画面が出ます。

ソースコードの入力

ソースコードは下記のように入れてください。

WindowsProject1.cpp
#include <windows.h>
#include "Resource.h"

// グローバル変数:
HINSTANCE hInst;                          // 現在のインターフェイス

// このコード モジュールに含まれる関数の宣言を転送します:
BOOL CALLBACK DialogProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
          PSTR lpCmdLine, int nCmdShow )
{

    hInst = hInstance; // グローバル変数にインスタンス処理を格納します。
    DialogBox(hInstance, TEXT("DIALOG_BOX"), NULL, (DLGPROC)DialogProc);
    return 0;
}

BOOL CALLBACK DialogProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    HICON hIcon;
    switch (msg)
    {
        case WM_INITDIALOG:
            // アイコンのセット
            hIcon = (HICON)LoadImage(hInst, MAKEINTRESOURCE(IDI_TEST), IMAGE_ICON, 16, 16, 0);
            SendMessage(hWnd, WM_SETICON, ICON_SMALL, (LPARAM)hIcon);
            break;
        case WM_CLOSE:
            EndDialog(hWnd, IDOK);
            return TRUE;
    }
    return FALSE;
}
Resource.h

#define IDI_TEST 107
#ifndef IDC_STATIC
#define IDC_STATIC -1
#endif

WindowsProject1.rc
#include "Resource.h"

/////////////////////////////////////////////////////////////////////////////
//
// アイコン
//

IDI_TEST       ICON         "test.ico"

/////////////////////////////////////////////////////////////////////////////
//
// ダイアログ
//

DIALOG_BOX DIALOG 0, 0, 170, 62
CAPTION "ダイアログ"
BEGIN
END