社本@元ネオニート Blog

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

AILight Banner
AILight Blog

プロフィール

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

目次

Blog 利用状況

記事分類

過去の記事

タグ

IOleCommandTargetを使ったUpdateUI - WTL

Active X Documentのための作られたIOleCommandTargetを使った
UpdateUIの仕組みを、WTL用に作ってみました。(何年も前の話だけど)

---
template <class T>
class COleCommandUpdateUI : public CUpdateUI<T>
{
public:
 COleCommandUpdateUI()
 {
 }
 virtual ~COleCommandUpdateUI()
 {
 }

public:
 // OLECMDF を元にUIの更新を行う
 void UpdateUIFromOleCommand(UINT nID, const GUID* pguidCmdGroup, ULONG cmdID)
 {
  T* pT = static_cast<T*>(this);

  HRESULT hr = S_OK;

  IOleCommandTargetPtr spOleCommandTarget = pT->GetUnknown();
  if (spOleCommandTarget == NULL)
  {
   ATLASSERT(0);
   return;
  }

  COleCmd cmd(cmdID);
  hr = spOleCommandTarget->QueryStatus(pguidCmdGroup, 1, &cmd, NULL);
  if (FAILED(hr))
  {
   ATLASSERT(0);
   return;
  }

  if (cmd.cmdf & OLECMDF_SUPPORTED)
  {
   BOOL bEnable = (cmd.cmdf & OLECMDF_ENABLED) ? TRUE : FALSE;
   pT->UIEnable(nID, bEnable);

   BOOL bCheck = (cmd.cmdf & OLECMDF_LATCHED) ? TRUE : FALSE;
   pT->UISetCheck(nID, bCheck);
  }
  else
  {
   pT->UIEnable(nID, FALSE);
  }
 }
};
---

■IOleCommandTarget - MSDN
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/html/5c8b455e-7740-4f71-aef6-27390a11a1a3.asp

投稿日時 : 2005年10月13日 9:52


コメントを追加

タイトル
名前
URL
コメント