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
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 クラス