感谢各位大虾关心我的问题:
我要实现的功能是:点击鼠标左键后开始显示鼠标路径,抬起后便停止显示
;在显示路径同时记录鼠标每时刻坐标与position.bin文件中;最后读取bin文件。
现在我的程序中完成了前两个,但是当按下左键开始拖动鼠标时,就报错了。而且是filecore.cpp中的错误,不知道怎么修改。因此现在请教各位资深编程前辈指点一二,小弟不胜感激!!多谢大家了。
主要程序如下:
void CMyView::OnLButtonDown(UINT nFlags, CPoint point)
{
UpdateData(TRUE);
m_beginDraw=false;//判断鼠标是否按下
m_ptOrigin=point;
//建立存储位置的 position文件
//-----------------------------------------------------
route.Format("H:\\route.bin"); File.Open("route",CFile::modeCreate);
//-------------------------------------------------------
CView::OnLButtonDown(nFlags, point);
}
void CMyView::OnMouseMove(UINT nFlags, CPoint point)
{
UpdateData(TRUE);
//显示坐标
//------------------------------------------------------------
CString str;
str.Format("x=%d,y=%d",point.x,point.y);
((CMainFrame*)GetParent())- >m_wndStatusBar.SetWindowText(str);
//-------------------------------------------------------------
if(m_beginDraw){}//如果m_bDraw的值是初始值,即真,则不作图,不记录
else //如果m_bDraw的值已经设为假,则开始画图,记录
{
//开始画路径
//--------------------------------------------------------------
CClientDC dc(this);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
m_ptOrigin=point;
//--------------------------------------------------------------
//开始记录坐标位置与route.bin文件中
//--------------------------------------------------------------
m_pointMouse.x=point.x;
m_pointMouse.y=point.y;
if(File.Open("route",CFile::modeWrite))
{
File.SeekToEnd();
File.Write(&m_pointMouse,sizeof(m_pointMouse));
}
//--------------------------------------------------------------
}
CView::OnMouseMove(nFlags, point);
}
void CMyView::OnLButtonUp(UINT nFlags, CPoint point)
{
m_beginDraw=true;//当鼠标键抬起时,m_bDraw又变成假,则停止作图
//按键抬起
//-------------------------------------
route.Format("%d",File.GetLength());
File.Close();
//-------------------------------------
CView::OnLButtonUp(nFlags, point);
}
调试过程中是没有报告有错误的
只有在执行的时候,鼠标点下左键也没什么,开始拖动后就在Microsoft Visual C++ Debug Library 的对话框中报以下错误
Debug Assertion Failed!
Program:(这里面写的是我声称的可执行文件路径以及文件名)
File:filecore.cpp
Line:121
For information on how your program can cause an assertion
failure,see the Visual C++ documention on asserts.
然后叫我选择终止,重试还是忽略。
其中我查到了filecore.cpp的第121行是这么条语句
ASSERT(m_hFile == INVALID_HANDLE_VALUE);
// CFile objects are always binary and CreateFile does not need flag
我暂时想不出来为什么,哪位高手能不能点处错误以后,指明一个大体得努力方向阿,多谢了!!