我想做实现如下功能:
在视图区点击鼠标左键画一个点(最好是圆圈),然后将这个点的位置(CPoint point)保存成dat文件,最好是点击的时候就保存.当选择菜单中的回放选项时,能将刚才点击鼠标左键绘制的点重新绘制,实现回放功能.
我的问题是:
1.不知道怎么能保存CPoint类的坐标成dat文件然后在回放时正确读出.
2,不知道怎么能点击菜单中的回放时,重建视图区(也就是把回放之前的点擦掉),完成回放.
我的一点代码(肯定不对)
void CDownView::OnLButtonDown(UINT nFlags, CPoint point)
{
m_PointArray.Add(point);
SaveToFile(point);
AddPoint(point);
}
void CDownView::AddPoint(CPoint point)
{
CDC* pdc=GetDC();
pdc->SetPixel(point,RGB(255,0,0));}
BOOL CDownView::SaveToFile(CString strFileName)
{
CFile file;
CString sFile("my.dat");
if(!file.Open(sFile, CFile::modeWrite) )
{
AfxMessageBox("File could not be opened ");
}
file.SeekToEnd(); //写文件前将文件指针置于文件末尾
file.Write(&point1,sizeof(CPoint)); //写文件
return TRUE;
}
void CDownView::OnReplay()
{
CFile file;
CString sFile("my.dat");
if( !file.Open(sFile,CFile::modeReadWrite) )
{
AfxMessageBox("File could not be opened ");
}
char pbuf[100];
while ( UINT nBytesRead = file.Read( pbuf, sizeof(CPoint) ) )
{
CPoint point2 = (CPoint)nBytesRead;
point2 += CPoint(25,25);
AddPoint(point2);
}
}
肯定实现不了,但是体现了我的想法.请帮忙给点建议.最好能有源程序.谢谢了!
在视图区点击鼠标左键画一个点(最好是圆圈),然后将这个点的位置(CPoint point)保存成dat文件,最好是点击的时候就保存.当选择菜单中的回放选项时,能将刚才点击鼠标左键绘制的点重新绘制,实现回放功能.
我的问题是:
1.不知道怎么能保存CPoint类的坐标成dat文件然后在回放时正确读出.
2,不知道怎么能点击菜单中的回放时,重建视图区(也就是把回放之前的点擦掉),完成回放.
我的一点代码(肯定不对)
void CDownView::OnLButtonDown(UINT nFlags, CPoint point)
{
m_PointArray.Add(point);
SaveToFile(point);
AddPoint(point);
}
void CDownView::AddPoint(CPoint point)
{
CDC* pdc=GetDC();
pdc->SetPixel(point,RGB(255,0,0));}
BOOL CDownView::SaveToFile(CString strFileName)
{
CFile file;
CString sFile("my.dat");
if(!file.Open(sFile, CFile::modeWrite) )
{
AfxMessageBox("File could not be opened ");
}
file.SeekToEnd(); //写文件前将文件指针置于文件末尾
file.Write(&point1,sizeof(CPoint)); //写文件
return TRUE;
}
void CDownView::OnReplay()
{
CFile file;
CString sFile("my.dat");
if( !file.Open(sFile,CFile::modeReadWrite) )
{
AfxMessageBox("File could not be opened ");
}
char pbuf[100];
while ( UINT nBytesRead = file.Read( pbuf, sizeof(CPoint) ) )
{
CPoint point2 = (CPoint)nBytesRead;
point2 += CPoint(25,25);
AddPoint(point2);
}
}
肯定实现不了,但是体现了我的想法.请帮忙给点建议.最好能有源程序.谢谢了!
解决方案 »
- 如何用enter键模拟tab键的功能呢?最好有源代码
- 请问如何在程序联网时自动得到提醒??
- 想实现如图所示功能,在MFC中添加类似表格的数据
- MFC中如何向CFile创建的文件中写入数字?
- 树形视图的一个简单问题!
- 大家来把好的网站共享吧!
- 救急:如何组装这个头文件、库文件?分不够,再加500分!
- 如何在CDataGrid控件中插入行和删除行,在线等待,急用(给分)通过按钮消息
- 在ATL的一个方法里如何得到该ActiveX组件的IUnknown interface ?
- 对话框失去焦点后如何让该对话框的菜单栏不变灰?
- 那里有VC6.0内幕技术的第五版下载
- 求教:在视图中画点,然后保存,再回放!如何实现?谢谢
just see msdn:sribble