首先,mfc中的类只能在mfc中用,而且必须有工程属性(mfc),如果想在纯c++环境下使用mfc是非常困难的。
- CFile类
直接支持非缓冲,二进制的磁盘I/O服务,通过它的衍生类,其间接支持文本文件和内存文件。Mfc和CArchive结合使用可以支持mfc对象的序列化
- memset
用于将内存块清零,也可以将指定内存块的前几位赋值,如:memset(buffer,’ *‘,4),即将buffer中的前四个地址赋值为’*’,也可全置空,则为memset(buffer,NULL,255),255是一假定的数字,为实际分配的内存块的大小。
- 关于unicode下ini文件的写入和读取
写入的时候,字符串可以直接写入,如:
::WritePrivateProfileString( _T("基本") , _T("设置背景颜色") , strColorValue , strLinkName );
strColorValue就是通过强制转换将颜色转换为CString类型,然后再写入
注:写入双引号中的内容时,如果是unicode,则必须加”_T”
- 关于CTime类,分别获取各种事件参数
例如:CTime tm;
strValue.Format(“%4d-%2d-%2d %2d:%2d:%2d”,tm.GetCurrentYear(),tm.GetCurrentMonth(),tm.GetCurrentDay(),tm.GetCurrentHour(),tm.GetCurrentMinute(),tm.GetCurrentSecond(),);
获得的strValue为:xxxx-xx-xx xx:xx:xx
- 关于创建xml文档
创建xml文件的时候,现创建一个根节点,然后再创建子节点,再向子节点中插入数据
UpdateData(TRUE);
MSXML2::IXMLDOMDocumentPtr pDoc;
MSXML2::IXMLDOMElementPtr xmlRoot;
//创建DOMDocument对象
HRESULT hr = pDoc.CreateInstance(_uuidof(MSXML2::DOMDocument40));
if (FAILED(hr))
{
MessageBox(_T("无法创建DOM文件对象,检查是否安装MS XML Parser运行库!"));
return;
}
//为DOM文件添加根节点为ROOT
xmlRoot = pDoc->createElement((_bstr_t)"ROOT") ;
pDoc->appendChild(xmlRoot);
- 关于获取文件后缀名
CString strType ;
strType = strLinkName.Right( strLinkName.GetLength()-strLinkName.ReverseFind('.')-1 ) ;
- XML文件的保存
例如 pDoc->save(varLinkName);
strLinkName必须为variant类型的数据,CString 向 variant 类型的转换只需要一步:
_variant_t varLinkName ; //XML文件的保存函数的参数必须为variant
varLinkName = _variant_t(strLinkName);
如上述代码,先定义一个variant变量,然后强制转换即可。
8.向XML文件中插入数据(XML文件要用浏览器打开,unicode为宽字符)
例如:Coordinate->setAttribute( _T("横坐标文字对齐方式"),m_emAxisLabelAlignX ) ;
第一个参数必须为bstr类型,第二个数据必须为variant类型
注:unicode下字符串加上”_T”,如果有多个平行的子节点时,则必须子节点的名字一样,如下:
_variant_t varAxisLabelNameX ;
_variant_t varAxisLabelNameY ;
varAxisLabelNameX = _variant_t( m_strAxisLabelNameX ) ;
varAxisLabelNameY = _variant_t( m_strAxisLabelNameY ) ;
MSXML2::IXMLDOMElementPtr pCoordinate;
/*Group为平行子节点的名字(需与上下文保持一致),Name与上下文也必须一致,“坐标”是区分节点的标识*/
pCoordinate = pDoc->createElement((_bstr_t)"Group") ;
pCoordinate->setAttribute(_T("Name"),_variant_t( _T("坐标") ) ) ;
pCoordinate->setAttribute( _T("横坐标名字"),varAxisLabelNameX ) ;
pCoordinate->setAttribute( _T("纵坐标名字"),varAxisLabelNameY ) ;