GraphMakerのメインウィンドウはダイアログにしましたので、BCCFormで作成します。
今回、いつもと異なるのはカスタムコントロールの"PICTUREBOX"(注)を使うことです。どう違うのかというと、カスタムコントロールというのは「まだ存在していないコントロールである」ということで、即ち「BCCFormでは作れない」ということを意味します。
注:このコントロールをラップする、BCCSkelton | ECCSkeltonの「CPICBOXクラス」で定めるウィンドウクラス名です。
「???ではどうするの?」と思われるでしょうが、適当にラベル(Static Control)でも身代わりに立ててセットします。ついでにクライアントエッジなどを効かしておきましょう。
以下はプロトタイプのメインダイアログ(IDD_MAIN)で、式の選択を行うコンボボックス、入力用のエディットボックス、それらの説明表示用のラベルと、グラフ表示や終了用のボタンを貼り付けます。
【GraphMaker.rcのプロトタイプ】
//-----------------------------------------
// BCCForm Ver 2.41
// An Easy Resource Editor for BCC
// Copyright (c) February 2002 by ysama
//-----------------------------------------
#include "ResGraphMaker.h"
//----------------------------------
// ダイアログ (IDD_MAIN)
//----------------------------------
IDD_MAIN DIALOG DISCARDABLE 0, 0, 363, 303
EXSTYLE WS_EX_DLGMODALFRAME
STYLE WS_POPUP | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | DS_SETFONT | DS_CENTER
CAPTION "GraphMaker"
FONT 8, "MS 明朝"
{
CONTROL "", IDC_LABEL, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 6, 51, 351, 246, WS_EX_CLIENTEDGE
CONTROL "", IDC_COMBOBOX, "COMBOBOX", WS_CHILD | WS_VISIBLE | WS_TABSTOP | CBS_SORT | CBS_DROPDOWNLIST | WS_VSCROLL, 54, 9, 231, 12
CONTROL "式の種類", IDC_KIND, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 9, 12, 39, 12
CONTROL "項aの値", IDC_A, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY | SS_RIGHT, 9, 33, 39, 12
CONTROL "", IDC_EDITA, "EDIT", WS_CHILD | WS_BORDER | WS_VISIBLE | WS_TABSTOP | ES_AUTOHSCROLL | ES_CENTER, 54, 30, 21, 12, WS_EX_CLIENTEDGE
CONTROL "項bの値", IDC_B, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY | SS_RIGHT, 78, 33, 39, 12
CONTROL "", IDC_EDITB, "EDIT", WS_CHILD | WS_BORDER | WS_VISIBLE | WS_TABSTOP | ES_AUTOHSCROLL | ES_CENTER, 123, 30, 21, 12, WS_EX_CLIENTEDGE
CONTROL "項cの値", IDC_C, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY | SS_RIGHT, 150, 33, 39, 12
CONTROL "", IDC_EDITC, "EDIT", WS_CHILD | WS_BORDER | WS_VISIBLE | WS_TABSTOP | ES_AUTOHSCROLL | ES_CENTER, 195, 30, 21, 12, WS_EX_CLIENTEDGE
CONTROL "項dの値", IDC_D, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY | SS_RIGHT, 219, 33, 39, 12
CONTROL "", IDC_EDITD, "EDIT", WS_CHILD | WS_BORDER | WS_VISIBLE | WS_TABSTOP | ES_AUTOHSCROLL | ES_CENTER, 264, 30, 21, 12, WS_EX_CLIENTEDGE
CONTROL "グラフ表示", IDC_SHOWGRAPH, "BUTTON", WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 294, 7, 60, 15
CONTROL "終了", IDOK, "BUTTON", WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 294, 30, 60, 15
}
//--------------------------
// イメージ(IDI_ICO)
//--------------------------
IDI_ICO ICON DISCARDABLE "GraphMaker.ico"
後で↑の赤字部分を IDC_GRAPH, "PICTUREBOX"に変更し大体次のような見栄えになりました。(ここではすでにPICTUREBOXにして、初期設定で背景を黒で塗りつぶしています。)
BCCFormを使う際の「私のコツ」なんですが、(マウスを使ったレイアウトは正確性に限界があり、結局最後は「あーでもない、こーでもない」と何度かコンパイルしてソースコードでサイズ、位置の1、2ドットの微調整をおこなうことになるので)あまり最初は細部にこだわらず、必要なコントロールを配し、並べるコントロールは右クリックのポップアップメニューを使って「コントロールの配置-複数コントロールの配置」でレイアウトを定め、(大雑把でも)「最終形」を作ることです。(注)
注:特にカスタムコントロールの"PICTUREBOX"を使っているので、"LABEL"から書き換えた後ではBCCFormでの編集は不可能になることにご注意ください。(↑で書いた通り、「BCCFormでは作れない」。)
因みにBCC2ECCを使ってUnicode対応とした最終形は以下の通り。エディットコントロールの幅を4ドット拡げ、それに合わせてコンボボックスの幅も調整したり、細部は最終的にコードを修正して仕上げを行います。
【GraphMaker.rcの最終形】
//-----------------------------------------
// BCCForm Ver 2.41
// An Easy Resource Editor for BCC
// Copyright (c) February 2002 by ysama
//-----------------------------------------
#include "ResGraphMaker.h"
//----------------------------------
// ダイアログ (IDD_MAIN)
//----------------------------------
IDD_MAIN DIALOG DISCARDABLE 0, 0, 363, 303
EXSTYLE WS_EX_DLGMODALFRAME
STYLE WS_POPUP | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | DS_SETFONT | DS_CENTER
CAPTION L"GraphMaker"
FONT 8, L"MS 明朝"
{
CONTROL L"", IDC_COMBOBOX, L"COMBOBOX", WS_CHILD | WS_VISIBLE | WS_TABSTOP | CBS_DROPDOWNLIST | WS_VSCROLL, 54, 9, 236, 72
CONTROL L"", IDC_EDITA, L"EDIT", WS_CHILD | WS_BORDER | WS_VISIBLE | WS_TABSTOP | ES_AUTOHSCROLL | ES_CENTER, 54, 30, 26, 12, WS_EX_CLIENTEDGE
CONTROL L"", IDC_EDITB, L"EDIT", WS_CHILD | WS_BORDER | WS_VISIBLE | WS_TABSTOP | ES_AUTOHSCROLL | ES_CENTER, 123, 30, 26, 12, WS_EX_CLIENTEDGE
CONTROL L"", IDC_EDITC, L"EDIT", WS_CHILD | WS_BORDER | WS_VISIBLE | WS_TABSTOP | ES_AUTOHSCROLL | ES_CENTER, 195, 30, 26, 12, WS_EX_CLIENTEDGE
CONTROL L"", IDC_EDITD, L"EDIT", WS_CHILD | WS_BORDER | WS_VISIBLE | WS_TABSTOP | ES_AUTOHSCROLL | ES_CENTER, 264, 30, 26, 12, WS_EX_CLIENTEDGE
CONTROL L"グラフ表示", IDC_SHOWGRAPH, L"BUTTON", WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON, 297, 7, 60, 15
CONTROL L"終了", IDOK, L"BUTTON", WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_DEFPUSHBUTTON, 297, 30, 60, 15
CONTROL L"", IDC_GRAPH, L"PICTUREBOX", WS_CHILD | WS_VISIBLE, 6, 51, 351, 246, WS_EX_CLIENTEDGE
CONTROL L"式の種類", 0, L"STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 9, 12, 39, 12
CONTROL L"項aの値", 0, L"STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY | SS_RIGHT, 9, 33, 39, 12
CONTROL L"項bの値", 0, L"STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY | SS_RIGHT, 78, 33, 39, 12
CONTROL L"項cの値", 0, L"STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY | SS_RIGHT, 150, 33, 39, 12
CONTROL L"項dの値", 0, L"STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY | SS_RIGHT, 219, 33, 39, 12
} //ラベルは使わないので皆値を0にし、コントロールの順位は最終的に手作業で変更しています。
//----------------------
// ポップアップメニュー(後で右クリックのポップアップメニューが欲しくなり手作業で追加しました。)
//----------------------
IDM_POPUP MENU DISCARDABLE
{
POPUP L"ポップアップ"
{
MENUITEM L"消去", IDC_CLEAR
MENUITEM SEPARATOR
MENUITEM L"背景色", IDC_BACKCOL
MENUITEM L"前景色", IDC_FRONTCOL
}
}
//--------------------------
// イメージ(IDI_ICO)
//--------------------------
IDI_ICO ICON DISCARDABLE "GraphMaker.ico"

このようにして、BCCFormでGraphMaker.rcとResGraphMaker.hの二つのファイルを作製したら、次はSkeltonWizardを使ってスケルトンプログラムを作成します。
