2 qq 34023390 qq_34023390 于 2016.03.29 13:33 提问

无法从“CString”转换为“LPCSTR 4C

目的是利用文件对话框,在MFC对话框中加载一副图片。代码从别的项目拷贝
过来的,原项目可以编译通过,但是在我新建的项目中就提示出错,提示mPath无法从CString转换为LPCSTR,这个要怎么解决呀?
void CMat_openimgDlg::OnBnClickedopen()
{
// TODO: 在此添加控件通知处理程序代码
// TODO: 在此添加控件通知处理程序代码

CFileDialog dlg(TRUE, _T("*.jpg"), NULL,
    OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY,
    NULL, NULL);                                        // 选项图片的约定
dlg.m_ofn.lpstrTitle = _T("打开实时图");    // 打开文件对话框的标题名
dlg.m_ofn.lpstrFilter=_T("image files (*.jpg) \0*.jpg\0image files (*.bmp)\0*.bmp\0All Files (*.*) \0*.*");
if( dlg.DoModal() != IDOK )                    // 判断是否获得图片
    return;

CString mPath = dlg.GetPathName();            // 获取图片路径

m_mat1 = cv::imread( LPCSTR(mPath), 1 ); // 读取图片、缓存到一个局部变量 ipl 中

if( !m_mat1.data )                                    // 判断是否成功载入图片
    return; 
DrawMatToHDC( m_mat1, IDC_Showing );            // 调用显示图片函数 

}

void CMat_openimgDlg::DrawMatToHDC(cv::Mat img, UINT ID)//------对应新版Mat 的显示函数
{
CDC *pDC = GetDlgItem(ID)->GetDC();
HDC hDC= pDC->GetSafeHdc();
CRect rect;
GetDlgItem(ID)->GetClientRect(&rect);
CvvImage cimg;
IplImage ipm = img;
cimg.CopyOf(&ipm);
cimg.DrawToHDC_SCALE(hDC,&rect);
ReleaseDC(pDC);
}

3个回答

caozhy
caozhy   Ds   Rxr 2016.03.29 23:33
 m_mat1 = cv::imread( (char *)mPath, 1 ); 
CSDNXIAOD
CSDNXIAOD   2016.03.30 11:30

LPCSTR与CString转换
LPCSTR与CString转换
cstring和LPCSTR的转换
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

lx624909677
lx624909677   Ds   Rxr 2016.03.29 23:30

m_mat1 = cv::imread( mPath.GetBuffer(mPath.GetLength()), 1 );

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!