社本@元ネオニート Blog

社本@元ネオニート (元々ワック) のいたずら書き (for Programmers)

AILight Banner
AILight Blog

プロフィール

社本@元ネオニート Blog
働いたら負けかなと思っていたのですが。。とうとう働き始めました。アメリカのシアトル・エリアにある企業向けのバックアップソフトを開発している会社です。日本人は私だけ。なんとか。。やっていけてるようです。

目次

Blog 利用状況

記事分類

過去の記事

タグ

サイトの取得 - COM/ActiveX

以下のように対象によって、実装しているインターフェースが異なるのですが、
面倒なのでどっちでもサイトを取得できるようにアップデートしました。
#たいしたもんじゃないんだけど、一応、公開しとこうかと。。

・UIアリのActiveXコントロールの場合 : IOleObject
・UIナシの単なるCOMオブジェクトの場合 : IObjectWithSite


---
 static IUnknownPtr GetUnkSite(IUnknownPtr spUnk)
 {
  if (spUnk == NULL)
  {
   return NULL;
  }

  HRESULT hr = S_OK;

  IObjectWithSitePtr spObjectWithSite = spUnk;
  if (spObjectWithSite != NULL)
  {
   IUnknownPtr spUnkSite;
   hr = spObjectWithSite->GetSite(__uuidof(IUnknown), (void**)&spUnkSite);
   if (FAILED(hr))
   {
    return NULL;
   }

   return spUnkSite;
  }

  IOleObjectPtr spOleObject = spUnk;
  if (spOleObject != NULL)
  {
   IOleClientSitePtr spOleClientSite;
   hr = spOleObject->GetClientSite(&spOleClientSite);
   if (FAILED(hr))
   {
    return NULL;
   }

   return spOleClientSite;
  }

  return NULL;
 }
/*
 static IUnknownPtr GetUnkSite_IObjectWithSite(IObjectWithSitePtr spObjectWithSite)
 {
  if (spObjectWithSite == NULL)
  {
   return NULL;
  }

  HRESULT hr = S_OK;

  IUnknownPtr spUnkSite;
  hr = spObjectWithSite->GetSite(__uuidof(IUnknown), (void**)&spUnkSite);
  if (FAILED(hr))
  {
   return NULL;
  }

  return spUnkSite;
 }
 static IUnknownPtr GetUnkSite_IOleObject(IOleObjectPtr spOleObject)
 {
  if (spOleObject == NULL)
  {
   return NULL;
  }

  HRESULT hr = S_OK;

  IOleClientSitePtr spOleClientSite;
  hr = spOleObject->GetClientSite(&spOleClientSite);
  if (FAILED(hr))
  {
   return NULL;
  }

  return spOleClientSite;
 }
*/
---

投稿日時 : 2005年9月1日 23:46


コメントを追加

タイトル
名前
URL
コメント