CComControl クラス

このクラスには、ATL コントロールを作成および管理するためのメソッドが用意されています。

重要

このクラスとそのメンバーは、Windows ランタイムで実行するアプリケーションで使用することはできません。

構文

template <class T, class WinBase = CWindowImpl<T>>
class ATL_NO_VTABLE CComControl : public CComControlBase,
    public WinBase;

パラメーター

T
コントロールを実装するクラス。

WinBase
ウィンドウ関数を実装する基底クラス。 既定値は CWindowImpl です。

メンバー

パブリック コンストラクター

名前 説明
CComControl::CComControl コンストラクターです。

パブリック メソッド

名前 説明
CComControl::ControlQueryInterface 要求されたインターフェイスへのポインターを取得します。
CComControl::CreateControlWindow コントロールのウィンドウを作成します。
CComControl::FireOnChanged コントロール プロパティが変更されたことをコンテナーのシンクに通知します。
CComControl::FireOnRequestEdit コントロール プロパティが変更されようとしていて、オブジェクトがシンクに続行方法を尋ねていることをコンテナーのシンクに通知します。
CComControl::MessageBox このメソッドを呼び出して、メッセージ ボックスを作成、表示、操作します。

解説

CComControl は、ATL コントロールに役立つコントロール ヘルパー関数と重要なデータ メンバーのセットです。 ATL コントロール ウィザードを使用して標準コントロールまたは DHTML コントロールを作成すると、CComControl からクラスが自動的に派生します。 CComControl では、そのほとんどのメソッドを CComControlBase から派生させます。

コントロールの作成の詳細については、ATL チュートリアルを参照してください。 ATL プロジェクト ウィザードの詳細については、「ATL プロジェクトの作成」を参照してください。

CComControl メソッドとデータ メンバーのデモについては、CIRC サンプルを参照してください。

継承階層

WinBase

CComControlBase

CComControl

要件

ヘッダー: atlctl.h

CComControl::CComControl

コンストラクター。

CComControl();

解説

CComControlBase コンストラクターを呼び出し、CWindowImpl を介して継承された m_hWnd データ メンバーを渡します。

CComControl::ControlQueryInterface

要求されたインターフェイスへのポインターを取得します。

virtual HRESULT ControlQueryInterface(const IID& iid, void** ppv);

パラメーター

iid
[入力] 要求されているインターフェイスの GUID。

ppv
[出力] iid で識別されるインターフェイス ポインターへのポインター。インターフェイスが見つからない場合は NULL。

解説

COM マップ テーブル内のインターフェイスのみが処理されます。

// Retrieve the control's IOleObject interface. Note interface 
// is automatically released when pOleObject goes out of scope

CComPtr<IOleObject> pOleObject;
ControlQueryInterface(IID_IOleObject, (void**)&pOleObject);

CComControl::CreateControlWindow

既定では、CWindowImpl::Create を呼び出して、コントロールのウィンドウを作成します。

virtual HWND CreateControlWindow(HWND hWndParent, RECT& rcPos);

パラメーター

hWndParent
[入力] 親またはオーナー ウィンドウへのハンドル。 有効なウィンドウ ハンドルを指定する必要があります。 コントロール ウィンドウは、その親ウィンドウの領域に限定されます。

rcPos
[入力] 作成されるウィンドウの初期サイズと位置。

解説

1 つのウィンドウを作成する以外の操作を行う場合 (たとえば、2 つのウィンドウを作成し、そのうちの 1 つをコントロールのツール バーにする場合)、このメソッドをオーバーライドします。

RECT rc = {10,10,210,110};
HWND hwndParent, hwndControl;

// get HWND of control's parent window from IOleInPlaceSite interface
m_spInPlaceSite->GetWindow(&hwndParent);
hwndControl = CreateControlWindow(hwndParent, rc);

CComControl::FireOnChanged

コントロール プロパティが変更されたことをコンテナーのシンクに通知します。

HRESULT FireOnChanged(DISPID dispID);

パラメーター

dispID
[入力] 変更されたプロパティの識別子。

戻り値

標準 HRESULT 値のいずれか。

解説

コントロール クラスが IPropertyNotifySink から派生した場合、このメソッドは CFirePropNotifyEvent::FireOnChanged を呼び出して、指定したコントロール プロパティが変更されていることを接続しているすべての IPropertyNotifySink インターフェイスに通知します。 コントロール クラスが IPropertyNotifySink から派生していない場合、このメソッドは S_OK を返します。

このメソッドは、コントロールがコネクション ポイントをサポートしていない場合でも、安全に呼び出すことができます。

STDMETHODIMP CMyControl::put_MyText(BSTR newVal)
{
   // store newVal in CComBstr member
   m_bstrMyText = newVal;

   // note the DISPID for the MyText property is 3 in this example
   FireOnChanged(3);

   return S_OK;
}

CComControl::FireOnRequestEdit

コントロール プロパティが変更されようとしていて、オブジェクトがシンクに続行方法を尋ねていることをコンテナーのシンクに通知します。

HRESULT FireOnRequestEdit(DISPID dispID);

パラメーター

dispID
[入力] 変更されようとしているプロパティの識別子。

戻り値

標準 HRESULT 値のいずれか。

解説

コントロール クラスが IPropertyNotifySink から派生した場合、このメソッドは CFirePropNotifyEvent::FireOnRequestEdit を呼び出して、指定したコントロール プロパティが変更されようとしていることを接続しているすべての IPropertyNotifySink インターフェイスに通知します。 コントロール クラスが IPropertyNotifySink から派生していない場合、このメソッドは S_OK を返します。

このメソッドは、コントロールがコネクション ポイントをサポートしていない場合でも、安全に呼び出すことができます。

STDMETHODIMP CMyControl::put_MyTitle(BSTR newVal)
{
   // the DISPID for MyTitle in this example is 4
   DISPID dispID = 4;

   // make sure we can change the property
   if (FireOnRequestEdit(dispID) == S_FALSE)
      return S_FALSE;

   // store newVal in CComBstr member
   m_bstrMyTitle = newVal;

   // signal that the property has been changed
   FireOnChanged(dispID);

   return S_OK;
}

CComControl::MessageBox

このメソッドを呼び出して、メッセージ ボックスを作成、表示、操作します。

int MessageBox(
    LPCTSTR lpszText,
    LPCTSTR lpszCaption = _T(""),
    UINT nType = MB_OK);

パラメーター

lpszText
メッセージ ボックスに表示されるテキスト。

lpszCaption
ダイアログ ボックスのタイトル。 NULL (既定値) の場合は、タイトル "エラー" が使用されます。

nType
ダイアログ ボックスの内容と動作を指定します。 使用可能なさまざまなメッセージ ボックスの一覧については、Windows SDK ドキュメントの MessageBox エントリを参照してください。 既定では、単純な [OK] ボタンが表示されます。

戻り値

Windows SDK ドキュメントの MessageBox の下に一覧表示されているメニュー項目の値のいずれかを指定する整数値を返します。

解説

MessageBox は、開発時、およびユーザーにエラーまたは警告メッセージを表示する簡単な方法として役立ちます。

関連項目

CWindowImpl クラス
クラスの概要
CComControlBase クラス
CComCompositeControl クラス