求助:各位大哥,俩帮我看看这几个 com 问题,好吗?谢谢4!

MJXQJ888 2008-12-12 09:47:55
请教:

问题一:
接口包括很多函数,那么初始化接口,
就初始化了接口里的所有函数,是不?

问题二:
void MyTest(void)
{
::CoInitialize( NULL );//初始化句柄

HRESULT hr; //返回值
// {000209FF-0000-0000-C000-000000000046} = word.application.9
CLSID clsid = {0x209ff,0,0,{0xc0,0,0,0,0,0,0,0x46}}; //这个是什么?
LPOLESTR lpwProgID = NULL;//字符串(空间会自己分配)

hr = ::ProgIDFromCLSID( clsid, &lpwProgID ); //得到 ProgID
if ( SUCCEEDED(hr) )
{
::MessageBoxW( NULL, lpwProgID, L"ProgID", MB_OK );

IMalloc * pMalloc = NULL; //这个是什么?
hr = ::CoGetMalloc( 1, &pMalloc ); // 取得 IMalloc
if ( SUCCEEDED(hr) )
{
pMalloc->Free( lpwProgID ); // 释放ProgID内存
pMalloc->Release(); // 释放IMalloc
}

}

::CoUninitialize();
}

这里

1:
IMalloc * pMalloc = NULL; //这个是什么?
hr = ::CoGetMalloc( 1, &pMalloc ); // 取得 IMalloc
if ( SUCCEEDED(hr) )
{
pMalloc->Free( lpwProgID ); // 释放ProgID内存
pMalloc->Release(); // 释放IMalloc
}

这里为什么还要写段程序呢?
目的是不是为了释放 lpwProgID 内存?

2:
lpwProgID 内存的内存不会自动释放吗?

3:
pMalloc 是内存管理接口,是不?
是管理所有的接口的内存?


问题三:
我用这样的步骤新建了一个工程:
新建一个 vc++ 的 ATL 项目。示例程序叫 Simple2,并选择DLL方式

可是在 Simple2 文件夹里有两个 *.vcproj
分别是: Simple2.vcproj 和 Simple2PS.vcproj
到底是哪个呢?
如果我按 75 编译,编译是 Simple2.vcproj 还是 Simple2PS.vcproj?
编译后会产生什么特殊的文件(像一般应用程序,就产生一个有用的 *.exe)?

谢谢!


...全文
51 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
UDX协议 2008-12-12
  • 打赏
  • 举报
回复
1,函授不需要初使化。产生了接口,函授就可以使用了。

2. a,是,b不会,c.是内存分配器,但不是管理所有的接口的内存。

3.这是一个工程。

你最好找本书看看,都太基本了。

2,554

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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