请问CoCreateInstance创建了COM控件后接下来如何在窗口中显示它?

sproll 2005-12-03 06:33:27
我这样子创建的:

CLSID CLSID_FLASH
= { 0xd27cdb6e, 0xae6d, 0x11cf, { 0x96, 0xb8, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0 } };

IShockwaveFlash * pIFlash;

HRESULT hr = CoCreateInstance( CLSID_FLASH, NULL, CLSCTX_INPROC,
IID_IUnknown, (void**)&pIFlash );
if (FAILED(hr))
{
TRACE( "\nError" );
}
...全文
317 5 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
sproll 2005-12-06
wshcdr:
IShockwaveFlash是vc根据控件文件自动生成的接口类,没有SHOW方法。
krh2001(边城浪子) :
如果控件正确注册的话,使用VC7"添加类"->"ActiveX控件中的MFC类",然后选择根据注册表可以生成一继承自CWnd的类,那就可以用Create,不过我想纯粹使用COM接口或者ATL而不是MFC或者API创建控件。
谢谢firmbird(firmbird) ,loverx(烟花) ,我想你们的方法更接近我要找的。

要动态地加载控件,需要创建一个“AtlAxWin7”宿主窗口并指定此窗口应承载的控件。执行此操作主要有两种方法:

使用标准窗口创建 API 和 ATL 宿主 API。此技术在知识库文章“Adding ATL Control Containment Support to Any Window”(Q192560) 中进行了描述。可以在 MSDN Library 中或 http://support.microsoft.com 上找到知识库文章。



按照如下所述使用 CAxWindow 类:
确保已经调用 AtlAxWinInit。
AtlAxWinInit();
AtlAxWinInit 初始化控件宿主代码。

创建一个 CAxWindow 对象:
CAxWindow wnd;
CAxWindow 是一个从 CWindow 派生的用于创建和操作“AtlAxWin7”窗口的包装。

通过调用 Create 创建宿主窗口和控件。
RECT rect = { 0, 0, 100, 100 };
wnd.Create(m_hWnd, rect, _T("MSCAL.Calendar"), WS_CHILD |
WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, WS_EX_CLIENTEDGE);
传递给 Create 函数的窗口标题(第三个参数)是一个标识要创建的控件的字符串。该字符串可以是一个 CLSID(带有大括号)、ProgID、URL 或原始 HTML(以 MSHTML: 为前缀)。如果提供了 URL 或原始 HTML,则 Web 浏览器将与此信息一起加载。
  • 打赏
  • 举报
回复
loverx 2005-12-04
static CAxWindow WinContainer;
static CComPtr pFlash;

RECT rc;
GetClientRect(hWnd,&rc);
WinContainer.Create(hWnd,&rc,LPCTSTR("ShockwaveFlash.ShockwaveFlash"),WS_CHILD | WS_VISIBLE);
HRESULT hr;
hr = WinContainer.QueryControl(__uuidof(IShockwaveFlash),(void**)&pFlash);
  • 打赏
  • 举报
回复
firmbird 2005-12-04
ATLAPI AtlAxAttachControl(
IUnknown* pControl,
HWND hWnd,
IUnknown** ppUnkContainer
);
  • 打赏
  • 举报
回复
jerry 2005-12-03
CWnd m_wnd;


m_wnd.CreateContorl( CLSID_FLASH, NULL, WS_CHILD|WS_VISIBLE,rc, parentWnd, 1 );

应该这样创建控件。
  • 打赏
  • 举报
回复
wshcdr 2005-12-03
IShockwaveFlash
去查 IShockwaveFlash 接口, 应该有Show一类的函数
  • 打赏
  • 举报
回复
相关推荐
发帖
ATL

3233

社区成员

ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
帖子事件
创建了帖子
2005-12-03 06:33
社区公告
暂无公告