CComCompositeControl 類別

這個類別會提供要求的方法實作複合控制項。

重要事項重要事項

這個類別和其成員不能用於 Windows 執行階段執行的應用程式。

template <
class T 
>
class CComCompositeControl :
public CComControl< T, CAxDialogImpl< T > >

參數

Members

z3e7bbb1.collapse_all(zh-tw,VS.110).gif公用建構函式

名稱

描述

CComCompositeControl::CComCompositeControl

建構函式。

CComCompositeControl::~CComCompositeControl

解構函式。

z3e7bbb1.collapse_all(zh-tw,VS.110).gif公用方法

名稱

描述

CComCompositeControl::AdviseSinkMap

呼叫這個方法通知或 unadvise 複合控制項裝載的控制項。

CComCompositeControl::CalcExtent

呼叫這個方法會計算中所用的對話方塊資源的 HIMETRIC 單位的大小來裝載複合控制項。

CComCompositeControl::Create

這個方法會呼叫以建立複合控制項之控制項的視窗。

CComCompositeControl::CreateControlWindow

呼叫這個方法會建立控制項的視窗和建議所有裝載的控制項。

CComCompositeControl::SetBackgroundColorFromAmbient

使用容器的背景色彩,呼叫這個方法會設定複合控制項的背景色彩。

z3e7bbb1.collapse_all(zh-tw,VS.110).gif公用資料成員

名稱

描述

CComCompositeControl::m_hbrBackground

背景筆刷。

CComCompositeControl::m_hWndFocus

目前擁有焦點的視窗的控制代碼。

備註

從類別衍生的類別 CComCompositeControl ActiveX 繼承使用者控制項的功能。從 CComCompositeControl 衍生的 ActiveX 控制項是標準的對話方塊中裝載。控制項使用這些型別稱為"複合控制項,因為它們可以裝載其他控制項 (原生 Windows 控制項和 ActiveX 控制項)。

在建立CComCompositeControl 識別對話方塊資源使用複合控制項將會尋找子類別中的繫結值成員。這項子類別的成員 IDD 設定為將做為控制項視窗對話方塊資源中的資源 ID。下列是來自 CComCompositeControl 衍生自類別的類別必須包含可識別控制項視窗會使用的對話方塊資源資料成員的範例:

enum { IDD = IDD_MYCOMPOSITE };
注意事項注意事項

複合控制項永遠是視窗型控制項,不過,它們可以包含無視窗 (Windowless) 控制項。

CComCompositeControl實作的控制項都有預設的定位停駐行為安裝的衍生類別。當控制項傳遞所選接收焦點為包含的應用程式,只要按下 TAB 鍵會使焦點通過所有複合控制項中所包含之控制項的循環,然後從複合控制項和到下一個項目定位順序容器的順序。對話方塊資源取決於裝載控制項的定位順序並判斷選取中出現的順序。

注意事項注意事項

若要快速鍵可以適當地使用 CComCompositeControl時,載入快速鍵對應表,因為控制項建立必要,可以快速鍵的控制代碼和數目回 IOleControlImpl::GetControlInfo終結和最後一個資料表,而放開控制項。

範例

// Example for overriding IOleControlImpl::GetControlInfo()
// This example uses the accelerator table from the project resources
// with the identifier IDR_ACCELTABLE
// Define GetControlInfo() in the header of your composite 
// control class as follows:

STDMETHOD(GetControlInfo)(CONTROLINFO* pCI)
{
    // Load the accelerator table from the resource
    pCI->hAccel = LoadAccelerators(_AtlBaseModule.GetResourceInstance(), 
       MAKEINTRESOURCE(IDR_ACCELTABLE));

    if (pCI->hAccel == NULL)
        return E_FAIL;

    // Get the number of accelerators in the table
    pCI->cAccel = (USHORT)CopyAcceleratorTable(pCI->hAccel, NULL, 0);
    // The following is optional if you want your control
    // to process the return and/or escape keys
    // pCI.dwFlags = CTRLINFO_EATS_RETURN | CTRLINFO_EATS_ESCAPE;
    pCI->dwFlags = 0;

    return S_OK;
}

繼承階層架構

WinBase

CComControlBase

CComControl

CComCompositeControl

需求

Header: atlctl.h

請參閱

參考

CComControl 類別

概念

複合控制項的基本概念

其他資源

ATL 類別概觀