CObjectを基本クラスとしたCDrawクラスに描画データをもたせ、
簡単な直線や、円等を描くことのできるペイントアプリケーションのようなものを作成しています。
現在、実際に色や描画するタイプ、また線種を選択し描くことはできるようになっているのですが、そこから描画した直線等をマウスで選択し、描画タイプや色の情報等をプロパティとして、ダイアログに表示させたいのですがうまくいきません。
どなたか助言していただきたいのでよろしくお願いいたします。
質問が漠然とし過ぎてて、これじゃ誰も答え様が無いと思いますよ。
どこまで出来てて、どこでつまずいてるのか、必要が有れば臭い箇所のソースなども提示する必要が有ります。
少なくとも今の段階では、
「プロパティ値はCDrawクラス(?)が持ってるんだろうから、それをダイアログクラスに渡せばいいだけじゃない」
としかいい様が有りません。
それと、質問するときは環境を書きましょう。
VCのバージョンやターゲットOSなど。
申し訳ございません。まだプログラミングを始めたばかりでわからないことばかりなので…。開発環境はVisual C++ 6.0を使っております。
void CDraw::Draw(CDC *pDC)
{
CPen NewPen;
NewPen.CreatePen(m_dStyle, m_pWidth, m_dColor);
CPen* OldPen = pDC->SelectObject(&NewPen);
CRect DrawRect(m_pFrom.x,m_pFrom.y,m_pTo.x,m_pTo.y);
switch(m_dType){
case 0:
//線の描画
pDC->MoveTo(m_pFrom);
pDC->LineTo(m_pTo);
break;
case 1:
//円の描画
double rA;
rA = sqrt(pow(m_pFrom.x - m_pTo.x, 2) + pow(m_pFrom.y - m_pTo.y, 2));
pDC->SelectStockObject(NULL_BRUSH);
pDC->Ellipse(m_pFrom.x - (int)rA, m_pFrom.y - (int)rA, m_pFrom.x + (int)rA, m_pFrom.y + (int)rA);
break;
・
・
・
というコードで描画データを持っています。
マウスをクリックした位置(クライアント座標の中)でこれらの変数の値を取得したいということなんですが・・・
なにぶん初心者なものでどのように質問したらいいのかもわかってないもので、ご教授よろしくお願いいたします。
何が問題なのかがピンと来ないんですが、
モードレスDLG作って開いてそのインスタンスをCDrawクラスに持たせて
CDraw::Draw() 内で DLGクラス->SetData(構造体にまとめた方がいいでしょ);
をコールする様な感じでいいんじゃないでしょうか。
で、SetData()内では各コントロールに受け取ったデータを表示セットしてやるみたいな。
ツイート | ![]() |