ATL中的可以单独使用的工具类

ATL中的可以单独使用的工具类

作者:Carfield

转载:http://blog.joycode.com/peon/

参考: 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中就有了,大家也都很熟悉,就不多介绍了 。

3.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

}

4.编码装换,下面是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;
}

void UTF8Convert()
{
char buf[128];
memset( buf , 0 , 128 );
int n = AtlUnicodeToUTF8( L"复件" , 2 , buf , 128 );

printHex( (BYTE*)buf ,n );
}

5. CATLRegExp 正则表达式工具,msdn中有例子,这里也贴一下

CAtlRegExp<> regexp;
CAtlREMatchContext<> mc;
// match any line that starts with any number of digits,
// has a dash, and ends with any number of digits
if(regexp.Parse("^//d+-//d+$") == REPARSE_ERROR_OK)
{
const char* szNumDashNum="5663-4662";
if(regexp.Match(szNumDashNum, &mc)) { ATLTRACE("Matched"); }
}

(全文完)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Eclipse使用ATLAtlas Transformation Language)可以通过以下步骤进行: 1. 下载并安装Eclipse。确保已经安装了Java开发环境(JDK)。 2. 打开Eclipse,选择“Help”菜单,然后选择“Eclipse Marketplace”。 3. 在Marketplace搜索框输入“ATL”,然后点击“Go”按钮。 4. 在搜索结果,选择适合你Eclipse版本的ATL插件,并点击“Install”进行安装。跟随向导进行插件的安装过程。 5. 安装完成后,重启Eclipse以使插件生效。 6. 创建一个ATL项目。选择“File”菜单,然后选择“New”,再选择“ATL Project”。按照向导的指导创建新的ATL项目。 7. 在ATL项目,你可以创建ATL模型转换规则。right-click on the ATL project,选择“New”,再选择“ATL Transformation”,并按照向导的指导填写转换规则的名称和其他细节。 8. 在转换规则文件,你可以定义源模型和目标模型的元模型,以及进行模型的转换和映射。你可以使用ATL提供的语法和函数来定义和操作模型的转换规则。 9. 完成转换规则的编写后,你可以在Eclipse运行和测试转换。右键单击转换规则文件,选择“Run As”然后选择“ATL Transformation Launcher”。输入源模型和输出模型的路径(可以在工程目录下)并运行转换。 10. 查看转换结果。你可以在Eclipse查看源模型和目标模型的变化,以及转换过程的错误和警告信息。 通过以上步骤,你可以在Eclipse使用ATL完成模型转换任务。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值