問問用vc的人,我在vs2017里用C++,寫了一個簡單的單檔案的工程,里面負責畫線,畫弧形。畫線的功能,我定義一個類,里面定義了左鍵單擊,滑鼠移動的虛擬函式,在實作的地方我多載了這個類。當我在View下,滑鼠單擊按下,為什么線畫不出來?代碼都沒問題。
選擇工具條的直線,對應的代碼:
//畫直線
void CmyDrawView::OnShapeLine()
{
if (NULL != pCTool)
{
delete pCTool;
pCTool = NULL;
}
m_Rmenu = 4;
pCTool = new CLine();
pCTool->SetPenColor(m_pencolor);
pCTool->SetPenStyle(m_penstyle);
pCTool->SetPenWidth(m_penwidth);
}
滑鼠單擊,滑鼠左鍵按下代碼:
void CmyDrawView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加訊息處理程式代碼和/或呼叫默認值
if (pCTool != NULL)
{
::CClientDC dc(this);
pCTool->OnLButtonDown(point, datemanage, dc);
}
// CView::OnLButtonDown(nFlags, point);
}
滑鼠松開代碼
void CmyDrawView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: 在此添加訊息處理程式代碼和/或呼叫默認值
if (pCTool != NULL)
{
::CClientDC dc(this);
pCTool->OnLButtonUp(point, datemanage, dc);
}
CView::OnLButtonUp(nFlags, point);
}
拖動代碼
void CmyDrawView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加訊息處理程式代碼和/或呼叫默認值
if (pCTool != NULL)
{
CClientDC dc(this);
pCTool->OnMouseMove(point, dc);
}
CView::OnMouseMove(nFlags, point);
}
不知道什么原因?
uj5u.com熱心網友回復:
怎么沒有 void CMyView::OnDraw(CDC* pDC)void CMyView::OnDraw(CDC* pDC)
{
pDC->SelectStockObject(BLACK_PEN);
BOOL first = TRUE;
POSITION pos = m_points.GetHeadPosition();
if(!pos)
{
return;
}
while(pos != NULL)
{
CMyPoint* p = (CMyPoint*) m_points.GetNext(pos);
if(first) { pDC->MoveTo(p->m_location); first = FALSE; }
pDC->LineTo(p->m_location);
};
}
uj5u.com熱心網友回復:
CObList m_points;在 h 中
uj5u.com熱心網友回復:
在父類里已經多載了OnDraw()函式uj5u.com熱心網友回復:
設定斷點或加TRACE,除錯看看 點擊,移動時是否按你的思路走的, 引數是否對?uj5u.com熱心網友回復:
斷點設定,我都OK的,不知道咋回事?
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/230036.html
標籤:圖形處理/算法
上一篇:udp只能收發帶字符陣列的結構體嗎?帶字符指標的結構體可以收發嗎??
下一篇:設定CDialog寬150mm、高100mm,并包含一個CTabCtrl控制元件,該控制元件位置及大小也是用毫米為單位控制,怎么在不同的解析度螢屏下實作?
