国际惯例,先贴代码在解释代码。本次界面如下,怎么创建工程就不说了。
void CMFCApplication2Dlg::OnBnClickedButtonCount()
{
// TODO: Add your control notification handler code here
CString strInput;
GetDlgItemText(IDC_EDIT_INPUT,strInput);
int nLen = strInput.GetLength();
CString strOutPut;
strOutPut.Format(_T("字符串长度:%d, 字符个数: %d"),nLen,nLen);
SetDlgItemText(IDC_STATIC_OUTPUT,strOutPut);
}
void CMFCApplication2Dlg::OnBnClickedButtonClear()
{
// TODO: Add your control notification handler code here
CString str;
int nLen = 0;
str.Format(_T("字符串长度:%d, 字符个数: %d"),nLen,nLen);
SetDlgItemText(IDC_STATIC_OUTPUT, str);
CString sstr;
SetDlgItemText(IDC_EDIT_INPUT,sstr);
}
注解:
MFC虽然使用C++语法但是好多细节问题和C++有所不同,MFC之所以比较好用个人认为就是微软设计的类库比较强大,基本上能用到了全都有。
第一个细节问题:
MFC使用的字符串是CString,这个字符串是不可以随便赋值的,比如CString str = "1";是不被允许的,个人理解是这个字符串是标准C++字符串,和MFC的不一样,
第二个细节:CString.Format()
这个理解成类型转换比较好,放一篇博文 https://blog.csdn.net/wangkaishou/article/details/5846152 讲的很详细。
对于_t和L :
_T是一个宏,如果项目使用了Unicode字符集(定义了UNICODE宏),则自动在字符串前面加上L,否则字符串不变。因此,Visual C++里边定义字符串的时候,用_T来保证兼容性。VC支持ascii和unicode两种字符类型,用_T可以保证从ascii编码类型转换到unicode编码类型的时候,程序不需要修改。
可以参考博文:https://blog.csdn.net/u010003835/article/details/47606621
第三个细节:库函数真的好用
GetDlgItemText(IDC_EDIT_INPUT,strInput);
SetDlgItemText(IDC_STATIC_OUTPUT,strOutPut);
从函数名字就知道这个API是干什么的,例如Get是获取,set是写入,Dlg是界面ItemText是选择文本,其中的第一个参数就是控件的ID,第二个参数是存储变量。