ダイアログボックスのアプリケーションに、エクスプローラで表示されるアイコンと、実行時のタイトルバーにアイコンを表示させます。
ダイアログボックスの作成 - インコの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)...」を選択してください。
「リソースの追加」ダイアログが開くので、リソースの種類(T):「Icon」を選択してから、 「新規作成(N)」ボタンをクリックしてください。
デフォルトのアイコンファイルが作成され、アイコン作成画面が出ます。
ソースコードの入力
ソースコードは下記のように入れてください。
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