局部变量-无法从“CString”转换为“LPCSTR

问题描述

无法从“CString”转换为“LPCSTR

目的是利用文件对话框,在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) *.jpgimage files (*.bmp)*.bmpAll Files (*.*) *.*");
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);
}

解决方案

 m_mat1 = cv::imread( (char *)mPath, 1 );

解决方案二:

LPCSTR与CString转换
LPCSTR与CString转换
cstring和LPCSTR的转换

解决方案三:

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

时间: 2024-09-19 12:02:35

局部变量-无法从“CString”转换为“LPCSTR的相关文章

struct-const CString 转换为char* 内容丢失

问题描述 const CString 转换为char* 内容丢失 LPCTSTR lpszText = (LPCTSTR)sHostName; struct hostent FAR *lpHostEnt = gethostbyname(LPSTR(lpszText)); if (lpHostEnt == NULL) { sIPAddress = _T(""); return WSAGetLastError(); } 解决方案 参考:http://blog.sina.com.cn/s/b

error C2664: “atoi”: 不能将参数 1 从“CString”转换为“const char *”

问题描述 t+=atoi((m_PersonListCtrl.GetItemText(i,1)));请问为什么会出错,如何解决 解决方案 解决方案二:trywatoi解决方案三:errorC3861:"watoi":找不到标识符,现在主要问题是,在VC6中好用,在这里需要改什么地方才能用,谢谢各位解决方案四:inti;intp=0;intt=0;floata=0.0;for(i=0;i<m_PersonListCtrl.GetItemCount();i++){if(m_Perso

vs2012-VS2012的运行MFC中播放器

问题描述 VS2012的运行MFC中播放器 error C2664: "CMyPlayerControl::Open": 不能将参数 1 从"CString"转换为"LPCSTR" ???怎么回事 解决方案 假设你的字符串变量叫str,加上强制转换 (LPCTSTR)str 解决方案二: VS2012中默认编码是Unicode.CString是Unicode,而你需要转成成**LPTCSTR**

MFC Edit控件 error:“DDX_Control”: 不能将参数 3 从“int”转换为“CWnd &amp;amp;”

在使用MFC的Edit Control等控件时可能你会遇到这样的问题:error:"DDX_Control": 不能将参数 3 从"int"转换为"CWnd &"或error:"DDX_Control": 不能将参数 3 从"CString"转换为"CWnd &".这是什么原因呢? 一.浅析 查看资料和搜索后,我也看到了一些具体分析: 在一个对话框程序里,有个按钮IDC_

c++-C++ CString字符串转换问题

问题描述 C++ CString字符串转换问题 代码如下: CString TxtPath; CStdioFile File; CString buffer; UINT Num = 0u; m_Script.GetWindowText(TxtPath); File.Open(TxtPath,CFile::modeRead); File.SeekToBegin(); while ( File.ReadString(buffer) ) { } 如果读取的文件中存储的数据为: 9812345678 如

c++ 数据类型与原始数据之间的转换 C++中各种数据类型转换

glm 中 数据类型 与 原始数据(c++ 数组)之间的转换 float* -> glm::vec3 float g_AxisDirection[] = {0.0f, 1.0f, 0.0f}; glm::make_vec3(g_AxisDirection) glm::mat4->float* glm::mat4 Rx = glm::mat4(1); (float*)glm::value_ptr(Rx) C++中各种数据类型的转换 %f常用数据类型使用转换详解   leo: 要在Unicode字

MFC 基础知识:主对话框与子对话框(二)

(仅供使用VS MFC初学者学习,高手莫见笑)接"MFC 基础知识:主对话框与子对话框(一)"的内容在"MFC 基础知识:主对话框与子对话框(一)"中Edit Control(编辑框)控件中输出内容,主要是想讲讲在创建的子对话框中如何实现一些操作:即添加OnInitDialog初始化函数的操作,这里的操作VS2012与VC++6.0略有些改动. 一. 主对话框编辑框中输出内容 1.找到主对话框XXXDlg.cpp中的OnInitDialog()初始化函数,在函数注释

VC++中字符串编码的转换

在以前VC++6.0中默认的字符集是多字节字符集(MBCS:Multi-Byte Character Set),而VS2005及以后默认的字符集是Unicode,这样导致以前在VC6.0中非常简单实用的各类字符操作和函数在VS2010环境下运行时会报各种各样的错误. 字符集可以通过工程属性修改:"工程-属性-字符集". CString在Unicode和多字节字符集下的区别:CString 是基于 TCHAR 数据类型的.如果为程序的生成定义了符号 _UNICODE,则会将 TCHAR

浅谈Greenplum的Boolean类型与Text类型之间的转换

在Greenplum或者Deepgreen中,如果我们想直接把Boolean类型转化为Text,那么可能会让你失望,因为他们不支持这种直接转化,但是可以通过UDF的方式实现,下面来简单看一下这个过程. 首先,当我们运行下面的SQL来转换Boolean为Text类型时,会得到一个大写测错误:-D DECLARE qgis_4 BINARY CURSOR FOR SELECT st_asbinary("location",'NDR'),ctid,"start_datetime&q