COleControlContainer 类
充当 ActiveX 控件的控件容器。
语法
class COleControlContainer : public CCmdTarget
成员
公共构造函数
名称 | 描述 |
---|---|
COleControlContainer::COleControlContainer | 构造 COleControlContainer 对象。 |
公共方法
公共数据成员
“属性” | 描述 |
---|---|
COleControlContainer::m_crBack | 容器的背景色。 |
COleControlContainer::m_crFore | 容器的前景色。 |
COleControlContainer::m_listSitesOrWnds | 受支持控件站点的列表。 |
COleControlContainer::m_nWindowlessControls | 托管的无窗口控件的数量。 |
COleControlContainer::m_pOleFont | 指向自定义控件站点的 OLE 字体的指针。 |
COleControlContainer::m_pSiteCapture | 指向捕获控件站点的指针。 |
COleControlContainer::m_pSiteFocus | 指向当前具有输入焦点的控件的指针。 |
COleControlContainer::m_pSiteUIActive | 指向当前就地激活的控件的指针。 |
COleControlContainer::m_pWnd | 指向实现控件容器的窗口的指针。 |
COleControlContainer::m_siteMap | 站点地图。 |
备注
这是通过为一个或多个 ActiveX 控件站点提供支持(由 COleControlSite
实现)来实现的。 COleControlContainer
完全实现 IOleInPlaceFrame 和 IOleContainer 接口,使包含的 ActiveX 控件能够满足其作为就地项的资格。
通常,此类与 COccManager
和 COleControlSite
结合使用以实现自定义 ActiveX 控件容器,其中包含用于一个或多个 ActiveX 控件的自定义站点。
继承层次结构
COleControlContainer
要求
标头:afxocc.h
COleControlContainer::AttachControlSite
由框架调用以创建并附加控件站点。
virtual void AttachControlSite(
CWnd* pWnd,
UINT nIDC = 0);
void AttachControlSite(
CWnd* pWnd,
UINT nIDC = 0);
参数
pWnd
一个指向 CWnd
对象的指针。
nIDC
要附加的控件的 ID。
备注
如果要自定义此过程,请替代此函数。
注意
如果要静态链接到 MFC 库,请使用此函数的第一种形式。 如果要动态链接到 MFC 库,请使用第二种形式。
COleControlContainer::BroadcastAmbientPropertyChange
通知所有托管控件环境属性已更改。
virtual void BroadcastAmbientPropertyChange(DISPID dispid);
参数
dispid
正在更改的环境属性的调度 ID。
备注
当环境属性更改值时,框架会调用此函数。 替代此函数以自定义此行为。
COleControlContainer::CheckDlgButton
修改按钮的当前状态。
virtual void CheckDlgButton(
int nIDButton,
UINT nCheck);
参数
nIDButton
要修改的按钮的 ID。
nCheck
指定按钮的状态。 可以是以下值之一:
BST_CHECKED 将按钮状态设置为已选中。
BST_INDETERMINATE 将按钮状态设置为灰显,表示不确定的状态。 仅当按钮采用 BS_3STATE 或 BS_AUTO3STATE 样式时,才使用此值。
BST_UNCHECKED 将按钮状态设置为已清除。
COleControlContainer::CheckRadioButton
选择组中的指定单选按钮,并清除组中的其余按钮。
virtual void CheckRadioButton(
int nIDFirstButton,
int nIDLastButton,
int nIDCheckButton);
参数
nIDFirstButton
指定组中第一个单选按钮的标识符。
nIDLastButton
指定组中最后一个单选按钮的标识符。
nIDCheckButton
指定要选中的单选按钮的标识符。
COleControlContainer::COleControlContainer
构造 COleControlContainer
对象。
explicit COleControlContainer(CWnd* pWnd);
参数
pWnd
指向控件容器的父窗口的指针。
备注
成功创建对象后,请通过调用 AttachControlSite
添加自定义控件站点。
COleControlContainer::CreateControl
创建 ActiveX 控件,由指定的 COleControlSite
对象托管。
BOOL CreateControl(
CWnd* pWndCtrl,
REFCLSID clsid,
LPCTSTR lpszWindowName,
DWORD dwStyle,
const RECT& rect,
UINT nID,
CFile* pPersist =NULL,
BOOL bStorage =FALSE,
BSTR bstrLicKey =NULL,
COleControlSite** ppNewSite =NULL);
BOOL CreateControl(
CWnd* pWndCtrl,
REFCLSID clsid,
LPCTSTR lpszWindowName,
DWORD dwStyle,
const POINT* ppt,
const SIZE* psize,
UINT nID,
CFile* pPersist =NULL,
BOOL bStorage =FALSE,
BSTR bstrLicKey =NULL,
COleControlSite** ppNewSite =NULL);
参数
pWndCtrl
指向表示控件的窗口对象的指针。
clsid
控件的唯一类 ID。
lpszWindowName
指向要在控件中显示的文本的指针。 设置控件的标题或文本属性(如有)的值。 如果为 NULL,则不会更改控件的标题或文本属性。
dwStyle
窗口样式。 可用样式列在“注解”部分下。
rect
指定控件的大小和位置。 它可以是 CRect
对象或 RECT
结构。
nID
指定控件的子窗口 ID。
pPersist
指向包含控件的持久状态的 CFile
的指针。 默认值为 NULL,表示控件会初始化自身,而不从任何持久存储中恢复其状态。 如果不为 NULL,它应是指向 CFile
派生对象的指针,该对象包含采用流或存储形式的控件的持久数据。 此数据可能已保存在客户端先前的激活中。 CFile
可以包含其他数据,但必须在调用 CreateControl
时将其读写指针设置为持久数据的第一个字节。
bStorage
指示是否应将 pPersist 中的数据解释为 IStorage
或 IStream
数据。 如果 pPersist 中的数据为存储,则 bStorage 应为 TRUE。 如果 pPersist 中的数据为流,则 bStorage 应为 FALSE。 默认值是 FALSE。
bstrLicKey
可选的许可证密钥数据。 仅在创建需要运行时许可证密钥的控件时才需要此数据。 如果控件支持许可,则必须提供许可证密钥才能成功创建控件。 默认值为 NULL。
ppNewSite
指向将托管正在创建的控件的现有控件站点的指针。 默认值为 NULL,表示将自动创建新的控件站点并附加到新控件。
ppt
指向包含控件左上角的 POINT
结构的指针。 控件的大小由 psize 的值决定。 ppt 和 psize 值是指定控件大小和位置的可选方法。
psize
指向包含控件大小的 SIZE
结构的指针。 左上角由 ppt 的值决定。 ppt 和 psize 值是指定控件大小和位置的可选方法。
返回值
如果成功,则不为 0;否则为 0。
备注
CreateControl
仅支持 Windows dwStyle 标志的子集:
WS_VISIBLE 创建初始可见的窗口。 如果希望控件像普通窗口一样立即可见,则需要它。
WS_DISABLED 创建初始禁用的窗口。 禁用的窗口无法接收用户的输入。 如果控件具有 Enabled 属性,则可以设置。
WS_BORDER 创建带细线边框的窗口。 如果控件具有 BorderStyle 属性,则可以设置。
WS_GROUP 指定一组控件中的第一个控件。 用户可以使用方向键将键盘焦点从组中的一个控件更改为下一个控件。 在第一个控件之后使用 WS_GROUP 样式定义的所有控件属于同一组。 具有 WS_GROUP 样式的下一个控件结束该组并开始下一组。
WS_TABSTOP 指定当用户按下 TAB 键时可以接收键盘焦点的控件。 按 TAB 键会将键盘焦点更改为 WS_TABSTOP 样式的下一个控件。
使用第二个重载来创建默认大小的控件。
COleControlContainer::CreateOleFont
创建 OLE 字体。
void CreateOleFont(CFont* pFont);
参数
pFont
指向控件容器要使用的字体的指针。
COleControlContainer::FindItem
查找托管指定项的自定义站点。
virtual COleControlSite* FindItem(UINT nID) const;
参数
nID
要找到的项的标识符。
返回值
指向指定项的自定义站点的指针。
COleControlContainer::FreezeAllEvents
确定容器是将忽略附加控件站点中的事件还是接受这些事件。
void FreezeAllEvents(BOOL bFreeze);
参数
bFreeze
如果将处理事件,则为非零值;否则为 0。
备注
注意
控件不需要停止触发事件(如果控件容器已请求)。 它可以继续触发,但控件容器将忽略所有后续事件。
COleControlContainer::GetAmbientProp
检索指定环境属性的值。
virtual BOOL GetAmbientProp(
COleControlSite* pSite,
DISPID dispid,
VARIANT* pvarResult);
参数
pSite
指向将从中检索环境属性的控件站点的指针。
dispid
所需环境属性的调度 ID。
pVarResult
指向环境属性的值的指针。
返回值
如果成功,则不为 0;否则为 0。
COleControlContainer::GetDlgItem
检索指向对话框或其他窗口中指定控件或子窗口的指针。
virtual CWnd* GetDlgItem(int nID) const;
virtual void GetDlgItem(
int nID,
HWND* phWnd) const;
参数
nID
要检索的对话框项的标识符。
phWnd
指向指定对话框项的窗口对象的句柄的指针。
返回值
指向对话框项的窗口的指针。
COleControlContainer::GetDlgItemInt
检索给定控件的已转换文本的值。
virtual UINT GetDlgItemInt(
int nID,
BOOL* lpTrans,
BOOL bSigned) const;
参数
nID
控件的标识符。
lpTrans
指向接收函数成功/失败值的布尔变量的指针(TRUE 表示成功,FALSE 表示失败)。
bSigned
指定函数是否应检查文本开头的减号,如果找到减号,则返回带符号整数值。 如果 bSigned 参数为 TRUE,则指定要检索的值为带符号整数值,将返回值强制转换为 int
类型。 要获得更多的错误信息,请调用 GetLastError。
返回值
如果成功,lpTrans 指向的变量设置为 TRUE,返回值是控件文本的转换值。
如果函数失败,lpTrans 指向的变量设置为 FALSE,返回值为零。 请注意,由于零是可能的转换值,因此返回值为零本身并不表示失败。
如果 lpTrans 为 NULL,则该函数不返回有关成功或失败的信息。
备注
此函数通过去除文本开头任何多余的空格,然后转换十进制数字来转换检索到的文本。 函数在到达文本末尾或遇到非数字字符时停止转换。
如果转换后的值大于 INT_MAX(对于带符号数字)或 UINT_MAX(对于无符号数字),则此函数返回零。
COleControlContainer::GetDlgItemText
检索给定控件的文本。
virtual int GetDlgItemText(
int nID,
LPTSTR lpStr,
int nMaxCount) const;
参数
nID
控件的标识符。
lpStr
指向控件文本的指针。
nMaxCount
指定要复制到 lpStr 指向的缓冲区的字符串的最大长度(以字符为单位)。 如果字符串的长度超过限制,则会截断字符串。
返回值
如果函数成功,则返回值将指定复制到缓冲区的字符数,不包括终止 null 字符。
如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。
COleControlContainer::HandleSetFocus
确定容器是否处理 WM_SETFOCUS 消息。
virtual BOOL HandleSetFocus();
返回值
如果容器处理 WM_SETFOCUS 消息,则为非零值;否则为零。
COleControlContainer::HandleWindowlessMessage
处理无窗口控件的窗口消息。
virtual BOOL HandleWindowlessMessage(
UINT message,
WPARAM wParam,
LPARAM lParam,
LRESULT* plResult);
参数
message
窗口消息的标识符,由 Windows 提供。
wParam
消息的参数,由 Windows 提供。 指定其他的消息特定信息。 此参数的内容取决于 message 参数的值。
lParam
消息的参数,由 Windows 提供。 指定其他的消息特定信息。 此参数的内容取决于 message 参数的值。
plResult
Windows 结果代码。 指定消息处理的结果,取决于所发送的消息。
返回值
如果成功,则不为零,否则为零。
备注
替代此函数以自定义无窗口控件消息的处理。
COleControlContainer::IsDlgButtonChecked
确定指定按钮的状态。
virtual UINT IsDlgButtonChecked(int nIDButton) const;
参数
nIDButton
按钮控件的标识符。
返回值
使用 BS_AUTOCHECKBOX、BS_AUTORADIOBUTTON、BS_AUTO3STATE、BS_CHECKBOX、BS_RADIOBUTTON 或 BS_3STATE 样式创建的按钮的返回值。 可以是以下值之一:
BST_CHECKED 已选中按钮。
BST_INDETERMINATE 按钮呈灰显,表示状态不确定的状态(仅在按钮具有 BS_3STATE 或 BS_AUTO3STATE 样式时才应用)。
BST_UNCHECKED 已清除按钮。
注解
如果按钮是三状态控件,则成员函数确定它为灰显、已选中还是两者都不是。
COleControlContainer::m_crBack
容器的背景色。
COLORREF m_crBack;
COleControlContainer::m_crFore
容器的前景色。
COLORREF m_crFore;
COleControlContainer::m_listSitesOrWnds
容器托管的控件站点的列表。
CTypedPtrList<CPtrList, COleControlSiteOrWnd*> m_listSitesOrWnds;
COleControlContainer::m_nWindowlessControls
控件容器托管的无窗口控件的数量。
int m_nWindowlessControls;
COleControlContainer::m_pOleFont
指向自定义控件站点的 OLE 字体的指针。
LPFONTDISP m_pOleFont;
COleControlContainer::m_pSiteCapture
指向捕获控件站点的指针。
COleControlSite* m_pSiteCapture;
COleControlContainer::m_pSiteFocus
指向当前具有输入焦点的控件站点的指针。
COleControlSite* m_pSiteFocus;
COleControlContainer::m_pSiteUIActive
指向已就地激活的控件站点的指针。
COleControlSite* m_pSiteUIActive;
COleControlContainer::m_pWnd
指向与容器关联的窗口对象的指针。
CWnd* m_pWnd;
COleControlContainer::m_siteMap
站点地图。
CMapPtrToPtr m_siteMap;
COleControlContainer::OnPaint
由框架调用以处理 WM_PAINT 请求。
virtual BOOL OnPaint(CDC* pDC);
参数
pDC
指向容器使用的设备上下文的指针。
返回值
如果消息已处理,则为非零值;否则为零。
备注
替代此函数以自定义绘制过程。
COleControlContainer::OnUIActivate
pSite 指向的控制站点即将就地激活时由框架调用。
virtual void OnUIActivate(COleControlSite* pSite);
参数
pSite
指向即将就地激活的控件站点的指针。
备注
就地激活意味着容器的主菜单将替换为就地复合菜单。
COleControlContainer::OnUIDeactivate
pSite 指向的控制站点即将停用时由框架调用。
virtual void OnUIDeactivate(COleControlSite* pSite);
参数
pSite
指向即将停用的控件站点的指针。
注解
收到此通知时,容器应重新安装其用户界面并采用焦点。
COleControlContainer::ScrollChildren
从子窗口接收到滚动消息时由框架调用。
virtual void ScrollChildren(
int dx,
int dy);
参数
dx
沿 x 轴滚动的量(以像素为单位)。
dy
沿 y 轴滚动的量(以像素为单位)。
COleControlContainer::SendDlgItemMessage
将消息发送到指定控件。
virtual LRESULT SendDlgItemMessage(
int nID,
UINT message,
WPARAM wParam,
LPARAM lParam);
参数
nID
指定接收消息的控件的标识符。
message
指定要发送的消息。
wParam
指定其他的消息特定信息。
lParam
指定其他的消息特定信息。
COleControlContainer::SetDlgItemInt
将对话框中控件的文本设置为指定整数值的字符串表示形式。
virtual void SetDlgItemInt(
int nID,
UINT nValue,
BOOL bSigned);
参数
nID
控件的标识符。
nValue
要显示的整数值。
bSigned
指定 nValue 参数是带符号还是无符号。 如果此参数为 TRUE,则 nValue 是带符号的。 如果此参数为 TRUE 且 nValue 小于零,则在字符串中的第一个数字之前放置减号。 如果此参数为 FALSE,则 nValue 是无符号的。
COleControlContainer::SetDlgItemText
使用 lpszString 中包含的文本设置指定控件的文本。
virtual void SetDlgItemText(
int nID,
LPCTSTR lpszString);
参数
nID
控件的标识符。
lpszString
指向控件文本的指针。