vc++中的import的使用

#import 指令
1. C++中使用 COM 简单的方法是用 #import 导入 type library
2. # import 指令将 COM 产生对应的 C++类别,可以用接近於VBScript和Visual Basic的语句操作 COM
3. 使用 #import 命令就可以将该文件导入到我们的程式码中。type library 的内容将被转换为描述了 COM Interface 的 COM smart pointer
4. 语法
 #import  "filename" [attributes]
 #import  <filename> [attributes]
   attributes: 
 用来通知编译器修改 type library header 的内文。可以使用空白或逗号分隔 attribute。该选项为选择性。如果 attribute 太多,可以使用 \ 断行分隔
 a) auto_rename
 b) auto_search 
 c) embedded_idl
 d) exclude
 e) high_method_prefix
 f) high_property_prefixes
 g) implementation_only
 h) include() 
 i) inject_statement
 j) named_guids
 k) no_auto_exclude
 l) no_dual_interfaces
 m) no_implementation no_namespace 
 n) no_search_namespace
 o) no_smart_pointers
 p) raw_dispinterfaces
 q) raw_interfaces_only
 r) raw_method_prefix
 s) raw_native_types
 t) raw_property_prefixes
 u) rename
 v) rename_namespace
 w) rename_search_namespace
 x) tlbid 
   filename:
 你想要汇入的 type library,可以指定的值如下
 a) type library (.tlb, .odl): #import "drawctl.tlb"
 b) ProgID: #import "progid:my.prog.id.1.5"
    可以额外指定地区ID和版本号码,如下:
    #import "progid:my.prog.id" lcid("0") version("4.0)
    假如没有指定地区 ID 会依循下列规则自动选择
    1) 假如只有一个地区 ID 就直接使用 
    2) 假如有多个地区 ID,选择版本编号的第一码为 0, 9 或 499 的使用
    3) 假如有多个地区 ID,且版本编号的第一码为 0, 9 或 499 有多个可以选择,则选用最後一个
    4) 假如没有指定版本号码,则使用最近的版本号码
 c) type library ID: #import "libid:12341234-1234-1234-1234-123412341234" version("4.0") lcid("9")
 d) 一个可执行档(.exe)
 e) 包含 type library 资讯的 dll
 f) 内含 type library 的文件
 g) 任何可被 LoadTypeLib 接受的档案
 filename 如果为一个实体档案,会依循下面的规则进行搜寻
 1) #import 中指定的路径
 2) 引用该档案的程式所在路径
 3) PATH 环境变数
 4) LIB 环境变数
 5) 编译器选项 /I 指定的路径
5. #import 产生的 header 档
   包含类似 MIDL(Microsoft Interface Definition Language) 产生的主要 header 档,但是包含额外的编译器产生的程式码和资料。该档案和 type library 具有相同的名称但附档名为 .tlh。第二个 header 档也具有和 type library 相同的档名,但附档名为 .tli。他内含编译器产生的成员函式的实作,且该 header 被包含在主要 header 档(.tlh)中。
   假如并入(import)一个包含 byref 参数的 dispinterface property, #import 将不会产生 __declspec (property) 叙述
   这两个 header 放置在  /Fo 指定的目录,
   #import 在接到 type library 同时间会产生 header 档。当 #import 处理完,编译器会检查档案是否存在并且日期够新。假如条件吻合则不重新建立。
   #import 指令也可以放在预先编译的 header 中,详请参考 http://msdn.microsoft.com/library/en-us/vccore/html/_core_Creating_Precompiled_Header_Files.asp
6. 主要的 header (.tlh)包含七个部分   
   a) 固定的标头:包含注解、#include "COMDEF.h"和其他安装资讯
   b) 向前参照和 typdef
   c) 智慧型指标宣告:样板类别 _com_ptr_t 属於一个智慧型指标,该类别封装了介面指标并排除呼叫 AddRef, Release, QueryInterface 等繁琐的步骤。另外也隐藏了 CoCreateInstance 建立一个新的 COM 物件的呼叫。这个部分使用 _COM_SMARTPTR_TYPEDEF 来产生特异化(Specialization)版本的 _com_ptr_t 类别。例如:
 _COM_SMARTPTR_TYPEDEF(IMyInterface, __uuidof(IMyInterface));
 编译器会将上述的程式扩展成
 typedef _com_ptr_t<_com_IIID<IMyInterface, __uuidof(IMyInterface)> > IMyInterfacePtr;
   d) Typeinfo 宣告
   e) 旧型 GUIDE 定义:选择性部分,包含命名过的 GUID 常数 ,命名类似 CLSID_CoClass 和 IID_Interface,类似 MIDL 编译器产生的资料
   f) #include 第二个 header (*.tli)
   g) 档尾: #pragma pack(pop)
7. 使用 type library 可以用全域的解析或是明确的使用 namespace,如下
 using namespace MyLib;
   该程式码必须加在 #import 之後。
   可以使用 no_namespace attribute 不需指定 namespace,不过可能发生名称冲突。也可以使用 rename_namespace attribute 变更 namespace 名称。
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明
VC(Visual C++)是一种编程语言,而MFC(Microsoft Foundation Class)是一种C++的库,它提供了一系列的类和函数来开发Windows应用程序。在使用MFC操作Excel文件时,我们通常可以利用COM(Component Object Model)来实现。 首先,我们需要在项目引入Excel的类型库,然后通过MFC的类COleDispatchDriver来实例化Excel应用程序对象。通过调用相关的函数和方法,我们可以打开Excel文件、读取或写入数据、格式化单元格等操作。 具体操作步骤如下: 1. 在项目的stdafx.h添加以下代码来引入Excel类型库: ``` #import "path_to_Excel_tlb" named_guids ``` 2. 在需要操作Excel的地方,首先实例化Excel应用程序对象: ``` CApplication excel; excel.CreateDispatch(_T("Excel.Application")); ``` 3. 打开Excel文件并激活工作簿: ``` Workbooks workbooks; Workbook workbook; Worksheets worksheets; Worksheet worksheet; workbooks = excel.get_Workbooks(); workbook = workbooks.Open(_T("path_to_excel_file")); worksheets = workbook.get_Worksheets(); worksheet = worksheets.get_Item(COleVariant((short)1)); worksheet.Activate(); ``` 4. 对Excel文件进行读取或写入操作: ``` // 读取单元格数据 Range range; range = worksheet.get_Range(COleVariant(_T("A1"))); CString value = range.get_Value(); // 写入单元格数据 range.put_Value(COleVariant(_T("Hello, World!"))); ``` 5. 对Excel文件进行格式化操作: ``` // 设置单元格字体样式 range.put_FontName(COleVariant(_T("Arial"))); range.put_FontSize(12); // 设置单元格边框样式 Borders borders = range.get_Borders(); for (int i = 1; i <= 4; i++) { Border border = borders.get_Item(COleVariant((short)i)); border.put_LineStyle(xlContinuous); border.put_Weight(xlThin); } ``` 6. 最后,记得关闭Excel工作簿和退出Excel应用程序: ``` workbook.Close(); excel.Quit(); ``` 通过上述步骤,我们可以使用VC的MFC来操作Excel文件,实现了读取、写入和格式化等功能。当然,在实际应用,还可以根据需求进行更多的操作和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值