マウスでピックし、ダイアログに情報を入れたいのですが・・・


juice  2006-01-19 20:43:06  No: 60373

CObjectを基本クラスとしたCDrawクラスに描画データをもたせ、
簡単な直線や、円等を描くことのできるペイントアプリケーションのようなものを作成しています。
現在、実際に色や描画するタイプ、また線種を選択し描くことはできるようになっているのですが、そこから描画した直線等をマウスで選択し、描画タイプや色の情報等をプロパティとして、ダイアログに表示させたいのですがうまくいきません。
どなたか助言していただきたいのでよろしくお願いいたします。


Toshi  2006-01-19 22:26:04  No: 60374

質問が漠然とし過ぎてて、これじゃ誰も答え様が無いと思いますよ。
どこまで出来てて、どこでつまずいてるのか、必要が有れば臭い箇所のソースなども提示する必要が有ります。
少なくとも今の段階では、
「プロパティ値はCDrawクラス(?)が持ってるんだろうから、それをダイアログクラスに渡せばいいだけじゃない」
としかいい様が有りません。

それと、質問するときは環境を書きましょう。
VCのバージョンやターゲットOSなど。


juice  2006-01-19 23:36:09  No: 60375

申し訳ございません。まだプログラミングを始めたばかりでわからないことばかりなので…。開発環境は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;
    ・
    ・
    ・
というコードで描画データを持っています。
マウスをクリックした位置(クライアント座標の中)でこれらの変数の値を取得したいということなんですが・・・
なにぶん初心者なものでどのように質問したらいいのかもわかってないもので、ご教授よろしくお願いいたします。


Toshi  2006-01-20 03:36:29  No: 60376

何が問題なのかがピンと来ないんですが、
モードレスDLG作って開いてそのインスタンスをCDrawクラスに持たせて
CDraw::Draw() 内で DLGクラス->SetData(構造体にまとめた方がいいでしょ);
をコールする様な感じでいいんじゃないでしょうか。
で、SetData()内では各コントロールに受け取ったデータを表示セットしてやるみたいな。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加