前提:用appwizard建立了单文档框架,名字是mydraw
现在我在document栏添加了一些命令,希望通过不同的命令(菜单选项)对应不同的
图形输出,现在已经在mydraw.app中添加了
ON_COMMAND(ID_GRAPHIC_POINT,CMydrawDoc::DrawPoint) //画点
ON_COMMAND(ID_GRAPHIC_POINT,CMydrawDoc::DrawLine) //画线DrawPoint,DrawLine分别产生点或者线的数组,然后现在是问题是怎样搭通这两个
函数和CMydrawView::OnDraw()的关系然后实现不同的图形输出。高分相送,在线等候。
现在我在document栏添加了一些命令,希望通过不同的命令(菜单选项)对应不同的
图形输出,现在已经在mydraw.app中添加了
ON_COMMAND(ID_GRAPHIC_POINT,CMydrawDoc::DrawPoint) //画点
ON_COMMAND(ID_GRAPHIC_POINT,CMydrawDoc::DrawLine) //画线DrawPoint,DrawLine分别产生点或者线的数组,然后现在是问题是怎样搭通这两个
函数和CMydrawView::OnDraw()的关系然后实现不同的图形输出。高分相送,在线等候。
我在doc类中产生图形的点数组,然后在view类中的OnDraw显示,这个问题具体怎样实现
请教请教!!!
ON_COMMAND(ID_GRAPHIC_POINT,CMydrawView::DrawPoint) //画点
ON_COMMAND(ID_GRAPHIC_POINT,CMydrawView::DrawLine) //画线生成数组后,用Invalidate(),就可以发送重绘消息
就到OnDraw()里面去了
CDocument* GetDocument( ) const;Return ValueA pointer to the CDocument object associated with the view. NULL if the view is not attached to a document.ResCall this function to get a pointer to the view’s document. This allows you to call the document’s member functions.
设置一个成员变量m_iCurDraw=1;//0:不画 1:画点 2:画线
然后把这个菜单项目值成选中状态(再类向导中这个菜单的更新消息中添加
(
OnUpdateMenuitem32771(CCmdUI* pCmdUI)
{
if(m_iCurDraw==1)
pCmdUI->SetCheck();
else
pCmdUI->SetCheck(0);
}
然后重载鼠标抬起事件,如果m_iCurDraw==1,就通过GetDocument后得到文档,把该点加入到点的点数组里面
再OnDraw()中根据Doc中点的点数组和线的点数组画,OK
但是我还是希望在doc中产生然后在view中显示较为系统一些。
现在遇到的问题是,在doc中产生后要触发view中的ondraw重新刷新画面
但是Invalidate()确是view成员函数,那么应该怎样解决这个问题呢?
你可以通过UpdateAllViews更新。
能否把过程说得具体一点:
是不是现在View中产生点,然后通过GetDocument返回的指针把结果存放到Doc中
再用UpdateAllViews来更新刚刚产生的图形显示???
他获得用户的输入,完成文档的输出!因为你是在CView中画图,所以建议在CDocument中建立一个m_Point[]
至于画图,既可以在CDocument中也可以在CView中。