自分が作成しているプログラムはウインドウに円を描画し
その円をメニューから開くダイアログのラジオボタンとエディットボックスで背景色と円の外線と内部の色を変えるようにするプログラムです
ラジオボタンで変更したい背景の色を選び、エディットボックスに円の外線と内部のRGB値を入力すると
ウインドウに表示された背景色と円の外線と内部の色を変更できるようにしたいです。
円の描画と背景の設定はc----Viewクラスのc----View関数に
C----View::C----View()
: b_colR(0)
, b_colG(0)
, b_colB(0)
, in_colR(0)
, in_colG(0)
, in_colB(0)
, out_colR(0)
, out_colG(0)
, out_colB(0)
{
// TODO: 構築コードをここに追加します。
//背景色のRGB値の変数
b_colR = 255;
b_colG = 255;
b_colB = 255;
//円外線色のRGB値の変数
out_colR = 0;
out_colG = 0;
out_colB = 0;
//円内部色のRGB値の変数
in_colR = 255;
in_colG = 255;
in_colB = 255;
}
次にOnDraw関数で
void C----View::OnDraw(CDC* pDC)
{
CrssakuhinDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: この場所にネイティブ データ用の描画コードを追加します。
//変数の定義
int x, y; //座標値を保存するための変数
int point_pos_x = 225; //円心のx座標の変数
int point_pos_y = 225; //円心のy座標の変数
//ウィンドウの背景色を設定
CRect myRect;
GetClientRect(myRect);//ウィンドウの枠を取り込む
pDC->FillSolidRect(myRect, RGB(b_colR,b_colG,b_colB));//背景色を設定する
//ペン型の変数を定義
CPen outsidePen;
CPen* pOldPen; //古いペンの格納先
//ブラシ型の変数を定義
CBrush insideBrush;
CBrush* pOldBrush; //古いブラシの格納先
//ペンを作成
outsidePen.CreatePen(PS_SOLID, 4, RGB(out_colR, out_colG, out_colB));
//ブラシを作成
insideBrush.CreateSolidBrush(RGB(in_colR, in_colG, in_colB));
//ペンとブラシを選び、円を描画
pOldPen = pDC->SelectObject(&outsidePen);
pOldBrush = pDC->SelectObject(&insideBrush);
x = point_pos_x;
y = point_pos_y;
pDC->Ellipse(x - 40, y - 40, x + 40, y + 40);
pDC->SelectObject(pOldPen);//ペンを元に戻す
outsidePen.DeleteObject();
pDC->SelectObject(pOldBrush);//ブラシを元に戻す
insideBrush.DeleteObject();
}
その値をもとに先ほど作成した変数と同じRGBの値ペンとブラシを作成し、ウインドウ内に描画
背景はRGB値を先ほど作成した変数と同じ値にします。
次にダイアログのクラスを作成し、そのクラスにスタティックボックスに入力した値を格納する
out_col変数とin_col変数を作成します。
そして、c----Viewクラスにダイアログの関数を作成してその関数に
void C----View::OnOpt----()
{
// TODO: ここにコマンド ハンドラ コードを追加します。
//ラジオボタン
if(dlgAnime.DoModal() == IDOK){ //OKボタンが押された時
switch(dlgAnime.b_col){ //線の色のラジオボタンの値
case 0://白
b_colR = 0;
b_colG = 0;
b_colB = 0;
break;
case 1://赤
b_colR = 255;
b_colG = 0;
b_colB = 0;
break;
case 2://緑
b_colR = 0;
b_colG = 255;
b_colB = 0;
break;
case 3://青
b_colR = 0;
b_colG = 255;
b_colB = 0;
break;
}
//エディットボックス
//円の外線色
out_colR = dlg----.out_colR;
out_colG = dlg----.out_colG;
out_colB = dlg----.out_colB;
//円の内部色
in_colR = dlg----.in_colR;
in_colG = dlg----.in_colG;
in_colB = dlg----.in_colB;
}
}
この状態でコンパイルすると正常にコンパイルできるのですが
実際にメニューからダイアログを開きラジオボタンを選択し、エディットボックスの値を変えても
ウインドウ内の描画された円の外線と内部の色と背景色が変わりません。
変えるにははどうしたらいいのでしょうか。