CString转为char* unicode,MFC中的使用
2017-12-01 10:50
429 查看
MFC中添加图片,现将图片加入到资源
[cpp] view
plain copy
////加入升级成功的图片
//CBitmap bitmap;
//bitmap.LoadBitmapW(IDI_ICON1);
//CStatic *p = (CStatic*)GetDlgItem(showPic);
//p->ModifyStyle(0xf, SS_BITMAP | SS_CENTERIMAGE);
////将图片设置到Picture控件上
//p->SetBitmap(bitmap);
..给一个文本框赋值
[csharp] view
plain copy
GetDlgItem(IDC_EDIT_value)->SetWindowText(_T("Wcnt"));
..对话框
[cpp] view
plain copy
CString FilePathName;
CFileDialog dlg(TRUE);
if (dlg.DoModal() == IDOK)
{
FilePathName = dlg.GetPathName(); //这样可以打开并获得你选择文件的完整路径
}
GetDlgItem(IDC_EDIT3)->SetWindowText(FilePathName);
.
[cpp] view
plain copy
BOOL isOpen = TRUE; //是否打开(否则为保存)
CString defaultDir = L"E:\\FileTest"; //默认打开的文件路径
CString fileName = L""; //默认打开的文件名
CString filter = L"文件 ( *.hex)|*.hex||"; //文件过虑的类型
CFileDialog openFileDlg(isOpen, defaultDir, fileName, OFN_HIDEREADONLY | OFN_READONLY, filter, NULL);
openFileDlg.GetOFN().lpstrInitialDir = L"E:\\FileTest\\test.doc";
INT_PTR result = openFileDlg.DoModal();
CString filePath;
if (result == IDOK) {
filePath = openFileDlg.GetPathName();
}
CWnd::SetDlgItemTextW(IDC_EDIT3, filePath);
..typedef char * LPSTR ,类型重命名,CString转为char*
Unicode
[cpp] view
plain copy
BOOL isOpen = TRUE; //是否打开(否则为保存)
CString defaultDir = L"E:\\FileTest"; //默认打开的文件路径
CString fileName = L""; //默认打开的文件名
CString filter = L"文件 ( *.hex)|*.hex||"; //文件过虑的类型
CFileDialog openFileDlg(isOpen, defaultDir, fileName, OFN_HIDEREADONLY | OFN_READONLY, filter, NULL);
openFileDlg.GetOFN().lpstrInitialDir = L"E:\\FileTest\\test.doc";
INT_PTR result = openFileDlg.DoModal();
CString filePath;
if (result == IDOK) {
filePath = openFileDlg.GetPathName();
}
CWnd::SetDlgItemTextW(IDC_EDIT3, filePath);
int ALength = WideCharToMultiByte(CP_ACP, 0, filePath, -1, NULL, 0, NULL, NULL);
LPSTR pszA = (LPSTR)_alloca(ALength + 1);
WideCharToMultiByte(CP_ACP, 0, filePath, -1, pszA, ALength, NULL, NULL);
pszA[ALength] = 0;
CString str(pszA);
//将Cstring赋值给char* 或者char[]
//apGetHexFilePath = (LPSTR)(LPCTSTR)filePath; //指向了首地址
//上面这种强制类型转换只会返回第一个字符
apGetHexFilePath = pszA;
。CString的用法
[csharp] view
plain copy
在使用MFC的过程中,不可避免的要使用CString类型对字符串进行处理,特别常用的是CString与char*等类型的转换,现将平时常用的方法整理如下。
1.CString类型的初始化
CString str;
CString str1(L"abc");
CString str2 = _T("defg");
2.CString类型字符串的基本操作
获取字符串的长度:GetLength();
是否为空,即不含字符:IsEmpty();
清空字符串:Empty();
大小写转换:MakeUpper()、MakeLower()
转换字符串中字符的顺序:MakeReverse()
字符串的连接:+、+=
字符串的比较:==、!=、Compare(区分大小写)、CompareNoCase(不区分大小写)
3.字符串的查找
Find():从指定位置开始查找指定的字符或者字符串,返回其位置,找不到返回 -1。
ReverseFind():从字符串末尾开始查找指定的字符,返回其位置,找不到返回 -1,虽然是从后向前查找,但是位置为从开始算起。
FindOneOf():查找参数中给定字符串中的任意字符,返回第一次出现的位置,找不到返回-1。
4.字符串的替换和删除
Replace():替换 CString 对象中的指定的字符或者字符串,返回替换的个数,无匹配字符返回0。
Remove():删除CString 对象中的指定字符,返回删除字符的个数,有多个时都会删除。
Delete():删除 CString 对象中的指定位置的字符,返回处理后的字符串长度。
5.字符串的提取
Left(字符数量 ):从左边提取若干字符。
Mid(起始位置,字符数 ):从指定位置开始提取若干字符,字符数若省略则提取到字符串结尾处。
Right(字符数量 ):从右边提取若干字符。
以上函数分别从字符串的左中右实现对字符串的提取操作。
示例:
CString str(_T("abcd"));
CString strResult = str.Left(2); //strResult == ab
strResult = str.Mid(1); //strResult == bcd
strResult = str.Mid(0, 2); //strResult == ab
strResult = str.Right(2); //strResult == cd
6.类型转换
int、char*等类型向CString类型转换时使用CString的Format()函数
char*类型的可以直接赋值给CString类型
CString str;
str = "abc";
char *p = "defg";
str = p;
CString转换成char*
CString g_str;
USES_CONVERSION;
char *
char *str = T2A(g_str);
或
char *str =g_str.GetBuffer(g_str.GetLength());
CString类型转换成int 类型
CString str1(_T("123"));
int num = _ttoi(str1);
1、将CString类型转为int型
[cpp] view
plain copy
//在这里判断下版本信息,是否决定要继续升级,将版本号转为了16进制,3002(十进制)--》bba(16进制)
uint32_t firversion = _ttoi(firVersionComp);
uint32_t devversion = _ttoi(deviceVersionComp);
2、CString赋初值
[cpp] view
plain copy
CString firVersionComp=_T("0.0.0.0");
CString deviceVersionComp=_T("0.0.0.0");
3、
1. 在对话框的类中添加两个变量.
方法:在classview选项卡中,选择CTestDlg,右键,add member variable.
CBrush m_brush;
CFont m_font;
在OnInitDialog()函数中添加:
// TODO: ……
m_font.CreatePointFont(150,"华文行楷");//代表15号字体,华文行楷
m_brush.CreateSolidBrush(RGB(0,255,0));//画刷为绿色
2 添加WM_CTLCOLOR 消息响应,添加的方法为:
add windows message handler->WM_CTLCOLOR->add and edit
3 在HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 函数中的todo后添加代码,即:
,
HBRUSH CYourDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
if (pWnd->GetDlgCtrlID() == IDC_STATICText)
{
pDC->SetBkColor(RGB(0,255,0));//背景色为绿色
pDC->SetTextColor(RGB(255, 0, 0));//文字为红色
pDC->SelectObject(&m_font);//文字为15号字体,华文行楷
return m_brush;
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
4、
一、设置静态文本 大小 字体 颜色
1.首先,在对话框上添加一个Static控件,关联一个控制变量m_static(不是Value,是Control)
2.声明变量
private:
CFont m_Font;
3.然后,在对话框初始化中添加下列代码即可
BOOL CTransstaDlg::OnInitDialog()
{
//设置Static字体
m_Font.CreatePointFont(300, "Arial", NULL);
m_static.SetFont(&m_Font,true);
m_static.SetWindowText("100");
5、MB_ICONEXCLAMATION:一个惊叹号出现在消息框
MB_ICONWARNING:一个惊叹号出现在消息框
MB_ICONINFORMATION:一个圆圈中小写字母i组成的图标出现在消息框
MB_ICONASTERISK:一个圆圈中小写字母i组成的图标出现在消息框
MB_ICONQUESTION:一个问题标记图标出现在消息框
MB_ICONSTOP:一个停止消息图标出现在消息框
MB_ICONERROR:一个停止消息图标出现在消息框
MB_ICONHAND:一个停止消息图标出现在消息框
[cpp] view
plain copy
CString msg;
msg.Format(L"The current version is %s, \n Do you want to upgrade to %s?", DeviceVersion,firVersion);
AfxMessageBox(msg, MB_OKCANCEL | MB_ICONQUESTION);
//int nResult = AfxMessageBox(L"Abc", 1, 0);
if(AfxMessageBox(L"Abc", 1, 0) == IDOK)
{
}
// Do something if you choose is OK.
else
// Do something if you choose CANCEL
{
}
[cpp] view
plain copy
////加入升级成功的图片
//CBitmap bitmap;
//bitmap.LoadBitmapW(IDI_ICON1);
//CStatic *p = (CStatic*)GetDlgItem(showPic);
//p->ModifyStyle(0xf, SS_BITMAP | SS_CENTERIMAGE);
////将图片设置到Picture控件上
//p->SetBitmap(bitmap);
..给一个文本框赋值
[csharp] view
plain copy
GetDlgItem(IDC_EDIT_value)->SetWindowText(_T("Wcnt"));
..对话框
[cpp] view
plain copy
CString FilePathName;
CFileDialog dlg(TRUE);
if (dlg.DoModal() == IDOK)
{
FilePathName = dlg.GetPathName(); //这样可以打开并获得你选择文件的完整路径
}
GetDlgItem(IDC_EDIT3)->SetWindowText(FilePathName);
.
[cpp] view
plain copy
BOOL isOpen = TRUE; //是否打开(否则为保存)
CString defaultDir = L"E:\\FileTest"; //默认打开的文件路径
CString fileName = L""; //默认打开的文件名
CString filter = L"文件 ( *.hex)|*.hex||"; //文件过虑的类型
CFileDialog openFileDlg(isOpen, defaultDir, fileName, OFN_HIDEREADONLY | OFN_READONLY, filter, NULL);
openFileDlg.GetOFN().lpstrInitialDir = L"E:\\FileTest\\test.doc";
INT_PTR result = openFileDlg.DoModal();
CString filePath;
if (result == IDOK) {
filePath = openFileDlg.GetPathName();
}
CWnd::SetDlgItemTextW(IDC_EDIT3, filePath);
..typedef char * LPSTR ,类型重命名,CString转为char*
Unicode
[cpp] view
plain copy
BOOL isOpen = TRUE; //是否打开(否则为保存)
CString defaultDir = L"E:\\FileTest"; //默认打开的文件路径
CString fileName = L""; //默认打开的文件名
CString filter = L"文件 ( *.hex)|*.hex||"; //文件过虑的类型
CFileDialog openFileDlg(isOpen, defaultDir, fileName, OFN_HIDEREADONLY | OFN_READONLY, filter, NULL);
openFileDlg.GetOFN().lpstrInitialDir = L"E:\\FileTest\\test.doc";
INT_PTR result = openFileDlg.DoModal();
CString filePath;
if (result == IDOK) {
filePath = openFileDlg.GetPathName();
}
CWnd::SetDlgItemTextW(IDC_EDIT3, filePath);
int ALength = WideCharToMultiByte(CP_ACP, 0, filePath, -1, NULL, 0, NULL, NULL);
LPSTR pszA = (LPSTR)_alloca(ALength + 1);
WideCharToMultiByte(CP_ACP, 0, filePath, -1, pszA, ALength, NULL, NULL);
pszA[ALength] = 0;
CString str(pszA);
//将Cstring赋值给char* 或者char[]
//apGetHexFilePath = (LPSTR)(LPCTSTR)filePath; //指向了首地址
//上面这种强制类型转换只会返回第一个字符
apGetHexFilePath = pszA;
。CString的用法
[csharp] view
plain copy
在使用MFC的过程中,不可避免的要使用CString类型对字符串进行处理,特别常用的是CString与char*等类型的转换,现将平时常用的方法整理如下。
1.CString类型的初始化
CString str;
CString str1(L"abc");
CString str2 = _T("defg");
2.CString类型字符串的基本操作
获取字符串的长度:GetLength();
是否为空,即不含字符:IsEmpty();
清空字符串:Empty();
大小写转换:MakeUpper()、MakeLower()
转换字符串中字符的顺序:MakeReverse()
字符串的连接:+、+=
字符串的比较:==、!=、Compare(区分大小写)、CompareNoCase(不区分大小写)
3.字符串的查找
Find():从指定位置开始查找指定的字符或者字符串,返回其位置,找不到返回 -1。
ReverseFind():从字符串末尾开始查找指定的字符,返回其位置,找不到返回 -1,虽然是从后向前查找,但是位置为从开始算起。
FindOneOf():查找参数中给定字符串中的任意字符,返回第一次出现的位置,找不到返回-1。
4.字符串的替换和删除
Replace():替换 CString 对象中的指定的字符或者字符串,返回替换的个数,无匹配字符返回0。
Remove():删除CString 对象中的指定字符,返回删除字符的个数,有多个时都会删除。
Delete():删除 CString 对象中的指定位置的字符,返回处理后的字符串长度。
5.字符串的提取
Left(字符数量 ):从左边提取若干字符。
Mid(起始位置,字符数 ):从指定位置开始提取若干字符,字符数若省略则提取到字符串结尾处。
Right(字符数量 ):从右边提取若干字符。
以上函数分别从字符串的左中右实现对字符串的提取操作。
示例:
CString str(_T("abcd"));
CString strResult = str.Left(2); //strResult == ab
strResult = str.Mid(1); //strResult == bcd
strResult = str.Mid(0, 2); //strResult == ab
strResult = str.Right(2); //strResult == cd
6.类型转换
int、char*等类型向CString类型转换时使用CString的Format()函数
char*类型的可以直接赋值给CString类型
CString str;
str = "abc";
char *p = "defg";
str = p;
CString转换成char*
CString g_str;
USES_CONVERSION;
char *
char *str = T2A(g_str);
或
char *str =g_str.GetBuffer(g_str.GetLength());
CString类型转换成int 类型
CString str1(_T("123"));
int num = _ttoi(str1);
1、将CString类型转为int型
[cpp] view
plain copy
//在这里判断下版本信息,是否决定要继续升级,将版本号转为了16进制,3002(十进制)--》bba(16进制)
uint32_t firversion = _ttoi(firVersionComp);
uint32_t devversion = _ttoi(deviceVersionComp);
2、CString赋初值
[cpp] view
plain copy
CString firVersionComp=_T("0.0.0.0");
CString deviceVersionComp=_T("0.0.0.0");
3、
1. 在对话框的类中添加两个变量.
方法:在classview选项卡中,选择CTestDlg,右键,add member variable.
CBrush m_brush;
CFont m_font;
在OnInitDialog()函数中添加:
// TODO: ……
m_font.CreatePointFont(150,"华文行楷");//代表15号字体,华文行楷
m_brush.CreateSolidBrush(RGB(0,255,0));//画刷为绿色
2 添加WM_CTLCOLOR 消息响应,添加的方法为:
add windows message handler->WM_CTLCOLOR->add and edit
3 在HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 函数中的todo后添加代码,即:
,
HBRUSH CYourDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
if (pWnd->GetDlgCtrlID() == IDC_STATICText)
{
pDC->SetBkColor(RGB(0,255,0));//背景色为绿色
pDC->SetTextColor(RGB(255, 0, 0));//文字为红色
pDC->SelectObject(&m_font);//文字为15号字体,华文行楷
return m_brush;
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
4、
一、设置静态文本 大小 字体 颜色
1.首先,在对话框上添加一个Static控件,关联一个控制变量m_static(不是Value,是Control)
2.声明变量
private:
CFont m_Font;
3.然后,在对话框初始化中添加下列代码即可
BOOL CTransstaDlg::OnInitDialog()
{
//设置Static字体
m_Font.CreatePointFont(300, "Arial", NULL);
m_static.SetFont(&m_Font,true);
m_static.SetWindowText("100");
5、MB_ICONEXCLAMATION:一个惊叹号出现在消息框
MB_ICONWARNING:一个惊叹号出现在消息框
MB_ICONINFORMATION:一个圆圈中小写字母i组成的图标出现在消息框
MB_ICONASTERISK:一个圆圈中小写字母i组成的图标出现在消息框
MB_ICONQUESTION:一个问题标记图标出现在消息框
MB_ICONSTOP:一个停止消息图标出现在消息框
MB_ICONERROR:一个停止消息图标出现在消息框
MB_ICONHAND:一个停止消息图标出现在消息框
[cpp] view
plain copy
CString msg;
msg.Format(L"The current version is %s, \n Do you want to upgrade to %s?", DeviceVersion,firVersion);
AfxMessageBox(msg, MB_OKCANCEL | MB_ICONQUESTION);
//int nResult = AfxMessageBox(L"Abc", 1, 0);
if(AfxMessageBox(L"Abc", 1, 0) == IDOK)
{
}
// Do something if you choose is OK.
else
// Do something if you choose CANCEL
{
}
相关文章推荐
- MFC中,Unicode和多字节字符集下 CString和char的转化
- CString 与 char * 和 const char*的转换,以及在Unicode项目中的使用.
- 类型转换 -- 使用Unicode下的cannot convert parameter 1 from 'CString' to 'const char *' 解决办法
- MFC中,Unicode与多字符集下CString与char或char*等的转化
- MFC中,Unicode和多字节字符集下 CString和char的转化
- MFC中Unicode与多字节编码中遇到的CString与char或char*的转化问题
- MFC调用系统命令窗口打开图片文件&CString转为const char*
- MFC中Unicode与多字节编码中遇到的CString与char或char*的转化问题
- vs2010 使用Unicode字符集 CString 与 char *相互转换
- 【MFC】将CString类型的十六进制数字,转换成整形(在使用Unicode字符集的情况)
- MFC中,Unicode和多字节字符集下 CString和char的转化
- MFC Unicode下CString转const char*
- MFC:Unicode和多字节字符集下 CString和char的转化(MFC中)
- 使用Unicode下的cannot convert parameter 1 from 'CString' to 'const char *' 解决办法
- CString 转换为 char* (VC6.0与Visual Studio 2008兼容问题)UNICODE字符集
- MFC unicode转ANSI CString写入文件的操作
- UniCode 下 CString 转 char* 的方法
- UniCode 下 CString 转 char* 的方法
- MFC,unicode下CString类型及UTF8问题
- MFC中 CString转换为char