看小不小的问题:如何去掉htmlview的边框,3D-look?(ModifyStyle不行的)
想实现htmlview 显示的网页与对话框融为一体,去掉所谓的
3D-Look 立体效果,要的就是edit控件,去掉WS_BORDER的效果。可谁知就是这个一个小问题,搞得我好郁闷,一切都试过了,没用。
初步结果:htmlview的窗口通过修改,可以做到flat效果,但是一旦执行了,
CHtmlView::Navigate,就会新生成子窗口:Internet Explorer_Server,Shell EmBeding
等窗口,于是,我用了一个极端的办法,穷举所有的子窗口,然后修改,但是无效:代码如下:
//枚举所有的子窗口
BOOL CALLBACK EnumChildProc(HWND hChildWnd,LPARAM lparam)
{
//this->ModifyStyle(WS_BORDER|WS_EX_WINDOWEDGE|WS_EX_STATICEDGE|WS_EX_CLIENTEDGE,WS_CLIPCHILDREN|WS_CLIPSIBLINGS);
//this->ModifyStyleEx(WS_BORDER|WS_EX_WINDOWEDGE|WS_EX_STATICEDGE|WS_EX_CLIENTEDGE,TBSTYLE_FLAT   |   TBSTYLE_TRANSPARENT);

char   strbuf[256];
::GetClassName(hChildWnd,strbuf,sizeof(strbuf));     
::SetWindowLong(hChildWnd,GWL_STYLE,WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN);
::SetWindowLong(hChildWnd,GWL_EXSTYLE,WS_EX_CLIENTEDGE);
        if( strcmp(strbuf,   "Internet Explorer_Server")==0   )
{
return false;
}
else
return true;
}-------------------------------------------------------------------------------
那位高手感兴趣,试下.

http://topic.csdn.net/t/20021229/15/1310286.html
这里的办法不能解决.

解决方案 »

  1.   

    直接重载下面虚函数
    如下去掉3d和滚动条
    HRESULT CMyHtmlView::OnGetHostInfo( DOCHOSTUIINFO *pInfo )
    {
    if( pInfo )
    {
    pInfo->dwFlags |= (DOCHOSTUIFLAG_NO3DBORDER |DOCHOSTUIFLAG_SCROLL_NO);
    }
    return S_OK;
    }
      

  2.   

    谢谢楼上的,我用的是6.0
    不是 .Net 
    看来得把 .Net 的源码拷过来
    用用了..
      

  3.   

    <BODY cellSpacing=0 cellPadding=0 border=0>
    </BODY>------------------------------
    只能这样了....
      

  4.   

    答案在这里:
    http://support.microsoft.com/kb/q236312