2013-01-12 73 views
0

我需要幫助製作某個MFC程序。我需要製作一個程序,用以下方式繪製一條線:用戶通過左擊選擇起始點,最後一個點通過左鍵單擊第二次,之後點連接並繪製線。我已經成功地得到了第一個座標與此:MFC畫線

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); 
} 

的問題是,我不知道如何讓第二個與第二左鍵點擊的座標。我已經設法通過使用雙擊左鍵單擊功能(並將pDoc-> b_pos = point;在其中),但這不是我應該做的。 (我將第一個座標放入MoveTo,第二個座標放入LineTo)。我很感激,如果有人能幫助我(我懷疑這可能是一個不同的,更簡單的方法)。 在此先感謝。

+0

線通常通過啓動按鈕點下來,然後結束點和扣式線,那麼無效,然後在OnDraw中或OnPaint中繪製,從這兩點中劃出界限。你確定要連續按下兩個按鈕來做到這一點嗎? –

回答

1

如果你想從同一個事件得到兩個結果,你必須保持一個狀態變量來跟蹤它是什麼點擊。

在換句話說,你CsemDoc應該有一個a_posb_pos成員,CsemView一個bool is_b,初始化爲假。

OnLButtonDow方法應該:是這樣的

if(!is_b) 
{ set the a_pos; is_b = true; } 
else 
{ set the b_pos; is_b = false; invalidate the draw; } 
+0

謝謝,那正是我需要的,簡單而高效! – user1973086

0

您可以將每個LButtonDown上的鼠標座標推到一個矢量上並畫出P [i]和P [i + 1]之間的連線,並且在RButtonDown之後,您可以停止記錄點,之後不再額外的線將被繪製。有一個像任何繪圖工具箱一樣的單獨按鈕來開始繪製線條,以便之後的任何LButtonDown事件都將被推送到矢量。

希望這會有所幫助!