CString转为char* unicode,MFC中的使用

MFC中添加图片,现将图片加入到资源

[cpp]  view plain  copy
  1. 加入升级成功的图片  
  2. //CBitmap bitmap;  
  3. //bitmap.LoadBitmapW(IDI_ICON1);  
  4. //CStatic *p = (CStatic*)GetDlgItem(showPic);  
  5. //p->ModifyStyle(0xf, SS_BITMAP | SS_CENTERIMAGE);  
  6. 将图片设置到Picture控件上  
  7. //p->SetBitmap(bitmap);  


..给一个文本框赋值

[csharp]  view plain  copy
  1. GetDlgItem(IDC_EDIT_value)->SetWindowText(_T("Wcnt"));  


..对话框

[cpp]  view plain  copy
  1. CString FilePathName;  
  2. CFileDialog dlg(TRUE);  
  3. if (dlg.DoModal() == IDOK)  
  4. {  
  5.     FilePathName = dlg.GetPathName();           //这样可以打开并获得你选择文件的完整路径  
  6. }  
  7. GetDlgItem(IDC_EDIT3)->SetWindowText(FilePathName);  


.

[cpp]  view plain  copy
  1. BOOL isOpen = TRUE;     //是否打开(否则为保存)    
  2. CString defaultDir = L"E:\\FileTest";   //默认打开的文件路径    
  3. CString fileName = L"";         //默认打开的文件名    
  4. CString filter = L"文件 ( *.hex)|*.hex||";   //文件过虑的类型    
  5. CFileDialog openFileDlg(isOpen, defaultDir, fileName, OFN_HIDEREADONLY | OFN_READONLY, filter, NULL);  
  6. openFileDlg.GetOFN().lpstrInitialDir = L"E:\\FileTest\\test.doc";  
  7. INT_PTR result = openFileDlg.DoModal();  
  8. CString filePath;  
  9. if (result == IDOK) {  
  10.     filePath = openFileDlg.GetPathName();  
  11. }  
  12. CWnd::SetDlgItemTextW(IDC_EDIT3, filePath);  

..typedef char * LPSTR ,类型重命名,CString转为char* Unicode


[cpp]  view plain  copy
  1. BOOL isOpen = TRUE;     //是否打开(否则为保存)    
  2. CString defaultDir = L"E:\\FileTest";   //默认打开的文件路径    
  3. CString fileName = L"";         //默认打开的文件名    
  4. CString filter = L"文件 ( *.hex)|*.hex||";   //文件过虑的类型    
  5. CFileDialog openFileDlg(isOpen, defaultDir, fileName, OFN_HIDEREADONLY | OFN_READONLY, filter, NULL);  
  6. openFileDlg.GetOFN().lpstrInitialDir = L"E:\\FileTest\\test.doc";  
  7. INT_PTR result = openFileDlg.DoModal();  
  8. CString filePath;  
  9. if (result == IDOK) {  
  10.     filePath = openFileDlg.GetPathName();  
  11. }  
  12. CWnd::SetDlgItemTextW(IDC_EDIT3, filePath);  
  13.   
  14. int ALength = WideCharToMultiByte(CP_ACP, 0, filePath, -1, NULL, 0, NULL, NULL);  
  15. LPSTR pszA = (LPSTR)_alloca(ALength + 1);  
  16. WideCharToMultiByte(CP_ACP, 0, filePath, -1, pszA, ALength, NULL, NULL);  
  17. pszA[ALength] = 0;    
  18.   
  19. CString str(pszA);  
  20.   
  21. //将Cstring赋值给char*  或者char[]  
  22. //apGetHexFilePath = (LPSTR)(LPCTSTR)filePath; //指向了首地址  
  23. //上面这种强制类型转换只会返回第一个字符  
  24. apGetHexFilePath = pszA;  


。CString的用法

