扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
使用属性
有两种方法可以向工程中插入属性:
· 手工插入到源代码中。
· 使用向导
在向导中使用属性所要作的只是确定合适的复选框的选中状态。例如:
这个例子演示了如何通过删除你所不需要修改的代码,对你所实现的代码进行简化的。IID,UUID,ProgID等等在设计时已经为你综合了。在作为产品使用时,建议你使用支持指定期望值的属性。本例需要指出的还有没有为属性化对象提供IDL文件。
为了实现ATL类的简单的事件下沉,你需要手工向类中增加event_receiver属性下面的CmyReceiver属性。此属性然后由微软Visual C++? 编译器编译,它将用正确的代码代替属性,并将代码直接插入到对象文件中。
[event_receiver(com)] class CMyReceiver { void handler1(int i) { ... } void handler2(int i, float j) { ... } } |
然后你就可以设置CmyReceiver的方法andler1 和 handler2处理来自事件源的事件(使用固有的函数__hook)。
在建立阶段,编译器将识别源文件中属性的当前表示,并能动态地分析和和验证。象从前一样,当工程建立时,编译器分析每个C++源文件,生成对象文件。然而,当编译器遇到一个属性时,它进行分析并在语法上验证。编译器然后动态地调用一个属性提供者插入代码,或在编译时作出其它修改。在这方面,属性行为与编译时向导非常相象。
下图显示了编译器与属性提供者间的关系。
注意: 属性的使用不会改变原始源文件的内容。开发人员可以为工程的每个源文件创建一个文本文件,显示属性被替代后的结果。
与大多数C++构造一样,属性也有一组特性定义了它们的正确用法。这被称为属性上下文,并且每个引用主题都存在于表中。例如coclass属性可以应用到一个现有类,而cpp_quote属性可以插入到C++源文件的任何地方。
OLE DB 示例
OLE DB提供了很多使用属性的示例。下面的代码是由下一代的Visual C++向导生成的,它使用了属性。代码显示了绑定到一个数据库表是多么容易。
总结
属性为开发人员以一种开放的感觉生成组件提供了简单而有生产率的方式。它们可以从ATL或微软基础类库(MFC)中使用,而不会减少两者的功能。下一代Visual C++将能够识别源文件中的属性,在编译时动态对它们动态地分析和验证。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者