要求點擊選單上的繪制選項后使用滑鼠繪制矩形
我想的是先等待滑鼠給出起點和終點之后畫圖,但是使用死回圈控制的時候繪圖框會一直無回應
要怎么解決呢
//獲取滑鼠起點
void CtxxView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加訊息處理程式代碼和/或呼叫默認值
this->SetCapture();//捕捉滑鼠
StartPoint = point;
EndPoint = point;
LButtonDown = true;
CView::OnLButtonDown(nFlags, point);
}
//獲取滑鼠終點
void CtxxView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: 在此添加訊息處理程式代碼和/或呼叫默認值
ReleaseCapture();//釋放滑鼠
EndPoint = point;
LButtonUp = true;
CView::OnLButtonUp(nFlags, point);
}
void CtxxView::OnDrawRetectangle()
{
// TODO: 在此添加命令處理程式代碼
LButtonDown = LButtonUp = false;
while (1)
{
if (LButtonDown == true && LButtonUp == true)
break;
}
CDC* pDC = this->GetDC();
DDALine(pDC, StartPoint.x, StartPoint.y, EndPoint.x, StartPoint.y, RGB(255, 0, 0));
DDALine(pDC, EndPoint.x, StartPoint.y, EndPoint.x, EndPoint.y, RGB(255, 0, 0));
DDALine(pDC, EndPoint.x, EndPoint.y, StartPoint.x, EndPoint.y, RGB(255, 0, 0));
DDALine(pDC, StartPoint.x, EndPoint.y, StartPoint.x, StartPoint.y, RGB(255, 0, 0));
}
uj5u.com熱心網友回復:
OnDrawRetectangle里應該用一個成員變數記下點擊了繪制選項即可,而不是寫死回圈。OnLButtonDown,OnLButtonUp里分別記錄下起點和終點,然后在OnLButtonUp中來繪制矩形即可。
簡單點可以這么嘗試修改:
//獲取滑鼠起點
void CtxxView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加訊息處理程式代碼和/或呼叫默認值
this->SetCapture();//捕捉滑鼠
StartPoint = point;
EndPoint = point;
LButtonDown = true;
CView::OnLButtonDown(nFlags, point);
}
//獲取滑鼠終點
void CtxxView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: 在此添加訊息處理程式代碼和/或呼叫默認值
ReleaseCapture();//釋放滑鼠
EndPoint = point;
LButtonUp = true;
CView::OnLButtonUp(nFlags, point);
if (m_action == ActionDrawRect) {
//繪制矩形
CDC* pDC = this->GetDC();
DDALine(pDC, StartPoint.x, StartPoint.y, EndPoint.x, StartPoint.y, RGB(255, 0, 0));
DDALine(pDC, EndPoint.x, StartPoint.y, EndPoint.x, EndPoint.y, RGB(255, 0, 0));
DDALine(pDC, EndPoint.x, EndPoint.y, StartPoint.x, EndPoint.y, RGB(255, 0, 0));
DDALine(pDC, StartPoint.x, EndPoint.y, StartPoint.x, StartPoint.y, RGB(255, 0, 0));
}
}
void CtxxView::OnDrawRetectangle()
{
m_action = ActionDrawRect; //假如定義了選單選項的列舉值ActionDrawRect,用m_action來記錄該進行何種行為。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/200392.html
標籤:基礎類
