1

特定の MFC プログラムの作成について助けが必要です。次の方法で線を描画するプログラムを作成する必要があります。ユーザーが左クリックで始点を選択し、2 回目の左クリックで終点を選択すると、点が接続されて線が描画されます。これで最初の座標を取得できました:

void CsemView::OnLButtonDown(UINT nFlags, CPoint point)
{
    CsemDoc* pDoc= GetDocument();
    // TODO: Add your message handler code here and/or call default 
    pDoc->a_pos=point;
    Invalidate();
    CView::OnLButtonDown(nFlags, point);
}

問題は、2番目の左クリックで2番目の座標を取得する方法がわからないことです。左ダブルクリック機能を使用して(そして pDoc->b_pos=point; を入れることで)なんとかそれを行うことができましたが、それは私が本来すべきことではありませんでした。(最初の座標を MoveTo に、2 番目の座標を LineTo に入れていました)。誰かが私を助けてくれれば幸いです(これを行う別の簡単な方法があるのではないかと思います)。前もって感謝します。

4

2 に答える 2

1

同じイベントから 2 つの結果を取得したい場合は、状態変数を保持して、クリックした回数を追跡する必要があります。

つまり、andメンバーと、false として初期化された がCsemDoc必要です。a_posb_posCsemViewbool is_b

メソッドは次のOnLButtonDowようにする必要があります。

if(!is_b)
{ set the a_pos; is_b = true; }
else
{ set the b_pos; is_b = false; invalidate the draw; }
于 2013-01-12T21:14:56.063 に答える
0

各 LButtonDown のマウス座標をベクトルにプッシュし、P[i] と P[i+1] の間に線を引くことができます。RButtonDown では、その後ポイントの記録を停止でき、余分な線はなくなります。描かれた。他の描画ツールボックスと同様に、線の描画を開始する別のボタンを用意して、その後の LButtonDown イベントがベクターにプッシュされるようにします。

お役に立てれば!

于 2013-01-12T21:14:47.767 に答える