void CSketcherView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CClientDC aDC(this);
//CView::OnMouseMove(nFlags, point);
if(nFlags & MK_LBUTTON){
m_SecondPoint = point;
if(m_pTempElement)
{
if(CURVE == GetDocument()->GetElementType()){
static_cast<CCurve*>(m_pTempElement)->AddSegment(m_SecondPoint);
m_pTempElement->Draw(&aDC);
return;
}
aDC.SetROP2(R2_NOTXORPEN);
m_pTempElement->Draw(&aDC);
delete m_pTempElement;
m_pTempElement = nullptr;
}
m_pTempElement = CreateElement();
m_pTempElement->Draw(&aDC);
}}一直提示m_pTempElement未定义标示符。我是照着书上来编写代码的,不知道这是怎么回事,哪位大侠知道的给说下,谢谢了!
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CClientDC aDC(this);
//CView::OnMouseMove(nFlags, point);
if(nFlags & MK_LBUTTON){
m_SecondPoint = point;
if(m_pTempElement)
{
if(CURVE == GetDocument()->GetElementType()){
static_cast<CCurve*>(m_pTempElement)->AddSegment(m_SecondPoint);
m_pTempElement->Draw(&aDC);
return;
}
aDC.SetROP2(R2_NOTXORPEN);
m_pTempElement->Draw(&aDC);
delete m_pTempElement;
m_pTempElement = nullptr;
}
m_pTempElement = CreateElement();
m_pTempElement->Draw(&aDC);
}}一直提示m_pTempElement未定义标示符。我是照着书上来编写代码的,不知道这是怎么回事,哪位大侠知道的给说下,谢谢了!
class CSketcherView : public CView
{
....
public:
CPoint m_pTempElement;
....
};你少了这么一句,自己查查吧
书上没有的代码没有在头文件中定义。我也试着在头文件中定义了,结果一调试就又有新的问题出现了:
Sketcher.exe 中的 0x0092deeb 处有未经处理的异常: 0xC0000005: 读取位置 0xcdcdcdcd 时发生访问冲突网上说这是指针问题。
我说这样定义的:
protected:
CElement* CreateElement(void) const;
CElement* m_pTempElement;前面那句是书上要求定义的,后面是我自己加上去的,肯定错了,但不知道怎么该,新手求指导。
1 IntelliSense: 表达式必须包含 bool 类型(或可转换为 bool) e:\mfc\sketcher\sketcher\sketcherview.cpp 171 5 IntelliSense: 表达式必须包含指针或句柄类型 e:\mfc\sketcher\sketcher\sketcherview.cpp 180 3 IntelliSense: 表达式必须包含指针类型 e:\mfc\sketcher\sketcher\sketcherview.cpp 175
所以你定义它的头文件,并将该变量设置为共有,如下:
类名 *m_pTempElement