首页 > MFC开发 > error C2440 reinterpret_cast 无法从NMHDR *转换为NMITEMACTIVATE

error C2440 reinterpret_cast 无法从NMHDR *转换为NMITEMACTIVATE

错误描述:error C2440: “reinterpret_cast”: 无法从“NMHDR *”转换为“NMITEMACTIVATE”;转换要求构造函数或用户定义的转换运算符,而该运算符不能由 const_cast 或 reinterpret_cast 使用

错误起因:在VS2008中,当为MFC的CListCtrl控件添加NM_RCLICK事件响应时VS自动生成的代码会漏掉一个*号。

void CProjectNameDlg::OnNMRClickListProcess(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<NMITEMACTIVATE>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	*pResult = 0;
}

显然pNMItemActivate是LPNMITEMACTIVATE是一个指针类型,而NMITEMACTIVATE不是指针类型,所以在reinterpret_cast转换时需要添加一个型号。修改后的代码如下:

void CProjectNameDlg::OnNMRClickListProcess(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<NMITEMACTIVATE *>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	*pResult = 0;
}

觉得文章还不错?点击此处对作者进行打赏!


本文地址: 程序人生 >> error C2440 reinterpret_cast 无法从NMHDR *转换为NMITEMACTIVATE
作者:代码疯子(Wins0n) 本站内容如无声明均属原创,转载请保留作者信息与原文链接,谢谢!


更多



分类: MFC开发 标签: , ,
  1. 本文目前尚无任何评论.