[csharp]  view plain  copy
  1. 在使用MFC的过程中,不可避免的要使用CString类型对字符串进行处理,特别常用的是CString与char*等类型的转换,现将平时常用的方法整理如下。  
  2. 1.CString类型的初始化  
  3. CString str;  
  4. CString str1(L"abc");  
  5. CString str2 = _T("defg");  
  6.   
  7. 2.CString类型字符串的基本操作  
  8. 获取字符串的长度:GetLength();  
  9. 是否为空,即不含字符:IsEmpty();  
  10. 清空字符串:Empty();  
  11. 大小写转换:MakeUpper()、MakeLower()  
  12. 转换字符串中字符的顺序:MakeReverse()  
  13. 字符串的连接:+、+=  
  14. 字符串的比较:==、!=、Compare(区分大小写)、CompareNoCase(不区分大小写)  
  15. 3.字符串的查找  
  16. Find():从指定位置开始查找指定的字符或者字符串,返回其位置,找不到返回 -1。  
  17. ReverseFind():从字符串末尾开始查找指定的字符,返回其位置,找不到返回 -1,虽然是从后向前查找,但是位置为从开始算起。  
  18. FindOneOf():查找参数中给定字符串中的任意字符,返回第一次出现的位置,找不到返回-1。  
  19.   
  20. 4.字符串的替换和删除  
  21. Replace():替换 CString 对象中的指定的字符或者字符串,返回替换的个数,无匹配字符返回0。  
  22. Remove():删除CString 对象中的指定字符,返回删除字符的个数,有多个时都会删除。  
  23. Delete():删除 CString 对象中的指定位置的字符,返回处理后的字符串长度。  
  24.   
  25. 5.字符串的提取  
  26.  Left(字符数量 ):从左边提取若干字符。  
  27. Mid(起始位置,字符数 ):从指定位置开始提取若干字符,字符数若省略则提取到字符串结尾处。  
  28. Right(字符数量 ):从右边提取若干字符。  
  29. 以上函数分别从字符串的左中右实现对字符串的提取操作。  
  30. 示例:   
  31. CString str(_T("abcd"));  
  32. CString strResult = str.Left(2); //strResult == ab  
  33. strResult = str.Mid(1); //strResult == bcd  
  34. strResult = str.Mid(0, 2); //strResult == ab  
  35. strResult = str.Right(2); //strResult == cd  
  36.   
  37. 6.类型转换  
  38.  intchar*等类型向CString类型转换时使用CString的Format()函数  
  39. char*类型的可以直接赋值给CString类型  
  40. CString str;  
  41. str = "abc";  
  42. char *p = "defg";  
  43. str = p;  
  44. CString转换成char*  
  45. CString g_str;  
  46. USES_CONVERSION;  
  47.   
  48. char *  
  49. char *str = T2A(g_str);  
  50.   
  51. 或  
  52. char *str =g_str.GetBuffer(g_str.GetLength());  
  53.   
  54. CString类型转换成int 类型  
  55. CString str1(_T("123"));  
  56. int num = _ttoi(str1);  


1、将CString类型转为int型

[cpp]  view plain  copy
  1. //在这里判断下版本信息,是否决定要继续升级,将版本号转为了16进制,3002(十进制)--》bba(16进制)  
  2. uint32_t firversion = _ttoi(firVersionComp);  
  3. uint32_t devversion = _ttoi(deviceVersionComp);  


2、CString赋初值

[cpp]  view plain  copy
  1. CString firVersionComp=_T("0.0.0.0");  
  2. 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. 一、设置静态文本  大小 字体 颜色  
  2.   
  3. 1.首先,在对话框上添加一个Static控件,关联一个控制变量m_static(不是Value,是Control)  
  4.   
  5. 2.声明变量  
  6.    private:    
  7.      CFont m_Font;   
  8. 3.然后,在对话框初始化中添加下列代码即可  
  9. BOOL CTransstaDlg::OnInitDialog()  
  10. {  
  11.     //设置Static字体  
  12.     m_Font.CreatePointFont(300, "Arial", NULL);  
  13.     m_static.SetFont(&m_Font,true);  
  14.     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
  1. CString msg;  
  2. msg.Format(L"The current version is %s, \n Do you want to upgrade to %s?", DeviceVersion,firVersion);  
  3. AfxMessageBox(msg, MB_OKCANCEL | MB_ICONQUESTION);  
  4.   
  5. //int nResult = AfxMessageBox(L"Abc", 1, 0);  
  6.   
  7. if(AfxMessageBox(L"Abc", 1, 0) == IDOK)  
  8. {  
  9. }  
  10.     // Do something if you choose is OK.  
  11. else  
  12.     // Do something if you choose CANCEL  
  13. {  
  14. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值