Albumは単なるSDIウィンドウで余り手の込んだリソースは使っていません。
まず、アイコンはフリーの「本」みたいなやつを使い、ツールバービットマップもWindowsのデフォルトのものと、過去作成したものでほぼ間に合い、唯一サムネイル表示だけTBEditorで作成しました。(下手ですが...汗々;)
ダイアログは3つ。いつもコピペして使うバージョンダイアログは別とし、写真の裏書コメントを書くダイアログは(サイズ可変で最小サイズの制限を設けましたが)エディットボックス一つだけの簡素なものです。一番ごちゃごちゃしているのは「サイズ変更画像の保存」ダイアログ(注)でしょうか?
注:IDD_RESIZEですが、DLLで使うResizerとは別物で、「単一写真の回転状態を変更できるサイズ変更可能な写真画像コピーツール」です。
メニューも表示が「サムネイル表示」と「標準表示」の2モードあり、それぞれに独自のメニューアイテムがあるので結構数が増えてしまいました。また、プログラムの表示モードや、データ読み込み状態と併せてチェックが付いたり、グレイ状態だったりするのがやや目立つところかもしれません。
【Album.rc】
//-----------------------------------------
// BCCForm Ver 2.41
// An Easy Resource Editor for BCC
// Copyright (c) February 2002 by ysama
//-----------------------------------------
#include "ResAlbum.h" //(解説:ResAlbum.hは番号を振っているだけなので割愛します。)
//----------------------------------
// ダイアログ (IDD_RESIZE)
//----------------------------------
IDD_RESIZE DIALOG DISCARDABLE 0, 0, 270, 180
EXSTYLE WS_EX_DLGMODALFRAME
STYLE WS_POPUP | WS_THICKFRAME | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | DS_SETFONT | DS_CENTER
CAPTION "サイズ変更画像の保存"
FONT 9, "MS 明朝"
{
CONTROL "完了", IDOK, "BUTTON", WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_DEFPUSHBUTTON, 198, 160, 60, 16
CONTROL "キャンセル", IDCANCEL, "BUTTON", WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON, 11, 160, 60, 16
CONTROL "", IDC_TRACKBAR, "MSCTLS_TRACKBAR32", WS_CHILD | WS_VISIBLE | WS_TABSTOP | TBS_AUTOTICKS, 6, 102, 255, 24
CONTROL "現在の選択ファイル", 0, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 3, 3, 96, 12
CONTROL "", IDC_SOURCE, "EDIT", WS_CHILD | WS_BORDER | WS_VISIBLE | ES_AUTOHSCROLL | ES_READONLY | ES_LEFT, 3, 17, 262, 15, WS_EX_CLIENTEDGE
CONTROL "原寸幅", 0, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 15, 36, 45, 12
CONTROL "", IDC_WIDTH, "EDIT", WS_CHILD | WS_BORDER | WS_VISIBLE | ES_AUTOHSCROLL | ES_READONLY | ES_LEFT, 64, 34, 60, 15, WS_EX_CLIENTEDGE
CONTROL "原寸高さ", 0, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 135, 36, 45, 12
CONTROL "", IDC_HEIGHT, "EDIT", WS_CHILD | WS_BORDER | WS_VISIBLE | ES_AUTOHSCROLL | ES_READONLY | ES_LEFT, 190, 34, 60, 15, WS_EX_CLIENTEDGE
CONTROL "回転状況", 0, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 15, 58, 60, 12
CONTROL "", IDC_ROTATE, "EDIT", WS_CHILD | WS_BORDER | WS_VISIBLE | ES_AUTOHSCROLL | ES_READONLY | ES_LEFT, 64, 57, 60, 15, WS_EX_CLIENTEDGE
CONTROL "画像形式", 0, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 135, 58, 60, 12
CONTROL "", IDC_IMGTYPE, "EDIT", WS_CHILD | WS_BORDER | WS_VISIBLE | ES_AUTOHSCROLL | ES_READONLY | ES_LEFT, 190, 57, 60, 15, WS_EX_CLIENTEDGE
CONTROL "画像縮小調整割合", 0, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 3, 82, 96, 12
CONTROL "調整幅", 0, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 15, 135, 45, 12
CONTROL "", IDC_ADJW, "EDIT", WS_CHILD | WS_BORDER | WS_VISIBLE | ES_AUTOHSCROLL | ES_READONLY | ES_LEFT, 64, 133, 60, 15, WS_EX_CLIENTEDGE
CONTROL "調整高さ", 0, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 135, 135, 45, 12
CONTROL "", IDC_ADJH, "EDIT", WS_CHILD | WS_BORDER | WS_VISIBLE | ES_AUTOHSCROLL | ES_READONLY | ES_LEFT, 190, 133, 60, 15, WS_EX_CLIENTEDGE
}
//(解説:最近スライダー(トラックバー)づいており、今回も画像縮小割合はスライダーを使いました。)
//----------------------------------
// ダイアログ (IDD_EDIT)
//----------------------------------
IDD_EDIT DIALOG DISCARDABLE 0, 0, 300, 200
EXSTYLE WS_EX_DLGMODALFRAME
STYLE WS_POPUP | WS_THICKFRAME | WS_CAPTION | DS_CENTER | DS_SETFONT
CAPTION "写真の裏書編集"
FONT 10, "MS 明朝"
{
CONTROL "", IDC_EDIT, "EDIT", WS_CHILD | WS_BORDER | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL | ES_MULTILINE | ES_WANTRETURN | ES_AUTOVSCROLL| ES_LEFT, 0, 0, 0, 0, WS_EX_CLIENTEDGE
CONTROL "終了", IDOK, "BUTTON", WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_DEFPUSHBUTTON, 256, 184, 40, 14
}
//----------------------------------
// ダイアログ (IDD_VERSION)
//----------------------------------
IDD_VERSION DIALOG DISCARDABLE 0, 0, 160, 40
EXSTYLE WS_EX_DLGMODALFRAME
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_MODALFRAME | DS_3DLOOK | DS_CENTER
CAPTION "バージョン情報"
FONT 9, "Times New Roman"
{
CONTROL IDI_ICON, 0, "STATIC", SS_SUNKEN | SS_ICON | WS_CHILD | WS_VISIBLE, 12, 10, 32, 32
CONTROL "Album Version 1.0\nCopyright 2022 by Ysama", 0, "STATIC", SS_CENTER | SS_SUNKEN | WS_CHILD | WS_VISIBLE, 42, 8, 80, 24
CONTROL "OK", IDOK, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 130, 14, 20, 12
}
//-------------------------
// メニュー(IDM_MAIN)
//-------------------------
IDM_MAIN MENU DISCARDABLE
{
POPUP "ファイル(&F)"
{
MENUITEM "アルバムの作成、編集(&N)", IDM_NEW
MENUITEM "アルバムを開く(&O)", IDM_OPEN
MENUITEM "アルバムの保存(&S)", IDM_SAVE, GRAYED
MENUITEM "名前をつけて保存(&A)", IDM_SAVEAS, GRAYED
MENUITEM SEPARATOR
MENUITEM "終了(&X)", IDM_EXIT
}
POPUP "編集(&E)"
{
MENUITEM "写真の追加(&A)", IDM_ADD
MENUITEM "写真の削除(&D)", IDM_DEL, GRAYED
}
POPUP "表示(&V)"
{
POPUP "サムネイル表示", GRAYED
{
MENUITEM "サムネイル大(&L)", IDM_LARGE
MENUITEM "サムネイル小(&S)", IDM_SMALL
MENUITEM SEPARATOR
MENUITEM "標準表示(&N)", IDM_NORM
}
POPUP "標準表示", GRAYED
{
MENUITEM "原寸表示(&O)", IDM_ORIG
MENUITEM "サイズ調整表示(&A)", IDM_ADJT
POPUP "回転表示"
{
MENUITEM "0度回転表示", IDM_0, CHECKED
MENUITEM "90度回転表示", IDM_90
MENUITEM "180度回転表示", IDM_180
MENUITEM "270度回転表示", IDM_270
}
MENUITEM SEPARATOR
MENUITEM "サイズ変更画像の保存(&R)", IDM_RESIZE
MENUITEM SEPARATOR
MENUITEM "写真の裏書編集(&E)", IDM_EDIT
MENUITEM "写真の詳細情報(&D)", IDM_DETAIL
MENUITEM SEPARATOR
MENUITEM "サムネイル表示(&T)", IDM_THUMNAIL
}
MENUITEM "前へ(&P)", IDM_PREV, GRAYED
MENUITEM "次へ(&N)", IDM_NEXT, GRAYED
}
POPUP "ツール(&T)"
{
MENUITEM "アルバム写真をフォールダーに纏める(&G)", IDM_GATHER
MENUITEM SEPARATOR
MENUITEM "Resizer(&R)", IDM_RESIZER
}
POPUP "ヘルプ(&H)"
{
MENUITEM "Albumについて(&H)", IDM_HELP
MENUITEM "バージョン情報(&V)", IDM_VERSION
}
}
//(解説:CHECKEDとかGRAYEDとか指定されているところに注意です。これが初期化になります。)
//--------------------------
// イメージ(IDI_TOOLBAR)
//--------------------------
IDI_ICON ICON DISCARDABLE "C:\Users\(パス)\Album\Icon.ico"
//--------------------------
// イメージ(IDI_TOOLBAR)
//--------------------------
IDI_TOOLBAR BITMAP DISCARDABLE "C:\Users\(パス)\Album\ToolBar.bmp"
まぁ、リソースエディターが無いのでBCCFormをWin32APIとSDKで力づくで作ったのがWin32 プログラミングの始まりでしたが、慣れてくると過去のリソースのコピペばっかりして、余り独創的なレイアウトを作らなくなりますね。反省です。
