为什么我在FormView里画的图拖动窗口图形就没有了?????如果在OnPaint()里话就不能响应消息了~~~!!!!!!!
void CTestView3::OnDrawcurve() //一个响应按钮的画图函数
{
RECT rect;
GetDlgItem(IDC_BITMAP)->GetClientRect(&rect);
// TODO: Add your message handler code here
CDC* pDC =GetDlgItem(IDC_BITMAP)->GetDC();
DrawCoordinate(pDC);//画坐标轴
pDC->SetTextColor(RGB(58,110,165));
pDC->TextOut(10, 0,c_Max);
pDC->TextOut(360, 215,m_Max);
for(i=0; i<m_ControlPoints.GetSize(); i++)
DrawsCale(m_ControlPoints[i], RGB(58,110,165),nItem+i, pDC);//画刻度
// 创建画笔对象
CPen* pPen = new CPen;
// *色画笔
pPen->CreatePen(PS_SOLID,1,RGB(58,110,165));//兰色
// 选中当前*色画笔,并保存以前的画笔
CGdiObject* pOldPen = pDC->SelectObject(pPen);
Drawcurve(pDC->m_hDC);
ReleaseDC(pDC);
}
void CTestView3::OnDrawcurve() //一个响应按钮的画图函数
{
RECT rect;
GetDlgItem(IDC_BITMAP)->GetClientRect(&rect);
// TODO: Add your message handler code here
CDC* pDC =GetDlgItem(IDC_BITMAP)->GetDC();
DrawCoordinate(pDC);//画坐标轴
pDC->SetTextColor(RGB(58,110,165));
pDC->TextOut(10, 0,c_Max);
pDC->TextOut(360, 215,m_Max);
for(i=0; i<m_ControlPoints.GetSize(); i++)
DrawsCale(m_ControlPoints[i], RGB(58,110,165),nItem+i, pDC);//画刻度
// 创建画笔对象
CPen* pPen = new CPen;
// *色画笔
pPen->CreatePen(PS_SOLID,1,RGB(58,110,165));//兰色
// 选中当前*色画笔,并保存以前的画笔
CGdiObject* pOldPen = pDC->SelectObject(pPen);
Drawcurve(pDC->m_hDC);
ReleaseDC(pDC);
}
怎么写????????
首先在你的View里面加一个成员变量,比如:BOOL m_DrawFlag;
然后:
void CTestView3::OnDrawcurve() //一个响应按钮的画图函数
{
m_DrawFlag = TREU;
}然后在OnDraw()里面画曲线,具体是:
void CTestView3::OnDraw(CDC *pDC)
{
if(m_DrawFlag)
{
RECT rect;
GetDlgItem(IDC_BITMAP)->GetClientRect(&rect);
// TODO: Add your message handler code here
CDC* pDC1 =GetDlgItem(IDC_BITMAP)->GetDC();
DrawCoordinate(pDC1);//画坐标轴
pDC1->SetTextColor(RGB(58,110,165));
pDC1->TextOut(10, 0,c_Max);
pDC1->TextOut(360, 215,m_Max);
for(i=0; i<m_ControlPoints.GetSize(); i++)
DrawsCale(m_ControlPoints[i], RGB(58,110,165),nItem+i, pDC1);//画刻度
// 创建画笔对象
CPen* pPen = new CPen;
// *色画笔
pPen->CreatePen(PS_SOLID,1,RGB(58,110,165));//兰色
// 选中当前*色画笔,并保存以前的画笔
CGdiObject* pOldPen = pDC1->SelectObject(pPen);
Drawcurve(pDC1->m_hDC);
ReleaseDC(pDC1); }
}
按你的方法在OnDraw()里画,点按钮没有画啊~~~~!!!!!
我是了一下在OnPaint()里画,反应很慢~~~!!!!!!!!
要拖动窗口才会画~~~!!!!!!也就是如果在OnPaint()里画的话,点按钮根本没有响应WM_PAINT的消息~~!!!!
按你的方法在OnDraw()里画,点按钮没有画啊~~~~!!!!!
我是了一下在OnPaint()里画,反应很慢~~~!!!!!!!!
要拖动窗口才会画~~~!!!!!!也就是如果在OnPaint()里画的话,点按钮根本没有响应WM_PAINT的消息~~!!!!
/////
在你的
void CTestView3::OnDrawcurve() //一个响应按钮的画图函数
{
m_DrawFlag = TREU;/////添加此行代码
Invalidate(TRUE);////或者InvalidateRect()
}
View里面加一个成员变量,比如:BOOL m_DrawFlag=FALSE;
在OnPaint()里画,该写了OnDrawcurve()
{
m_DrawFlag = TREU;
SendMessage(WM_PAINT);
}