ダイアログボックスのアプリケーションに、エクスプローラで表示されるアイコンと、実行時のタイトルバーにアイコンを表示させます。
ダイアログボックスの作成 - インコの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]
id ICON "file.ico"
id | リソースID |
file.ico | アイコンのファイル名 |
・Visual Studioのリソース ビュー、ResEditでの設定
「リソース(Resources)」ウインドウを右クリック - 「リソースの追加(Add Resource)...」 - 「アイコン(Icon)」 でアイコンを追加
あとは、用意したしたアイコンファイルを選択してください。
ソースコードの入力
ソースコードは下記のように入れてください。
test.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, 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
Reseditで作成した場合は、これとは異なるソースコードになります。
test.rc
#include "resource.h"
/////////////////////////////////////////////////////////////////////////////
//
// アイコン
//
IDI_TEST ICON "test.ico"
/////////////////////////////////////////////////////////////////////////////
//
// ダイアログ
//
DIALOG_BOX DIALOG 0, 0, 170, 62
CAPTION "ダイアログ"
BEGIN
END
Reseditで作成した場合は、これとは異なるソースコードになります。