一个关于vc6.0代码转vc2005的问题?
在vc6.0代码转vc2005中我用CPEN代码为什么会报errorC2440:“static_cast”:无法从“void(__cdecl*)(UINT,CPoint)...
在vc6.0代码转vc2005中
我用CPEN代码为什么会报
error C2440: “static_cast”: 无法从“void (__cdecl *)(UINT,CPoint)”转换为“void (__thiscall CWnd::* )(UINT,CPoint)”
这个错误啊
这是处理代码:
void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
{
m_ptOrigin=point;
// TODO: 在此添加消息处理程序代码和/或调用默认值
CView::OnLButtonDown(nFlags, point);
}
void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
/* HDC hdc;
hdc=::GetDC(m_hWnd);
MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);
LineTo(hdc,point.x,point.y);
::ReleaseDC(m_hWnd,hdc);
*/
/*
CDC *pDC=GetDC();
pDC->MoveTo(m_ptOrigin);
pDC->LineTo(point);
ReleaseDC(pDC);
*/
// CClientDC dc(this);
/* CClientDC dc(GetParent());
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
*/
//CWindowDC dc(this);
//CWindowDC dc(GetParent());
/*
CWindowDC dc(GetDesktopWindow());
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
*/
CPen pen;
pen.CreatePen(PS_SOLID,1,RGB(255,0,0));
CClientDC dc(this);
CPen *pOldPen=dc.SelectObject(&pen);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
dc.SelectObject(pOldPen);
CView::OnLButtonUp(nFlags, point);
} 展开
我用CPEN代码为什么会报
error C2440: “static_cast”: 无法从“void (__cdecl *)(UINT,CPoint)”转换为“void (__thiscall CWnd::* )(UINT,CPoint)”
这个错误啊
这是处理代码:
void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
{
m_ptOrigin=point;
// TODO: 在此添加消息处理程序代码和/或调用默认值
CView::OnLButtonDown(nFlags, point);
}
void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
/* HDC hdc;
hdc=::GetDC(m_hWnd);
MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);
LineTo(hdc,point.x,point.y);
::ReleaseDC(m_hWnd,hdc);
*/
/*
CDC *pDC=GetDC();
pDC->MoveTo(m_ptOrigin);
pDC->LineTo(point);
ReleaseDC(pDC);
*/
// CClientDC dc(this);
/* CClientDC dc(GetParent());
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
*/
//CWindowDC dc(this);
//CWindowDC dc(GetParent());
/*
CWindowDC dc(GetDesktopWindow());
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
*/
CPen pen;
pen.CreatePen(PS_SOLID,1,RGB(255,0,0));
CClientDC dc(this);
CPen *pOldPen=dc.SelectObject(&pen);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
dc.SelectObject(pOldPen);
CView::OnLButtonUp(nFlags, point);
} 展开
1个回答
展开全部
vc6转vc2005时肯定会出不少错误的,
很多消息的宏都变了。参数和返回值不同了。
error C2440: “static_cast”: 无法从“void (__cdecl *)(UINT,CPoint)”转换为“void (__thiscall CWnd::* )(UINT,CPoint)”
看起来你写的是 void (__thiscall CWnd::* )(UINT,CPoint)
但实际是 void (__cdecl *)(UINT,CPoint)
不能转换为 void (__thiscall CWnd::* )(UINT,CPoint)
所以出现错误。
一般要查看该CPP文件的消息映射宏位置,
的BEGIN_MESSAGE_MAP(CXXX, CDialog)
//{{AFX_MSG_MAP(CXXX)
ON_WM_SYSCOMMAND()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
和该CPP文件的相关头文件,看看vc2005对 afx_msg 那些行的要求。
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CXXX)
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
virtual BOOL OnInitDialog();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
很多消息的宏都变了。参数和返回值不同了。
error C2440: “static_cast”: 无法从“void (__cdecl *)(UINT,CPoint)”转换为“void (__thiscall CWnd::* )(UINT,CPoint)”
看起来你写的是 void (__thiscall CWnd::* )(UINT,CPoint)
但实际是 void (__cdecl *)(UINT,CPoint)
不能转换为 void (__thiscall CWnd::* )(UINT,CPoint)
所以出现错误。
一般要查看该CPP文件的消息映射宏位置,
的BEGIN_MESSAGE_MAP(CXXX, CDialog)
//{{AFX_MSG_MAP(CXXX)
ON_WM_SYSCOMMAND()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
和该CPP文件的相关头文件,看看vc2005对 afx_msg 那些行的要求。
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CXXX)
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
virtual BOOL OnInitDialog();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询