首页 > 学院 > 开发设计 > 正文

20170302MFC01_Edit&Button&List&ComboBox

2019-11-06 07:19:48
字体:
来源:转载
供稿:网友

MFC:

1:MFC是什么:MFC是Windows下的一套应用程序开发框架,是一整套,在Windows下,只要会使用MFC就可以写出很多程序。2:MFC现在是没落期,上个世纪,应用程序行业几乎是MFC统一了天下,Win98,Win2000,xp时代,几乎所有软件都是MFC开发的。3:竞争对手:QT:也是一套应用程序的开发框架。  注意:我们更加在乎的是和用户交互的部分,指的是我们长期用鼠标点的那些东西。MFC和QT都是应用程序开发框架,应用程序开发框架是一个很大的概念,导致他们非常庞大,我们往往用不了这么多的功能。我们希望的是使用一些纯粹的东西,现在流行的是使用DUI(直接界面的技术),Duilib是开源项目(已经死了),几乎每个大公司都有自己的DUI库,MFC和QT开始没落。07年的时候,几乎每个公司都在找MFC的人才。4:为什么我们现在还要学习MFC:MFC无法给我们提供一套完善的可商业化的界面了(360界面就算一个完善的界面),MFC只是可以提供一套可用的界面,我们可以写一些小程序。因为MFC足够简单,是Windows下的一套精典(有很多设计模式)。5:新建工程:直接简历解决方案,在解决方案里面添加很多的Demo项目,方便以后的查看。6:MFC对话框就是所见及所得,能够看得到的。

Edit控件:

1:属性里面需要注意的有Multiline(决定是否可以多行),Horizontal Scrol和Vertical Scrol(横纵滚动条),Auto HScroll,Auto VScroll(自动移动)。2:使用MFC控件最重要的地方是每个控件的ID,这个一定要改。3:GetDlgItemText,有多个版本(GetDlgItemText,GetDlgItemTextA,GetDlgItemTextW),推荐都使用W版本(宽字节),其他两个函数最终都是调用的W版本的。    注意:GetDlgItemText会根据编码来决定调用A还是W,其实就是一个宏。A版本会将传进来的字符集转化为unicode然后再调用W版本。4:使用unicode的字符集,我们统一使用L""来写,_T,和TEXT都是宏,他会匹配我们的编码,根据编码最选择,是最坑的。建议任何函数都使用unicode编码。老师建议:任何MFC程序不要使用不带后缀的函数(都是宏来实现判断),用这种(_T,Text,不带后缀的函数)的时候,我们不知道具体是宽字节函数窄字节,这是相当坑的。就是Windows里面大量的宏把这些复杂化。所谓的那些宏也只是可以让不同字符集下编译通过,并不能使之完美执行。5:CString类型:是MFC里面的字符串类型,和C++里面的string功能类似。MFC里面所有的默认接收类型都是CString,对于CString是否也要使用W版本,起始就没必要了,仅函数一定要使用W版本。
void CEditDemoDlg::OnBnClickedBtnCount(){	// TODO:  在此添加控件通知处理程序代码//	MessageBox(nullptr, L"I Love Mark!", MB_OK);	CString strInput;	if (0 == GetDlgItemTextW(IDC_EDIT_INPUT, strInput))	{		SetDlgItemTextW(IDC_OUTPUT, L"获取统计资料失败!");		return;	}	else	{		CString strOutput;		strOutput.Format(L"%d", strInput.GetLength());		SetDlgItemTextW(IDC_OUTPUT, strOutput);	}}

ComboBox:

需要注意的属性是:    1:Sort,自动排序。    2:Type:Drop List;Dropdown;Simple    3:Data:可以添加下拉选项。一般不用。
		int nIndex = m_cobDemo.AddString(strInput);		m_cobDemo.SetCurSel(nIndex);		nIndex = m_cobDemo.GetCurSel();

ListBox:

需要注意的属性:    1:Sort,排序。    2:程序示例
		nIndex = m_listDemo.AddString(strInput);		m_listDemo.SetCurSel(nIndex);		m_listDemo.DeleteString(nIndex);		nIndex = m_listDemo.GetCount();
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表