列子是这样的:
用APPwizard产生的应用程序中,在客户区画直线:
怎么OnMouseMove是这样的:
void CHelloView::OnMouseMove(UINT nFlags,CPoint point)
{
CHelloDoc* pDoc=GetDocument();
CClientDC dc(this);
dc.SetROP2(R2_NOT);
if pDoc->m_isdrag!=1 return False;
//擦
dc.MoveTo(pDoc->m_startpt.x,pDoc->m_startpt.y);
dc.LineTo(pDoc->m_endpt.x,pDoc->m_endpt.y);
//重置结束点
pDoc->m_endpt=point;
//画
dc.MoveTo(pDoc->m_startpt.x,pDoc->m_startpt.y);
dc.LineTo(pDoc->m_endpt.x,pDoc->m_endpt.y);
}我将擦部分的code删掉,虽然程序调试还是没问题,但是效果就是不行,画圆的时候有很多黑色的点。我想在拖动mouse的时候,这段code肯定是不停循环执行的,那么,擦和画不是完全一样的吗?为什么我将擦部分的删除就不行???请教各位大虾!!!
用APPwizard产生的应用程序中,在客户区画直线:
怎么OnMouseMove是这样的:
void CHelloView::OnMouseMove(UINT nFlags,CPoint point)
{
CHelloDoc* pDoc=GetDocument();
CClientDC dc(this);
dc.SetROP2(R2_NOT);
if pDoc->m_isdrag!=1 return False;
//擦
dc.MoveTo(pDoc->m_startpt.x,pDoc->m_startpt.y);
dc.LineTo(pDoc->m_endpt.x,pDoc->m_endpt.y);
//重置结束点
pDoc->m_endpt=point;
//画
dc.MoveTo(pDoc->m_startpt.x,pDoc->m_startpt.y);
dc.LineTo(pDoc->m_endpt.x,pDoc->m_endpt.y);
}我将擦部分的code删掉,虽然程序调试还是没问题,但是效果就是不行,画圆的时候有很多黑色的点。我想在拖动mouse的时候,这段code肯定是不停循环执行的,那么,擦和画不是完全一样的吗?为什么我将擦部分的删除就不行???请教各位大虾!!!
解决方案 »
- 用SetWindowPos如何设置窗口居中?
- VC6(Win32)转VS2005(WinCE)的问题
- Access 为空的问题
- 请问如何将一个exe文件作为资源加入工程中?
- socks5 iocp源码~~~~~
- 使用MFC中DibLook目录下的dibapi.cpp、myfile.cpp和dibapi.h的程序用于显示DIB位图发生以下错误
- 菜鸟问题:为什么对话框程序不能接受KeyDown事件?
- 在vc6中,我生成一个lib,为何在别的工程中不能调用,
- 高手请进!
- 在两个窗口!!!!!!!!!
- Error spawning a.exe什么意思?
- 急急需要木马程序原代码用VC编写的!!!百分报答!!!!!!!
程序中可能是要鼠标再点一下才真正将线定下来吧?所以在鼠标移动的时候既要显示一条线跟着鼠标,而鼠标移走后又要将它擦掉。所以在上一次onMouseMove中画好的线若不要的话,在下一次onMouseMove中就该擦除了。
m_startpt.x,m_startpt.y,m_endpt.x,m_endpt.y就是一条线
后面还有个重置点的设置,再后面又是与上相同的一段代码,我想不管你删除
的是前面的擦还是后面的画,结果应该是相同的