MFC 浏览器 去除滚动条

用MFC写一个浏览器,我现在知道的方法有:
1.在Dialog上面添加一个WebBrowser ActiveX控件,这个方法我在上一个文章上面的有说,这个方法做出来的浏览器窗口有滚动条,且,我不知道怎么把它给搞掉--!
2.创建基于CDHtmlDialog的工程,这个方法我在上一个文章上面的也有说,这种方法做出来的浏览器窗口直接就没有滚动条了,可是它是基于Dialog资源做的,不符合要求
3.使用CHtmlView方式来做,关于这个,请参考这个文章:http://www.vckbase.com/document/viewdoc/?id=566

把我实现的过程大概的说一下:
1.先建立一个基于Dialog的窗口(基类不是CDHtmlDialog,而是CDialog),然后再添加一个StaticText(不一定非要是这个控件,其它控件也行的)的控件在Dialog上面.
2.创建一个类,父类是CHtmlView. 
  class CMyHtmlView : public CHtmlView {...}
3.实际上CHtmlView这个类的内部就是使用WebBrowser ActiveX来实现浏览器的(我上面的说的第一种方式的封装体)
4.添加方法:

//
// 根据Dialog上面的控件来创建一个显示浏览器的窗口
//
BOOL CMyHtmlView::CreateFromStatic(UINT nID, CWnd* pParent)
{
CStatic wndStatic;
if (!wndStatic.SubclassDlgItem(nID, pParent))
{
return FALSE;
}

CRect rc;
wndStatic.GetWindowRect(
&rc);
pParent
->ScreenToClient(&rc);
wndStatic.DestroyWindow();

return Create(NULL, NULL, (WS_CHILD|WS_VISIBLE), rc, pParent, nID, NULL);
}

//
// 重写这个函数就是去掉滚动条
//
HRESULT CMyHtmlView::OnGetHostInfo(DOCHOSTUIINFO *pInfo)
{
if(pInfo != NULL)
{
pInfo
->dwFlags = DOCHOSTUIFLAG_SCROLL_NO;
}
return S_OK;
}

int CMyHtmlView::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message)
{
return CWnd::OnMouseActivate(pDesktopWnd, nHitTest, message);
}

void CMyHtmlView::OnDestroy()
{
if (this->m_pBrowserApp)
{
m_pBrowserApp
= NULL;
}
CWnd::OnDestroy();
}

//
// 不覆盖这个函数,退出时会有堆损坏的现像
// 不要添加任何代码
void CMyHtmlView::PostNcDestroy()
{

}

5.然后在Dialog的OnInitDialog()方法中添加:

BOOL CExplorerDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// 将“关于...”菜单项添加到系统菜单中。

// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX
< 0xF000);

CMenu
* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid
= strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu
->AppendMenu(MF_SEPARATOR);
pSysMenu
->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}

// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标

// TODO: 在此添加额外的初始化代码

// CMyHtmlView m_explorer;

m_explorer.CreateFromStatic(IDC_STATIC,
this)
m_explorer.Navigate(
"www.baidu.com",0,0,0,0,0);

return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
运行一下看看,滚动条没了!^_^
posted @ 2011-05-25 13:03  莫压枯枯地  阅读(4263)  评论(0编辑  收藏  举报