IE浏览器作为微软Windows系统捆绑销售的一个浏览工具Word格式文档下载.docx
- 文档编号:18061720
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:24
- 大小:22KB
IE浏览器作为微软Windows系统捆绑销售的一个浏览工具Word格式文档下载.docx
《IE浏览器作为微软Windows系统捆绑销售的一个浏览工具Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《IE浏览器作为微软Windows系统捆绑销售的一个浏览工具Word格式文档下载.docx(24页珍藏版)》请在冰豆网上搜索。
类CmainFrame中定义CStatusBarm_wndStatusBar(状态条对象)、
CToolBarm_wndToolBar(工具栏对象)、CReBarm_wndReBar
(、CComboBoxExm_wndAddress(扩展的组合框对象,用来作为
地址栏)、CAnimateCtrlm_wndAnimate(动画控件,用来在工具栏
上显示动画)、图像列表对象CImageListimg(存放显示在工具栏上的图标)等对象。
向当前项目AVI资源文件,ID标志IDR_MFCAVI,添加Bitmap(位图)资源,ID标志分别为IDB_COLDTOOLBAR、IDB_HOTTOOLBAR,分别如下所示:
图二、包含按钮图标的位图
1)IE风格工具条
IE风格界面的实现主要在主框架类的CMainFrame:
:
OnCreate
()函数中实现,它的主要思想如下:
CReBar对象用来作为工具
条、地址栏、动画控件的容器,CImageList对象,然后分别装载工
具栏上按钮的热点图像和正常状态下显示的图像,并将该对象附给工
具条对象,使之建立关联。
为了显示扁平工具栏,需要用CreateEx()
函数创建CToolBar对象m_wndToolBar,用ModifyStyle()函数将
工具栏的风格设为扁平类型,注意这里不能用CToolBar:
Create()
或CToolBar:
SetBarStyle()设置这种新风格。
CToolBar类不支持TBSTYLE_FLAT,要解决这个问题,必须绕过CToolBar类,使用CWnd:
ModifyStyle()。
要将某一个工具栏按钮设置为附带有下拉按钮,可以调用SetButtonInfo()设置按钮的风格为
TBSTYLE_DROPDOWN。
至于按钮带有中文提示,用工具栏的
SetButtonText()就可以轻松实现了。
下面是实现IE风格界面的代
码和注释:
intCMainFrame:
OnCreate(LPCREATESTRUCTlpCreateStruct)
{
CImageListimg;
//图像列表对象;
CStringstr;
//字符串对象;
if(CFrameWnd:
OnCreate(lpCreateStruct)==-1)
return-1;
if(!
m_wndReBar.Create(this))//创建CReBar对象;
{TRACE0("
Failedtocreaterebar\n"
);
}
m_wndToolBar.CreateEx(this))//使用CreateEx()函数创建工具
条对象;
Failedtocreatetoolbar\n"
return-1;
//设置工具栏中的按钮最大最小尺寸;
m_wndToolBar.GetToolBarCtrl().SetButtonWidth(50,150);
//设置工具栏上的按钮支持下拉箭头风格;
m_wndToolBar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_
DRAWDDARROWS);
//向图像列表装载热点图像资源,IDB_HOTTOOLBAR为热点图像资
源IDimg.Create(IDB_HOTTOOLBAR,22,0,RGB(255,0,255));
m_wndToolBar.GetToolBarCtrl().SetHotImageList(&
img);
img.Detach();
//图象列表装载正常状态的图像资源,IDB_COLDTOOLBAR为图像
资源ID
img.Create(IDB_COLDTOOLBAR,22,0,RGB(255,0,255));
m_wndToolBar.GetToolBarCtrl().SetImageList(&
img.Detach();
//设置工具条为扁平风格
m_wndToolBar.ModifyStyle(0,TBSTYLE_FLAT|
TBSTYLE_TRANSPARENT);
//设置工具条上的按钮个数为9个;
m_wndToolBar.SetButtons(NULL,9);
//装载字符串资源,设置按钮上的文本和按钮的标识号;
m_wndToolBar.SetButtonInfo(0,ID_GO_BACK,
TBSTYLE_BUTTON,0);
str.LoadString(IDS_BACK);
m_wndToolBar.SetButtonText(0,str);
m_wndToolBar.SetButtonInfo(1,
TBSTYLE_BUTTON,1);
str.LoadString(IDS_FORWARD);
m_wndToolBar.SetButtonText(1,str);
m_wndToolBar.SetButtonInfo(2,
TBSTYLE_BUTTON,2);
str.LoadString(IDS_STOP);
m_wndToolBar.SetButtonText(2,str);
m_wndToolBar.SetButtonInfo(3,
TBSTYLE_BUTTON,3);
str.LoadString(IDS_REFRESH);
m_wndToolBar.SetButtonText(3,str);
m_wndToolBar.SetButtonInfo(4,
TBSTYLE_BUTTON,4);
str.LoadString(IDS_HOME);
m_wndToolBar.SetButtonText(4,str);
m_wndToolBar.SetButtonInfo(5,
TBSTYLE_BUTTON,5);
str.LoadString(IDS_SEARCH);
m_wndToolBar.SetButtonText(5,str);
ID_GO_FORWARD,
ID_VIEW_STOP,
ID_VIEW_REFRESH,
ID_GO_START_PAGE,
ID_GO_SEARCH_THE_WEB,
m_wndToolBar.SetButtonInfo(6,ID_FAVORITES_DROPDOWN,
TBSTYLE_BUTTON|TBSTYLE_DROPDOWN,6);
str.LoadString(IDS_FAVORITES);
m_wndToolBar.SetButtonText(6,str);
m_wndToolBar.SetButtonInfo(7,ID_FILE_PRINT,
TBSTYLE_BUTTON,7);
str.LoadString(IDS_PRINT);
m_wndToolBar.SetButtonText(7,str);
m_wndToolBar.SetButtonInfo(8,ID_FONT_DROPDOWN,TBSTYLE_BUTTON|TBSTYLE_DROPDOWN,8);
str.LoadString(IDS_FONT);
m_wndToolBar.SetButtonText(8,str);
//设置工具栏上的按钮尺寸和显示在按钮上的图标尺寸;
CRectrectToolBar;
m_wndToolBar.GetItemRect(0,&
rectToolBar);
m_wndToolBar.SetSizes(rectToolBar.Size(),CSize(30,20));
//创建组合框,用来作为地址栏;
m_wndAddress.Create(CBS_DROPDOWN|WS_CHILD,CRect(0,0,200,120),this,AFX_IDW_TOOLBAR+1))
Failedtocreatecombobox\n"
//创建动画控件对象,并打开AVI资源IDR_MFCAVI;
m_wndAnimate.Create(WS_CHILD|WS_VISIBLE,CRect(0,0,10,
10),this,AFX_IDW_TOOLBAR+2);
m_wndAnimate.Open(IDR_MFCAVI);
//将工具条、地址栏、动画控件等添加到CReBar对象中;
m_wndReBar.AddBar(&
m_wndToolBar);
m_wndAnimate,NULL,NULL,
RBBS_FIXEDSIZE|RBBS_FIXEDBMP);
str.LoadString(IDS_ADDRESS);
m_wndAddress,str,NULL,
RBBS_FIXEDBMP|RBBS_BREAK);
//再次设置工具条风格,使之有工具栏提示功能;
m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle()|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_FIXED);
//设置状态条;
m_wndStatusBar.Create(this)
||!
m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
Failedtocreatestatusbar\n"
.//实现"
Favorites"
菜单的部分,该部分在第二部分介绍;
return0;
}
(2)工具条上的下拉菜单
当用户点击按钮上的下拉箭头时,将出现相应的菜单,为了实现
这个功能,手下需要在CMainFrame.cpp文件的消息映射中添加消
息映射:
ON_NOTIFY(TBN_DROPDOWN,AFX_IDW_TOOLBAR,
OnDropDown);
在CmainFrame.h文件中添加消息映射函数声明:
afx_msgvoidOnDropDown(NMHDR*pNotifyStruct,LRESULT*
pResult);
最后添加下面的代码:
voidCMainFrame:
OnDropDown(NMHDR*pNotifyStruct,
LRESULT*pResult)
NMTOOLBAR*pNMToolBar=(NMTOOLBAR*)pNotifyStruct;
CRectrect;
//得到下拉箭头的位置;
m_wndToolBar.GetToolBarCtrl().GetRect(pNMToolBar->
iItem,
&
rect);
rect.top=rect.bottom;
ClientToScreen(pNMToolBar->
hdr.hwndFrom,&
rect.TopLeft());
if(pNMToolBar->
iItem==ID_FONT_DROPDOWN)
//判断是否为选择字体的下拉箭头;
CMenumenu;
CMenu*pPopup;
menu.LoadMenu(IDR_FONT_POPUP);
pPopup=menu.GetSubMenu(0);
pPopup->
TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON,rect.left,rect.top+1,AfxGetMainWnd());
elseif(pNMToolBar->
iItem==ID_FAVORITES_DROPDOWN)
{//判断是否为显示收藏网页的下拉箭头;
pPopup=GetMenu()->
GetSubMenu(3);
*pResult=TBDDRET_DEFAULT;
3)工具条上的动画实现
为了美化程序的界面,程序的复合工具条上放置了一个动画控
件,用来在适当的时机播放一个动画片段,实现动画效果。
下面的代
码实现了创建动画控件对象,并打开AVI资源IDR_MFCAVI:
CanimateCtrl类提供了Play()、Seek()、Stop()、Close
()等函数用来为播放视频文件服务,它们使用起来都非常简单,这
里就不再赘述了。
4)地址栏的操作
当用户在地址栏上输入网页地址并按下回车键后,浏览器将显示
该网页的内容,并将在地址栏中记录下该地址。
因为回车键按下后对
应的消息ID为IDOK,为此,需要在CmainFrame类中添加消息映
射ON_COMMAND(IDOK,OnNewAddressEnter)和消息响应函数
afx_msgvoidOnNewAddressEnter()。
该函数实现代码如下:
OnNewAddressEnter()
//获取地址栏中的字符串;
m_wndAddress.GetEditCtrl()->
GetWindowText(str);
((CMfcieView*)GetActiveView())->
Navigate2(str,0,NULL);
//显示该
网页;
//将该网址添加到地址栏对应的组合框中;
COMBOBOXEXITEMitem;
item.mask=CBEIF_TEXT;
item.iItem=-1;
item.pszText=(LPTSTR)(LPCTSTR)str;
m_wndAddress.InsertItem(&
item);
同理,还要在
CmainFrame
类中为地址栏(
ID
为
AFX_IDW_TOOLBAR
+
1)
添
加消息
映射
ON_CBN_SELENDOK(AFX_IDW_TOOLBAR+
1,OnNewAddress)
和消息响应函数OnNewAddress,用来处理用户从地址栏组合框中
选择网址的操作,该函数的实现代码如下:
OnNewAddress()
m_wndAddress.GetLBText(m_wndAddress.GetCurSel(),str);
((CMYIEView*)GetActiveView())->
二、实现收藏菜单
一般IE的用户都有个习惯,那就是将自己喜欢的网址保存起来,
以方便今后快速的登陆,为了使我们的浏览器能够显示IE收藏过的
网址,程序中设置了一个"
菜单,通过RegOpenKey()、RegQueryValueEx()等函数操作Windows的注册表中的HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Current
Version\\Explorer\\UserShellFolders项,将收藏的网址显示到菜单
上。
为此,笔者定义了两个函数,实现代码如下所示:
TCHARGetDir()//得到存放用户收藏网址的目录;
TCHARsz[MAX_PATH];
TCHARszPath[MAX_PATH];
HKEYhKey;
DWORDdwSize;
CMenu*pMenu;
//得到"
菜单,并删除空白的子菜单项;
pMenu=GetMenu()->
while(pMenu->
DeleteMenu(0,MF_BYPOSITION));
//findoutfromtheregistrywherethefavoritesarelocated.if(RegOpenKey(HKEY_CURRENT_USER,_T("
Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User
ShellFolders"
),&
hKey)!
=ERROR_SUCCESS)
TRACE0("
Favoritesfoldernotfound\n"
dwSize=sizeof(sz);
RegQueryValueEx(hKey,_T("
),NULL,NULL,
(LPBYTE)sz,&
dwSize);
ExpandEnvironmentStrings(sz,szPath,MAX_PATH);
RegCloseKey(hKey);
ReturnszPath
BuildFavoritesMenu(LPCTSTRpszPath,intnStartPos,CMenu*pMenu)
CStringstrPath(pszPath);
CStringstrPath2;
WIN32_FIND_DATAwfd;
HANDLEh;
intnPos;
intnEndPos;
intnNewEndPos;
intnLastDir;
TCHARbuf[INTERNET_MAX_PATH_LENGTH];
CStringArrayastrFavorites;
CStringArrayastrDirs;
CMenu*pSubMenu;
if(strPath[strPath.GetLength()-1]!
=_T(′′))
strPath+=_T(′′);
strPath2=strPath;
strPath+="
*.*"
;
//扫描当前目录,首先搜索*.URL文件,然后是可能含有*.URL文件的子目录;
h=FindFirstFile(strPath,&
wfd);
if(h!
=INVALID_HANDLE_VALUE)
nEndPos=nStartPos;
do
if((wfd.dwFileAttributes&
(FILE_ATTRIBUTE_DIRECTORY|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_SYSTEM))==0)
str=wfd.cFileName;
if(str.Right(4)==_T("
.url"
))
{/*URL文件和INI文件格式类似,所以我们可以使用
GetPrivatePr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IE 浏览器 作为 微软 Windows 系统 捆绑 销售 一个 浏览 工具