首页 > 代码库 > 判断ActiveX控件是Desgin Mode还是Runtime Mode
判断ActiveX控件是Desgin Mode还是Runtime Mode
对于MFC
COleControl::AmbientUserMode
Determines if the Container is in design mode or user mode.
BOOL AmbientUserMode( );
Return Value
Nonzero if the container is in user mode; otherwise 0 (in design mode). If this property is not supported, this function returns 0.
Remarks
For example, a container might set this to FALSE in design mode.
根据当前ActiveX控件当前所处的模式,修改OnDraw函数:
BOOL bUserMode = FALSE; bUserMode = AmbientUserMode(); if(bUserMode) { LPCTSTR pszText = _T("MFC 3.0 : User Mode"); TextOut(di.hdcDraw, (rc.left + rc.right) / 2, (rc.top + rc.bottom) / 2, pszText, lstrlen(pszText)); } else { LPCTSTR pszText = _T("MFC 3.0 : Design Mode"); TextOut(di.hdcDraw, (rc.left + rc.right) / 2, (rc.top + rc.bottom) / 2, pszText, lstrlen(pszText)); }
对于ATL
CComControlBase::GetAmbientUserMode
Retrieves DISPID_AMBIENT_USERMODE, a flag indicating whether the container is in run-mode (TRUE) or design-mode (FALSE).
HRESULT GetAmbientUserMode(BOOL& bUserMode);
Parameters
- bUserMode :
The property DISPID_AMBIENT_USERMODE.
Return Value :
One of the standard HRESULT values.
OnDraw中判断
BOOL bUserMode = FALSE; HRESULT hr = GetAmbientUserMode(bUserMode); if(bUserMode) { LPCTSTR pszText = _T("ATL 3.0 : User Mode"); TextOut(di.hdcDraw, (rc.left + rc.right) / 2, (rc.top + rc.bottom) / 2, pszText, lstrlen(pszText)); } else { LPCTSTR pszText = _T("ATL 3.0 : Design Mode"); TextOut(di.hdcDraw, (rc.left + rc.right) / 2, (rc.top + rc.bottom) / 2, pszText, lstrlen(pszText)); }
判断ActiveX控件是Desgin Mode还是Runtime Mode
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。