对于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

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));
}

 

 

    

相关文章:

  • 2021-10-20
  • 2021-08-25
  • 2021-12-19
  • 2022-12-23
  • 2021-07-29
  • 2021-08-15
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-17
  • 2021-11-25
  • 2021-11-07
相关资源
相似解决方案