摘要:参考: http://www.codeproject.com/atl/atlserver.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/vclrfATLServerReference.asp
ATL7中除了制作COM和windows组件的大量的工具,还提供了大量的工具类,可以让我们在C++编程方面事半功倍。
微软在MFC中提供的大都是GUI的工具类,对于组件设计和一些服务的编程,未免有力有不逮的地方,ATL除了作为一个FrameWork作为MFC的补充外,还有很多可以单独抽出来使用的工具类,大大方便了我们的编程工作, 特别是在ATL7中,增加了很多这样的工具类,让我们瞧瞧:
1.首先要说的就是CString了,大家对她的感情自然不必多说,以往只有MFC才可以使用未免让人觉得可惜,甚至成为一些人在ATL组件中包含MFC的理由,现在也包含在ATL中了,只要#include? 〈atlstr.h〉就可以了。同样的可以在ATL中使用的还有CSize , CRect ,CPoint 等等。
2.CRegKey,操作注册表的好东东,因为在ATL3中就有了,大家也都很熟悉,就不多介绍了 。
2.HASH工具 - 下面是一个MD5代码:要包含atlcrypt.h头文件
void TestMd5Hash(){?const char* szPassword = "real9video.rm?ts=2003-12-23-16-23-9";?CCryptProv prov;??HRESULT hr = prov.Initialize();?if( hr == 0x8009016L )???prov.Initialize( PROV_RSA_FULL,NULL,MS_DEF_PROV,CRYPT_NEWKEYSET );
?//这个其实和下面的代码差不多??//CCryptKeyedHash? hash;?//hash.Initialize(prov, CALG_MD5, CCryptKey::EmptyKey, 0);?CCryptMD5Hash hash;?hash.Initialize( prov );?hash.AddString( szPassword );??BYTE buf[1024];?DWORD outLen;?hash.GetValue( buf , &outLen? );
?printHex( buf , outLen );//这个大家自己实现,打印byte数组的内容
//应该是 BC CB 76 69 78 CF AB 4B 8 D E9 42 32 B0 88 9C
}
3.编码装换,下面是Base64和UTF8的转换,要包含atlenc.h
void Base64(){?CString sSource = "some string";?int nDestLen = Base64EncodeGetRequiredLength(sSource.GetLength());?CString str64;?Base64Encode((const BYTE*)(LPCSTR)sSource, sSource.GetLength(),str64.GetBuffer(nDestLen), &nDestLen);?str64.ReleaseBuffer(nDestLen);?cout<<(LPCSTR)str64;
?int nDecLen = Base64DecodeGetRequiredLength(nDestLen);?CString strOrig;?Base64Decode(str64, str64.GetLength(), (BYTE*)strOrig.GetBuffer(nDecLen),????????????? &nDecLen);?strOrig.ReleaseBuffer(nDecLen);?cout<<(LPCSTR)strOrig<阅读全文]