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
}