katahiromz/Win32Templatesをダウンロードして下さい。 https://github.com/katahiromz/Win32Templates
TextFileAppよりもリッチなRichTextFileAppというのを作りました。RichTextFileAppフォルダをご覧下さい。
業務アプリにはいろんな要望があって、ツールバーを複数にしたいとかツールバーのボタンを増やしたいとかあります。業務アプリを担当するのであればそうした要望に時間内に応えなければいけません。
今回はRebarというコントロールを使って複数ツールバーに対応しました。
Win32TemplatesのResourcesフォルダをご覧下さい。
ツールバービットマップなどの使えそうな素材を集めてあります。業務アプリに対応するのであればこうした素材を集めて使いやすくすぐ使えるように整備する必要があります。
CommandUIに戻ります。
extern HWND g_hToolbars[DX_APP_NUM_TOOLBARS];
配列を使用しています。複数個に対応するのであれば、配列とかstd::vectorを使うことになります。
enableCommandをご覧下さい。
ARRAY_FOREACH(HWND hwndTB, g_hToolbars, {
SendMessage(hwndTB, TB_ENABLEBUTTON, id, bEnabled);
});
C++だと「for (HWND hwndTB : g_hToolbars) ...」などと書けますがこれはC言語なのでマクロを使用しています。ARRAY_FOREACHマクロはCommon/Utils.hにあります。
#define ARRAY_FOREACH(TYPE_var, array, block) do { \
size_t ARRAY_FOREACH_##__LINE__ = 0; \
for (; ARRAY_FOREACH_##__LINE__ < _countof(array); ++ARRAY_FOREACH_##__LINE__) { \
TYPE_var = array[ARRAY_FOREACH_##__LINE__]; \
block \
} \
} while (0)
CommandUI.cに戻ります。
showToolbarという関数がありますね。ツールバーの表示の切り替えにはこの関数を使うことにします。ツールバーが属しているRebarのバンドの表示も切り替えないといけないからです。
企業であればツールバーのデザインを外注することがあります。その場合、モックアップとかプロトタイプ、下書きを描き、どんな手順でどんなソフトウェアで作成するのか、などを詳細に計画し、無事に完成させる必要があります。そのため、どうすればツールバーをデザインできるかを把握する必要があります。
RichTextFileApp/resをご覧下さい。ツールバーのビットマップがいくつかありますね。
背景がピンクです。この部分が透明になります。
これらは「交換可能な部品」であると考えて下さい。リソースではデータの交換が非常に容易です。
大きなツールバーのアイコンは24x24ピクセルです。コードとリソースが整合するようにして下さい。 じゃないとボタンのイメージがずれます。またこのピンクの色のRGBは正確に一致する必要があります。
今日はここまでです。