stdole2.tlb导入时的问题

wuzhanwei 2003-10-23 09:09:42
我在程序中需要使用iFontDispPtr智能指针,可是我在stdafx.h中做了如下的定义和导入.

//#define __IFontDisp_INTERFACE_DEFINED__
#include <afxwin.h> // MFC core and standard components
#include <afxext.h> // MFC extensions
#include <afxdisp.h> // MFC Automation classes
#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls

#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h> // MFC support for Windows Common Controls

//导入ArcInfo的类库文件
#pragma warning (disable : 4192) // automatically excluding 'Interface' while importing type library
#pragma warning (disable : 4146) // unary minus operator applied to unsigned type
#pragma warning (disable : 4786) //禁掉自动化警告
#import "esricore.olb" raw_interfaces_only,raw_native_types, named_guids, exclude("OLE_COLOR", "OLE_HANDLE")
using namespace esriCore;

#define INITGUID
#import "d:\Program Files\Common Files\system\ado\msado15.dll" rename_namespace("ADODB") rename("EOF", "adoEOF") rename("BOF", "adoBOF")
using namespace ADODB;

//使用ado访问数据库
#import "d:\Program Files\Common Files\system\ole db\oledb32.dll" raw_interfaces_only,exclude("IDBPromptInitialize", "IDataInitialize") no_auto_exclude

#import "D:\WINDOWS\system32\stdole2.tlb" raw_native_types,named_guids,exclude("OLE_COLOR", "OLE_HANDLE","DISPPARAMS","EXCEPINFO")
using namespace stdole;
//导入结束

出错的代码段是:

IFontDispPtr pfont;
pfont->PutName(_bstr_t(name));
pfont->PutSize(textHeight);


现在在使用iFontDispPtr时出现提示的错误信息:

C:\打印程序\showmap\MyLayout.cpp(730) : error C2039: 'PutName' : is not a member of 'IFontDisp'
d:\program files\microsoft visual studio\vc98\include\ocidl.h(4800) : see declaration of 'IFontDisp'
C:\打印程序\showmap\MyLayout.cpp(731) : error C2039: 'PutSize' : is not a member of 'IFontDisp'
d:\program files\microsoft visual studio\vc98\include\ocidl.h(4800) : see declaration of 'IFontDisp'


备注:
在ocidl中也有一个IFontDispPtr的定义,并且和stdole2中的定义不一样,我需要使用stdole2中的IFontDispPtr定义,这个定义有上面提供的方法,请那位兄弟帮忙解决,分不够我可以多给
...全文
192 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
phiger 2003-10-30
  • 打赏
  • 举报
回复
#import "D:\WINDOWS\system32\stdole2.tlb" raw_native_types,named_guids,exclude("OLE_COLOR", "OLE_HANDLE","DISPPARAMS","EXCEPINFO")
using namespace stdole;
这句话中raw_native_types表示你用原始类型,而
IFontDispPtr pfont;
pfont->PutName(_bstr_t(name));
pfont->PutSize(textHeight);
中IFontDispPtr为智能指针!!你可以写成
#import "D:\WINDOWS\system32\stdole2.tlb" named_guids,exclude("OLE_COLOR", "OLE_HANDLE","DISPPARAMS","EXCEPINFO")
using namespace stdole;
wuzhanwei 2003-10-30
  • 打赏
  • 举报
回复
这样我的函数调用不认识这个对象了
Analyst 2003-10-27
  • 打赏
  • 举报
回复
我看了一下,接口名字不叫IFontDisp,而是叫Font,所以你要这么定义。

stdole::FontPtr pfont;
pfont->PutName(_bstr_t(name));
pfont->PutSize(textHeight);
wuzhanwei 2003-10-26
  • 打赏
  • 举报
回复
我加了,也不行。编译还是一样的出错
Analyst 2003-10-23
  • 打赏
  • 举报
回复
加上namespace

stdole::IFontDispPtr pfont;
pfont->PutName(_bstr_t(name));
pfont->PutSize(textHeight);

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