CComCompositeControl选件类
此选件类提供需要的方法实现复合控件。
重要事项 |
---|
此选件类及其成员不能在Windows运行时执行的应用程序。 |
template <
class T
>
class CComCompositeControl :
public CComControl< T, CAxDialogImpl< T > >
参数
- T
您的选件类,从派生 CComObjectRoot 或 CComObjectRootEx,以及从任何其他接口要用于复合控件支持。
成员
公共构造函数
名称 |
描述 |
---|---|
构造函数。 |
|
该析构函数。 |
公共方法
名称 |
描述 |
---|---|
调用此方法建议或unadvise该复合控件中承载的所有控件。 |
|
调用此方法计算在所使用的对话框资源的 HIMETRIC 单元的大小承载复合控件。 |
|
此方法调用创建复合控件的控件的窗口。 |
|
调用此方法创建控件的窗口和建议所有承载控件。 |
|
使用容器的背景色,调用此方法将复合控件的背景色。 |
公共数据成员
名称 |
描述 |
---|---|
背景画笔。 |
|
当前具有焦点的窗口的句柄。 |
备注
从选件类派生的选件类 CComCompositeControl 继承ActiveX复合控件的功能。从 CComCompositeControl 派生的ActiveX控件由标准对话框承载。以下类型的控件调用复合控件,因为它们可以承载其他控件(本机Windows控件和ActiveX控件)。
CComCompositeControl 在创建标识对话框资源使用该复合控件通过查找一个计数值成员在子选件类。此子选件类的成员IDD设置为将用作控件windows对话框资源的资源ID。下面是从 CComCompositeControl 派生的选件类应包含标识用于控制windows将使用的对话框资源数据成员的示例:
enum { IDD = IDD_MYCOMPOSITE };
说明 |
---|
复合控件始终有窗口的控件,不过,它们可能包含无窗口控件。 |
CComCompositeControl实现的控件-具有默认tab键行为安装的派生类。当控件通过选项卡式接收焦点到包含组件的应用程序,串行按tab键将导致焦点通过所有复合控件所包含的控件中循环,然后从该复合控件和到下一个项目选项按容器的序列。对话框资源取决于承载的控件的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
CComCompositeControl
要求
Header: atlctl.h