我下载了一个程序。在视图中调用工具栏按钮事件,比如一个工具栏按钮ID是IDT_CURVE,在View中把按钮与事件关联代码如下:
BEGIN_MESSAGE_MAP(CConferenceView, CView)
//{{AFX_MSG_MAP(CConferenceView)
ON_COMMAND(IDT_CURVE, OnCurve)
//}}AFX_MSG_MAP现在我想把这个按钮移到普通窗体中去,在View中怎么把按钮与事件关联?谢谢!!
BEGIN_MESSAGE_MAP(CConferenceView, CView)
//{{AFX_MSG_MAP(CConferenceView)
ON_COMMAND(IDT_CURVE, OnCurve)
//}}AFX_MSG_MAP现在我想把这个按钮移到普通窗体中去,在View中怎么把按钮与事件关联?谢谢!!
然后把消息是呀sendmessage发送给你嘚
view,最后在view里面响应就可以了
void CConferenceView::OnLButtonUp(UINT nFlags, CPoint point)
{
if (m_nTool == TEXT_TYPE)//
{
return;
}
// TODO: Add your message handler code here and/or call default
end.x=point.x;
end.y=point.y;
beg2=0;
CDC* pDC = GetDC();
CConferenceDoc* pDoc = GetDocument();
switch(m_nMouseMode)
{
case IDT_LINE:
case IDT_RECTANGLE:
case IDT_ELLIPSE:
case IDT_CIRCLE:
case IDT_CURVE://这个地方怎么办? if (((beg.x != end.x) || (beg.y != end.y))&& pic !=4 )
TRY{
if(m_usrCurrentObject)
m_usrCurrentObject->Draw(pDC);}
CATCH(CFileException,e)
{
CString strTemp;
if(strTemp.LoadString (IDS_READERROR))
AfxMessageBox(strTemp);
}END_CATCH
::ClipCursor(NULL);//
m_bDrawing = false;
delete m_usrCurrentObject;
m_usrCurrentObject = NULL;
break;
default:
break;
}
if (pic == 3 )
{
long min = min(abs(end.x - beg.x), abs(end.y - beg.y));
if( end.x < beg.x )
end.x = beg.x - min;
else
end.x = beg.x + min;
if( end.y < beg.y )
end.y = beg.y - min;
else
end.y = beg.y + min;
}
if(pic!=4 && pic!=5)
SendMsg(); ReleaseDC(pDC); CView::OnLButtonUp(nFlags, point);
}
CConferenceView *view;
this->m_pView = view;
m_pView->OnCurve();
但是运行后点击按钮,程序马上崩溃!!我想是不是原来工具栏按钮ID:IDT_CURVE要做什处理?谢谢!!