ATL复合控件嵌入IE的IFRAME里,初始化时会在IE的左上角先显示灰色控件区域怎么解决? ATL的一个复合控件,嵌入IE的一个网页的IFRAME(此IFRAME没有充满网页,占右下的一部分)后,网页加载时IE的视图区左上角会先显示灰色的与OCX大小一样的灰色区域,网页加载完后,ocx区域才回到正确的IFRAME的区域,我试了不编写任何代码的OCX都有这个问题,请问如何解决? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你把ocx的size默认为 1 x 1的 是不是就看不到了 SetInitialSize(1, 1); 我是ATL复合控件,没有用MFC,SetInitialSize(1, 1); 用户了啊!:( 我在复合控件的构造函数里加入如下代码也没反应:SIZE sz = { 1,1 };// convert pixels to himetricAtlPixelToHiMetric (&sz, &m_sizeExtent);// store natural extentm_sizeNatural = m_sizeExtent; // CMyControl is derived from CComControl STDMETHOD(SetClientSite)(IOleClientSite *pClientSite) { if (pClientSite) { RECT rc = {0,0,0,0}; // Don't have access to the container's window so just use the // desktop. Window will be resized correctly during in-place // activation. HWND hWnd = CreateControlWindow(::GetDesktopWindow(), rc); _ASSERT (hWnd); } return IOleObjectImpl<CMyControl>::SetClientSite (pClientSite); } HRESULT InPlaceActivate(LONG iVerb, const RECT* prcPosRect) { // Get the container's window. _ASSERT (m_spClientSite); LPOLEINPLACESITE pInPlaceSite = NULL; HRESULT hr = m_spClientSite->QueryInterface(IID_IOleInPlaceSite, (void **)&pInPlaceSite); _ASSERT (SUCCEEDED (hr) && pInPlaceSite); HWND hParent = NULL; hr = pInPlaceSite->GetWindow (&hParent); _ASSERT (SUCCEEDED (hr) && hParent); pInPlaceSite->Release (); // Set container window as our parent window SetParent (hParent); return CComControlBase::InPlaceActivate(iVerb, prcPosRect); } // CMyControl is derived from CComControl STDMETHOD(SetClientSite)(IOleClientSite *pClientSite) { if (pClientSite) { RECT rc = {0,0,0,0}; // Don't have access to the container's window so just use the // desktop. Window will be resized correctly during in-place // activation. HWND hWnd = CreateControlWindow(::GetDesktopWindow(), rc); _ASSERT (hWnd); } return IOleObjectImpl<CMyControl>::SetClientSite (pClientSite); } HRESULT InPlaceActivate(LONG iVerb, const RECT* prcPosRect) { // Get the container's window. _ASSERT (m_spClientSite); LPOLEINPLACESITE pInPlaceSite = NULL; HRESULT hr = m_spClientSite->QueryInterface(IID_IOleInPlaceSite, (void **)&pInPlaceSite); _ASSERT (SUCCEEDED (hr) && pInPlaceSite); HWND hParent = NULL; hr = pInPlaceSite->GetWindow (&hParent); _ASSERT (SUCCEEDED (hr) && hParent); pInPlaceSite->Release (); // Set container window as our parent window SetParent (hParent); return CComControlBase::InPlaceActivate(iVerb, prcPosRect); } 在头文件中char*赋值后,编译怎么报错? rich edit中显示大量文本时如何获取滚动条的正确位置? 如何设置菜单的快捷键? 菜鸟问题:怎样把一个整形数转化为CString格式? 紧急求助:win9x中的远线程插入问题 当单击VIEW时,怎样调出输入法,并接收汉字? 关于读进程的内存 如何在工具栏中载入位图? mfc树形控件,导入图层数据时,树结构不断的添加节点,导致MFC主框架假死,请问有没有办法解决假死现象? 变量名前缀 请教几个报考公务员的问题 这样刷同时两个不相临的区域?
SIZE sz = { 1,1 };
// convert pixels to himetric
AtlPixelToHiMetric (&sz, &m_sizeExtent);
// store natural extent
m_sizeNatural = m_sizeExtent;
STDMETHOD(SetClientSite)(IOleClientSite *pClientSite)
{
if (pClientSite)
{
RECT rc = {0,0,0,0};
// Don't have access to the container's window so just use the
// desktop. Window will be resized correctly during in-place
// activation.
HWND hWnd = CreateControlWindow(::GetDesktopWindow(), rc);
_ASSERT (hWnd);
}
return IOleObjectImpl<CMyControl>::SetClientSite (pClientSite);
} HRESULT InPlaceActivate(LONG iVerb, const RECT* prcPosRect)
{ // Get the container's window.
_ASSERT (m_spClientSite);
LPOLEINPLACESITE pInPlaceSite = NULL;
HRESULT hr = m_spClientSite->QueryInterface(IID_IOleInPlaceSite,
(void **)&pInPlaceSite);
_ASSERT (SUCCEEDED (hr) && pInPlaceSite);
HWND hParent = NULL;
hr = pInPlaceSite->GetWindow (&hParent);
_ASSERT (SUCCEEDED (hr) && hParent);
pInPlaceSite->Release ();
// Set container window as our parent window
SetParent (hParent);
return CComControlBase::InPlaceActivate(iVerb, prcPosRect);
}
STDMETHOD(SetClientSite)(IOleClientSite *pClientSite)
{
if (pClientSite)
{
RECT rc = {0,0,0,0};
// Don't have access to the container's window so just use the
// desktop. Window will be resized correctly during in-place
// activation.
HWND hWnd = CreateControlWindow(::GetDesktopWindow(), rc);
_ASSERT (hWnd);
}
return IOleObjectImpl<CMyControl>::SetClientSite (pClientSite);
} HRESULT InPlaceActivate(LONG iVerb, const RECT* prcPosRect)
{ // Get the container's window.
_ASSERT (m_spClientSite);
LPOLEINPLACESITE pInPlaceSite = NULL;
HRESULT hr = m_spClientSite->QueryInterface(IID_IOleInPlaceSite,
(void **)&pInPlaceSite);
_ASSERT (SUCCEEDED (hr) && pInPlaceSite);
HWND hParent = NULL;
hr = pInPlaceSite->GetWindow (&hParent);
_ASSERT (SUCCEEDED (hr) && hParent);
pInPlaceSite->Release ();
// Set container window as our parent window
SetParent (hParent);
return CComControlBase::InPlaceActivate(iVerb, prcPosRect);
}